【问题标题】:SVN merge - how to prevent code deletion/overwrite errorsSVN 合并 - 如何防止代码删除/覆盖错误
【发布时间】:2018-12-18 03:34:45
【问题描述】:

在代码合并过程中,我们遇到了代码被覆盖甚至删除的问题,恳请大家提出建议。

  • 我们是一个由六名开发人员组成的团队,他们在两个不同的办公室使用 Tortoise SVN。
  • 我们有 12 个个人分支,每个开发者 2 个:dev1Clientdev1Server、...、dev6Clientdev6Sever
  • 我们有共享分支QA_ClientQA_ServerRelease_ClientRelease_Server

我们遵循的步骤:

  1. 所有开发人员将工作提交到他们的分支,然后将他们的更改合并到QA_ClientQA_Server

  2. QA Build 是从 QA_ClientQA_Server 准备的。

  3. 一旦通过测试,管理员会创建一个带有版本号的标签,并将代码合并到Release_ClientRelease_Server

有几次是第 1 步的代码在合并过程中被覆盖或删除。我们发现开发人员没有将他们的分支与 QA_Branches 同步的主要原因。

例如,Dev1 和 Dev4 已将代码合并到 QA* 分支,而其余开发人员尚未将其分支与 QA* 同步。之后,Dev2 可能会尝试将他的代码合并到 QA* 得到一些冲突警告。他错误地解释了这些警告,并覆盖了 Dev1 和 Dev4 之前所做的一些更改。

【问题讨论】:

    标签: svn version-control


    【解决方案1】:

    你自己已经指出了根本原因:

    我们发现开发人员没有将他们的分支与 QA_Branches 同步的主要原因。

    在开发人员将新代码合并到 QA* 之前,您的团队应该制定严格的政策,始终使个人 dev* 分支与 QA* 分支中的最新更改保持同步。开发人员还需要了解不同的合并冲突消息的含义以及如何解决它们,SVN Book 是一个很好的参考。

    简而言之,您不能用工具代替个人责任(或缺乏责任)。可以通过让有罪的开发人员追溯修复损坏的合并来执行该策略;)

    【讨论】:

    • 在 SVN 中,所有开发人员都必须使用 QA* 分支中的最新更改来更新其分支,否则此类问题将继续发生。你知道任何其他版本控制系统,如 TFS 或 GitHub 或任何其他不会发生此类问题的系统吗?
    • @David 我认为您可以在任何版本控制系统中遇到这些问题,但分布式系统(如 Git 或 Mercurial)可能通过允许首先将更改从远程存储库拉取到共享分支的本地副本,然后进行必要的合并并将更改推送回远程分支。
    猜你喜欢
    • 2011-08-04
    • 2011-01-03
    • 2016-06-03
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多