【问题标题】:How can I manage merging updates from several developers? [closed]如何管理来自多个开发人员的合并更新? [关闭]
【发布时间】:2009-07-31 17:00:01
【问题描述】:

我与一个中型开发人员团队合作,他们都在开发一种产品。开发人员编写代码来解决功能或错误修复票,然后将其检入我们的主要开发分支(在 Subversion 中)。一旦 QA 人员在那里测试和验证了票证,我将其合并到主干中。我通常手动执行此操作,因为许多工单跨越多个修订版,这些修订并不总是连续的,并且可能一次包含对多个工单的修复。

我确信会有所帮助的一件事是鼓励开发人员每次修订只签入一张票。我们使用 Jira 来跟踪我们的任务,因此每个 Subversion 修订版都应该在日志中有一个 Jira 问题 ID - 当我合并代码时,我会寻找包含我要合并的问题的修订版。

还有其他方法可以更好地解决这个问题吗?其他团队是否为每张票和问题从主干分支?正如我所说,我们有一个主要的开发分支,至少部分原因是我们正在快速构建许多新功能,我想如果我们为每张工单制作一个分支,我们很快就会有几十个分支。

【问题讨论】:

    标签: svn project-management


    【解决方案1】:

    这个问题与DVCS无关。这是一个过程问题,而不是技术问题。以下是我对很多人正在做的事情以及 ClearCase UCM 推广的流程的看法:

    /project/trunk 
            /branches 
                /release-1.0-JIRA1023
                /release-1.0-darthcoder-JIRA1029 
                /darthcoder-JIRA1029
    
            /branches/release-1.0-tfix   <- This is the patch trunk.  Main trunk is future dev
    

    当我修复我的错误时,我会将它提升回主干,或者我正在尝试修复的特定版本。我将合并到 release-1.0-tfix 和主干,因为它需要在几个地方进行修复。完成后,我删除分支并转到下一个问题。所以我有两个代码分支,其中包含 JIRA 修复程序,同时我正在测试它并解决问题(如果修复程序大相径庭)。

    但除非运行成功的构建/测试周期,否则不会将任何内容提升到主干或 -tfix 树,并且它具有用于跟踪的 JIRA 属性。通过这种方式,您可以将每个单独的修复与开发人员、分支联系起来,并验证事情是否得到正确修复。此外,这些问题也不会丢失(哦,JIRA1029 是否进入了 1.2 版?那么您可以通过在存储库中查找 JIRA1029 来验证这一点。您永远不必猜测,这就是使软件开发可重复并使我们更接近错误的原因== 0。

    【讨论】:

    • 有趣。快速提问 - 您是否总是为每个 Jira 创建一个分支,或者在任何情况下您会在单个分支中一次修复一组 Jira 票证?
    • 您可以在一个分支中修复许多错误/jira,但 UCM 的理想是为每个修复创建尽可能小的变更集。假设您正在开发 linux 内核,并分发补丁。你想为最终用户提供什么,一大块可能不适用于他们(并且可能是有害的)的修复,或者小的、集中的、外科修复?这两种方法都有争论,但我是 1 JIRA - 1 合并的坚定支持者,只要有可能。对于大型 JIRA(如新功能/增强功能),这可能会变得不那么实用。
    【解决方案2】:

    您是否正在处理并发版本?对于我所有没有太多并发发布开发(通常

    为什么要合并?是您的代码审查还是您确保构建不被破坏的方式。我个人会设置一些持续集成并跳过这一步。您应该能够相信您的开发人员不会破坏构建并让 CI 抓住他们。

    【讨论】:

    • 我认为开发人员通常最好在自己的分支中工作并执行合并。树干必须始终保持原始状态且可构建。我知道作为一名开发人员,我非常喜欢检查损坏的东西,只是因为我知道我即将进行重大更改以修复它和/或重构。您不想在后备箱中执行此操作。 CI 很棒,你应该使用它,但是主干是用来构建产品的,而不是用来开发的。恕我直言。 :-)
    • 当我要进行重大更改时,我会创建自己的分支并自己手动将其合并到主干。我确实觉得在大多数情况下,团队应该为整个版本共享一个分支。如果您为每个开发人员或每个工单创建单独的分支,我认为您将遇到更多集成问题。所以简而言之,与 CI 共享分支,并且只创建一次使用分支进行重大更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多