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

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

问题描述:

嗨,我正在学习版本控制,树干和分支机构。我已阅读一些文章,我现在很困惑新版本应该在版本控制的干线或分支中完成?

其中一个说。

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

所以在这里说,每一个主要的变化是在后备箱完成,当软件准备好发布,你应该创建一个分支,做小bug fiixes那里有

但另一个人说

  • 树干被保证是稳定在任何时候都

如此看来,这个人说,做重大变化分支:/

和第三篇文章说

  • 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 

请回答这些,因为我花了超过2天,以获取有关这些的理解,还是我不知道。感谢提前:)

UPDATE

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

正如您所见,是不同的选择/风格。重要的是,你选择一个适合你的项目,并确保每个人都明白如何使用分支/标签。 – Thilo 2014-08-29 06:26:37

+0

@Thilo,是的,但最佳做法是什么。在使用版本控制时减少合并问题和其他问题 – 2014-08-29 06:28:46

+0

回答您的问题时需要考虑很多因素。这是一个开源项目吗?球队有多大?代码库有多大?你多久发布一次?你用git还是svn?团队在使用版本控制方面的经验如何? – AndersNS 2014-08-29 06:35:37

您遇到什么是接近的版本控制的许多模式。对于我工作的几个项目中有效的模式是这样的一个:

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

总结是这样的:

  • 主分支(始终生产就绪随时部署)
  • develop分支(表示通过合并到主设备中进入生产的下一组功能)。
  • 功能分支(您可能有几个代表功能导向的小组工作,例如,您可能有一个用于feature-oauth,feature-loginform等等,一旦完成,所有功能都将合并到开发中)。
  • 修复程序/修补程序分支(当需要修补程序时,这些分支从主服务器分支出来,并在完成错误/修补程序时合并回主服务器/开发)。

本文将帮助您了解所有不同类型的细节。该工作流旨在为您提供专门构建的分支机构,以说明它们为什么存在,它们来自哪里以及它们的目的地,从而有助于简化分支,合并和团队沟通。

理想的情况下,这会存在像github上/到位桶/ gitlab支持拉请求git的服务器上,因此项目负责人/业主可以接受修改和审查团队的工作流程等

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

+1

+1。它现在非常流行,有些工具对此工作流程有明确的支持。 – Thilo 2014-08-29 07:23:05