Tortoise SVN Merge 特定版本

Posted

技术标签:

【中文标题】Tortoise SVN Merge 特定版本【英文标题】:Tortoise SVN Merge specific revision 【发布时间】:2018-08-03 13:59:52 【问题描述】:

我开始将 SVN 与客户端 Tortoise 一起使用。 现在我有以下情况:

我的主干是修订版 20,而我的分支来自修订版 10。 我只想合并修订版 20 中的错误修复。 在第 20 版中,我在 test1.txt 上有 1 个文件更改 在修订版 19 中,我还对 test1.txt 和 test2.txt 进行了更改。 test1.txt 从 19 的更改使用了 test2.txt 中的更改。 test1.txt 从 20 的变化使用了 19 的变化。

当我刚刚合并修订版 20 时,我的代码更改会出现问题。 那么如何查看是否需要合并更多修订?

有没有比在每个单独的文件上执行“显示日志”更简单的方法来检查?

我真的不想合并我的主干和分支之间的所有修订。 只有我需要修复特定错误的那个。

分支和发布策略

现在我们有 6 周的冲刺,所有开发人员都在主干上不断提交错误修复/新功能/清理等。 6 周后,我们进行了分支拆分,与之前的分支相比,现在可能会有 200 个额外的修订。

分支完成后,必须进行技术和功能测试。 由于引入了新的错误或其他原因,这可能会导致问题被拒绝。在我们向客户发布软件之前,我们需要批准所有新问题。 所以有些问题会回到开发人员那里,他们会在后备箱中修复它。 在解决所有被拒绝的问题后,需要将它们合并到分支中,以便将其发布给我们的客户。

现在您可以说为什么不在分支本身进行额外的错误修复了。我们曾经这样做,但有时我们会遇到问题,它在分支中修复但忘记合并到主干。所以在下一个分支中,错误又回来了。

此外,所有开发人员都可以连续提交所有内容而没有任何阻碍,这一点非常重要。这就是为什么所有开发人员都只在后备箱内工作的原因。

【问题讨论】:

好的,所以您的主干分支位于主干已向前移动的修订版 10 和修订版 20,对吗?您说主干修订版 20 中的更改使用了更改 19 中的更改。您为什么不希望所有更改都保持最新?分支的想法首先是处理特定的功能/错误/等,然后将其返回合并到主干中;因此,理想情况下,您希望让自己保持最新状态。您如何查看是否需要合并更多修订是什么意思?老实说,这真的是一个个案。 另外,您可以在整个结帐文件夹上显示日志,而不仅仅是单个文件。 【参考方案1】:

我留下的 cmets 用于澄清目的。但要回答如何合并特定修订的原始问题,您需要做的是:

    右键单击您的结帐文件夹 > TortoiseSVN > 合并...。 然后你会选择Merge a range of revisions 输入中继的 URL 并选择选项 specific range。然后在对话框中输入逗号 您要合并的单独修订列表。 (即19,20)或使用“显示日志”功能并单击您要合并的修订号。 点击下一步 > 合并

这将合并您正在寻找的修订。


如果您对我的 cmets 添加一些说明,我可以为您扩展我的答案。

【讨论】:

问题是有多个用户提交,一个文件可以有来自不同用户的多个修订。当我们决定合并一个错误修复时,我们不知道它是否使用了此后提交的任何其他更改。所以在我的例子中,我们想要合并 20,但它也需要 19。但是 SVN 不知道这一点。 对您(未来合并)的解决方案可能是获得良好实践,因为首先执行仅与一个错误修复相关的“原子”提交,其次在日志消息中指示错误引用。因此,您将能够通过 TortoiseSVN 界面轻松选择要合并的修订以报告任何要报告的错误修复,而不会(太多)冲突。 我已经用我们的一些分支/发布策略更新了我的问题。这也许可以澄清一些事情。 赞成解释如何使用 SVN。

以上是关于Tortoise SVN Merge 特定版本的主要内容,如果未能解决你的问题,请参考以下文章

使用Tortoise Git进行SVN to GIT迁移

tortoise svn回滚常用命令

如何将软件版本链接到 tortoise svn 修订版

Tortoise SVN使用方法,简易图解

Tortoise SVN 合并两个分支

Tortoise SVN 提交错误