用于并发开发生命周期环境的Git存储库结构和工作流

时间:2012-07-17 22:56:31

标签: git workflow

我希望我的代码的几个不同版本在其开发生命周期的不同阶段,可以在任何时候进行版本控制并在Web上同时存在。版本通常命名为 development staging live ,其结构如下所示。

Sitename
  |--Development
  |--Live
  `--Staging
  • 创建三个单独的存储库或一个存储库是否更好 存储库有三个分支永久签出?
  • 每个工作流程各自的优点和缺点是什么?
  • 作为Git的新手,如何实施首选工作流程?

附录

我更喜欢创建单个存储库,但这意味着在Sitename下创建存储库并且其中有三个工作目录,但我的理解是Git不支持嵌套的工作目录。我知道一个名为git-new-workdir的贡献解决方案,但已经读过新用户可能会受到比使用此工作流程的好处更多的后果,因此我对替代方案感兴趣。

3 个答案:

答案 0 :(得分:0)

保留一个存储库。想出一个分支会议。通常就是这样:

master :代表服务器上运行的代码以及用户体验的内容

暂存 :(可选)表示部署到登台服务器的代码以及您选择的Beta测试人员使用的代码。

release-candidate或RC :所有已经过单独测试并与其他功能一起测试并已通过的功能。这可以随时合并为主人和/或升级。

集成或开发:集成过去和现在(完整和不完整)的所有功能,以获得有关现在失败的反馈。

功能或任务 :(通常称为票号)包含一个功能 - 最好从公共点开始,作为迭代中的其他功能。

我建议使用此工作流程来管理它们:http://dymitruk.com/blog/2012/02/05/branch-per-feature/

没有什么是一成不变的,只要确保你的组织和一致,并为你的团队做有意义的事。

答案 1 :(得分:0)

不确定您是否可以通过git post check-in实现此目的  挂钩。我会看一个真正的构建服务器解决方案(例如TeamCity,FinalBuilder)。构建服务器在三个不同的分支上监视您的存储库,然后将它们部署到您希望的位置。

答案 2 :(得分:0)

这是一个老问题,但仍然有很多观点,所以我认为它值得一个正确的答案。当我问这个问题时,我对SVN很熟悉,但对Git很新,但现在,三年后,我觉得有资格回答它。

这个问题最相关的部分是:

  

创建三个独立的存储库或一个存储库并永久签出三个分支是否更好?

如果必须在这两个选项之间做出选择,那么它将是后者,但正确的答案是既不是!为不同的环境创建不同的存储库同样不正确,因为它是创建不同的分支适用于不同的环境。

使用Git的正确方法是为一个项目只有一个存储库。可以根据需要多次克隆存储库。正如不同的用户可以查看不同版本的代码一样,不同的环境也可以从他们的存储库副本中检出不同版本的代码。不同的环境可以作为代码的不同用户。