ProGit摘要7-工作流
集中式
类似于集中式版本控制系统(CVCS),Git集中式工作流程使用的也是单点协作模型:一个存放代码仓库的中心服务器,可以接受所有开发者提交的代码.如果两个开发者从中心仓库克隆代码下来,同时作了一些修订,那么只有第一个开发者可以顺利地把数据推送到共享服务器。第二个开发者在提交他的修订之前,必须先下载合并服务器上的数据,解决冲突之后才能推送数据到共享服务器上。
集中管理员工作流
由于Git允许使用多个远程仓库,开发者便可以建立自己的公共仓库,往里面写数据并共享给他人,而同时又可以从别人的仓库中提取他们的更新过来。这种情形通常都会有个代表着官方发布的项目仓库(blessed repository,开发者们由此仓库克隆出一个自己的公共仓库(developer public),然后将自己的提交推送上去,请求官方仓库的维护者拉取更新合并到主项目。维护者在自己的本地也有个克隆仓库(integration manager),他可以将你的公共仓库作为远程仓库添加进来,经过测试无误后合并到主干分支,然后再推送到官方仓库。
整个工作流程如下:
- 项目维护者可以推送数据到公共仓库 blessed repository。
- 贡献者克隆此仓库,修订或编写新代码。
- 贡献者推送数据到自己的公共仓库 developer public。
- 贡献者给维护者发送邮件,请求拉取自己的最新修订。
- 维护者在自己本地的 integration manger 仓库中,将贡献者的仓库加为远程仓库,合并更新并做测试。
- 维护者将合并后的更新推送到主仓库 blessed repository。
发现了没,托管服务中的fork和push request就是这种工作流.
司令官与副官工作流
一般只有超大型项目才会用到这个工作流.其实是集中管理员工作流的变体,各个集成管理员分别负责集成项目中的特定部分,所以称为副官(lieutenant).而所有这些集成管理员头上还有一位负责统筹的总集成管理员,称为司令官(dictator) 司令官维护的仓库用于提供所有协作者拉取最新集成的项目代码。
整个工作流程如下:
- 一般的开发者在自己的特性分支上工作,并不定期地根据主干分支(dictator 上的 master)衍合。
- 副官(lieutenant)将普通开发者的特性分支合并到自己的 master 分支中。
- 司令官(dictator)将所有副官的 master 分支并入自己的 master 分支。
- 司令官(dictator)将集成后的 master 分支推送到共享仓库 blessed repository 中,以便所有其他开发者以此为基础进行衍合
这种工作流并不常用,只有当项目庞杂需要更多级别管理时才有优势.
实例
可以参考原书的为项目作贡献
- 原文作者:mlyixi
- 原文链接:https://mlyixi.github.io/post/cs/ProGit%E6%91%98%E8%A6%817-%E5%B7%A5%E4%BD%9C%E6%B5%81/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。