应该在版本控制中的主干或分支中完成新工作?

时间:2014-08-29 06:24:04

标签: git svn github version-control merge

您好我正在学习版本控制,中继和分支机构。我读了一些文章,现在我很困惑

其中一人说。

  • 开发人员将所有新工作提交到主干。日常的变化是 致力于/ trunk:新功能,错误修复等。
  • 将主干复制到“发布”分支。当团队认为的时候 软件已准备好发布(例如,1.0版本),/ trunk可能是 复制到/branches/1.0。

所以在这里它表示每个主要的变化都是在主干中完成的,当软件准备好发布时你应该创建一个分支并做一些小错误来解决这个问题

但另一个人说

  • 行李箱始终保持稳定

似乎这个人说,在分支机构中做了重大改变:/

和第三篇文章说

  • Trunk代表下一个主要版本发布。
  • 分支代表特定的发布版本。

所以我很困惑。

我的问题很少

1 when should we create a branch  ?  
2 Are we giving the release form branch or trunk ?  
3 Are we doing major changes in branches or only doing minor modifications
4 Are we doing the testing in branch or trunk 

请回答这些因为我花了两天多的时间来了解这些,但我仍然不知道。在此先感谢:)

更新

Project is a PHP project
we are doing a relase in every 2-3 weeks
we are using git 
Team size is 4
All are familiar with version control

1 个答案:

答案 0 :(得分:4)

您遇到的是接近版本控制的许多模式。一个适用于我所参与的一些项目的模型就是这个:

http://nvie.com/posts/a-successful-git-branching-model/

摘要如下:

  • 主分支(始终可以随时部署生产)
  • develop branch(表示通过合并到master中进入生产的下一组功能)。
  • 功能分支(您可能有其中的几个,表示子团队的功能导向工作。例如,您可能有一个功能oauth,功能登录表单等,一旦完成,所有都将合并到开发中。) / LI>
  • 修正/修补程序分支(当需要修补程序时,这些分支从master分支出来,并在完成错误/修补程序时合并回master / develop)。

本文将帮助详细介绍所有不同类型。该工作流程旨在为您提供专门构建的分支,这些分支可以说明它们存在的原因,它们来自何处,以及它们的目的地,这有助于简化分支,合并和团队沟通。

理想情况下,这将存在于支持拉取请求的gitub / bitbucket / gitlab等git服务器上,因此项目负责人/所有者可以接受更改并审核团队的工作流程等。

然而,底线是这个问题没有“答案”,只有建议。分支策略是特定于团队的,并且这样的建议非常广泛(它们应该在各种情况下都有帮助),但是您应该支持对您的团队有意义的工作流程:)