Gitflow 工作流仍然用中央仓库作为所有开发者的交互中心。和其它的工作流一样,开发者在本地工作并 push 分支到要中央仓库中。
Gitflow 工作流通过为功能开发、发布准备和维护分配独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。这节介绍的 Gitflow工作流 借鉴自在 nvie的 Vincent Driessen 。Gitflow 工作流定义了一个围绕项目发布的严格分支模型。虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架。
下面的示例演示了如何把 Pull Requests 作为 Code Review 的方式,但注意 Pull Requests 可以用于很多其它的目的。小红开始开发一个新功能在开始开发功能前,小红需要一个独立的分支。使用下面的命令新建一个分支:git checkout -b marys-feature master这个命令检出一个基于 master 名为 marys-feature 的分支, Git 的 -b 选项表示如果分支还不存在则新建分支。
功能分支工作流仍然用中央仓库,并且 master 分支还是代表了正式项目的历史。但不是直接提交本地历史到各自的本地 master 分支,开发者每次在开始新功能前先创建一个新分支。功能分支应该有个有描述性的名字,比如 animated-menu-items 或 issue-#1061 ,这样可以让分支有个清楚且高聚焦的用途。
让我们一起逐步分解来看看一个常见的小团队如何用这个工作流来协作的。有两个开发者小明和小红,看他们是如何开发自己的功能并提交到中央仓库上的。有人先初始化好中央仓库第一步,有人在服务器上创建好中央仓库。如果是新项目,你可以初始化一个空仓库;否则你要导入已有的 Git 或 SVN 仓库。
像 Subversion 一样,集中式工作流以中央仓库作为项目所有修改的单点实体。相比 SVN 缺省的开发分支 trunk ,Git 叫做master,所有修改提交到这个分支上。本工作流只用到 master 这一个分支。开发者开始先克隆中央仓库。在自己的项目拷贝中像 SVN 一样的编辑文件和提交修改;但修改是存在本地的,和中央仓库是完全隔离的。开发者可以把和上游的同步延后到一个方便时间点。
如果你的开发团队成员已经很熟悉 Subversion ,集中式工作流让你无需去适应一个全新流程就可以体验 Git 带来的收益。这个工作流也可以作为向更 Git 风格工作流迁移的友好过渡。 转到分布式版本控制系统看起来像个令人生畏的任务,但不改变已用的工作流你也可以用上 Git 带来的收益。团队可以用和 Subversion 完全不变的方式来开发项目。
工作流有各式各样的用法,但也正因此使得在实际工作中如何上手使用变得很头大。这篇指南通过总览公司团队中最常用的几种 Git 工作流让大家可以上手使用。在阅读的过程中请记住,本文中的几种工作流是作为方案指导而不是条例规定。在展示了各种工作流可能的用法后,你可以从不同的工作流中挑选或揉合出一个满足你自己需求的工作流。
工作流其实不是一个初级主题,背后的本质问题其实是有效的项目流程管理和高效的开发协同约定,不仅是 Git 或 SVN 等 VCS 或 SCM 工具的使用。这篇指南以大家在 SVN 中已经广为熟悉使用的集中式工作流作为起点,循序渐进地演进到其它高效的分布式工作流,还介绍了如何配合使用便利的 Pull Request 功能,体系地讲解了各种工作流的应用。
我们的目标是保持一致性,专注业务逻辑同时避免过度设计。我们一直试图找出一种良好的、一致的、显而易见的 API 设计方法,而并不是所谓的"最终/理想模式"。
Nginx 使用一个多进程模型来对外提供服务,其中一个 master 进程,多个 worker 进程。master 进程负责管理 Nginx 本身和其他 worker 进程。所有实际上的业务处理逻辑都在 worker 进程。worker 进程中有一个函数,执行无限循环,不断处理收到的来自客户端的请求,并进行处理,直到整个 Nginx 服务被停止。
Nginx 做为 HTTP 服务器,有以下几项基本特性:处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.无缓存的反向代理加速,简单的负载均衡和容错.FastCGI,简单的负载均衡和容错.模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。
Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由俄罗斯人 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev 在建立的项目时,使用基于 BSD 许可。英文主页:http://nginx.net 。
到现在为止你肯定对 UNIX 系统已经有了一些大概的理解和一些命令的基本使用方式。本教程将介绍一些非常基本的但重要的 UNIX 实用工具。打印文件在 UNIX 系统中,您打印一个文件之前,您可能想要重新格式化它调整它的边距,高亮显示一些单词等等。大多数文件也可以打印而不用重新格式化,但未经处理的打印可能不那么好看。
毫无疑问,到目前为止,JavaScript应用最为广泛,也最为成功的领域就是客户端,或者称为浏览器上的JavaScript。JavaScript为页面开发注入了活力,如与服务器交互形成的局部刷新,鼠标事件的响应,动态的页面风格变换等等,都直接依靠与JavaScript的支持。
要说 JavaScript 和其他较为常用的语言最大的不同是什么,那无疑就是 JavaScript 是函数式的语言,函数式语言的特点如下:函数为第一等的元素,即人们常说的一等公民。就是说,在函数式编程中,函数是不依赖于其他对象而独立存在的(对比与Java,函数必须依赖对象,方法是对象的方法)。
面向对象编程思想在提出之后,很快就流行起来了,它将开发人员从冗长,繁复,难以调试的过程式程序中解放了出来,过程式语 言如 C ,代码的形式往往如此:C代码 Component comp; init_component(& comp, props); 而面向对象的语言如 Java ,则会是这种形式:Component comp; comp.init(props);
闭包向来给包括 JavaScript 程序员在内的程序员以神秘,高深的感觉,事实上,闭包的概念在函数式编程语言中算不上是难以理解的知识。如果对作用域,函数为独立的对象这样的基本概念理解较好的话,理解闭包的概念并在实际的编程实践中应用则颇有水到渠成之感。
正则表达式是对字符串的结构进行的形式化描述,非常简洁优美,而且功能十分强大。很多的语言都不同程度的支持正则表达式,而在很多的文本编辑器如 Emacs,vim,UE 中,都支持正则表达式来进行字符串的搜索替换工作。UNIX 下的很多命令行程序,如 awk,grep,find 更是对正则表达式有良好的支持。
JavaScript 的数组也是一个比较有意思的主题,虽然名为数组(Array),但是根据数组对象上的方法来看,更像是将很多东西混在在一起的结果。而传统的程序设计语言如 C/Java 中,数组内的元素需要具有相同的数据类型,而作为弱类型的 JavaScript,则没有这个限制,事实上,JavaScript 的同一个数组中,可以有各种完全不同类型的元素。
关注时代Java