【问题标题】:SVN branch that's a copy of the trunk except for one revisionSVN 分支,除了一个修订版之外,它是主干的副本
【发布时间】:2018-02-01 19:59:58
【问题描述】:

我们有一个功能需要在生产(主干)副本中被禁用,同时它被改进。它在修订版 22 中被禁用,相关菜单和按钮变灰,并添加了一些关于被禁用功能的文字说明。

我们希望创建一个重新启用该功能的分支,用于测试和有限的生产目的。我们可以通过“撤消”或“删除”rev 22 中的更改来有效地做到这一点,但我们现在只想在分支上执行此操作,并希望在主干上保持禁用该功能。

主干从 rev 22 开始继续前进,但此后的更改不太可能与禁用的代码冲突。

除了没有修订版 22 的更改之外,获得与主干匹配的分支的最简单方法是什么?其次,是否可以在更新主干时根据需要更新分支以匹配主干,同时仍然保持没有 rev 22 的分支?

最终我们将在主干上重新启用此功能,从主干本身移除 rev 22 更改。我们打算将此分支作为一种临时方式,以便尽早进行内部使用,同时在主干上保持禁用该功能(第 22 版的目的),直到该功能准备就绪。

【问题讨论】:

    标签: svn tortoisesvn branch


    【解决方案1】:

    所以你要做的是在它当前所在的位置创建一个主干的分支(根据你的解释,我假设你想要除了这个特定版本之外的所有东西)。

    然后,一旦你把你的分支从树干上弄下来

    1. 对您的新分支执行svn switch,或
    2. 签出不同目录中的新分支。

    你的选择。

    然后右键单击您签出的文件夹并转到 TortoiseSVN > 显示日志。打开日志后,您应该会看到创建此分支之前的修订历史记录。如果您没有看到完整的历史记录,请取消选中 Stop on copy/rename 复选框。

    然后只需转到日志中的修订版 22,右键单击它,选择Revert changes from this revision。然后你应该在你的工作副本中修改了文件。在这一步之后:

    • 一旦您满意,将这些更改提交到您的新分支。
    • 在这个分支上做任何你需要的开发。
    • 完成后合并回主干。
    • 利润。

    至于你的第二个问题,是的。您可以在开发时定期执行svn merges,以使您的分支保持最新。在 TortoiseSVN 中是 TortoiseSVN > Merge...

    【讨论】:

    • 太好了,实际上非常简单!当我从主干合并到分支以使分支保持最新时,我是否可能每次都继承 rev 22?很容易再次恢复它只是提前想知道。谢谢
    • @cr0 不,默认情况下它将从您创建原始分支时开始合并。因此,假设您在修订版 30 处进行了分支。当您在分支上进行开发时,主干已经提交到修订版 40。默认情况下,它将执行svn merge -r 30:HEAD。现在,您可以通过选择“所有修订版”按钮选中 TortoiseSVN > 合并对话框中的框来指定它是否需要通过每个修订版。一旦你进行了合并,你签出的文件夹将会更新一个 svn:mergeinfo 属性,告诉 svn 你合并到的最后一个版本是什么。
    • 因此,当您进行后续合并时,如果您在合并时选中 Specific range 按钮,它将从您上次合并中继续并从那里继续。 TortoiseSVN 在保持该过程尽可能简单方面做得很好。是的,有时会出现冲突,但这只是一般版本控制软件的一部分。
    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 2014-01-24
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多