TortoiseSVN:使用Switch to Merge

时间:2015-12-30 16:24:07

标签: svn version-control tortoisesvn tortoisemerge

我在同一个中央存储库中与另一个团队合作。

他们有一个分支(让我们称之为他们的分支),我不允许编辑(可以查看,结帐,只是不更改)。

我有自己的分支( myBranch ),最初是他们的分支副本。检查完毕后再对其进行处理,#34;工作副本",当我对其进行重大更改时,我会将其提交给myBranch。

目标:将其分支中的任何更改合并到myBranch。

第一次尝试 - 是要做两个不同树木的合并"。

  

"此方法涵盖了要合并差异的情况   两个不同的分支到您的工作副本。"

结果 - 代码中的任何差异都标记为冲突,即使代码仅在我最初创建myBranch 后由我更改。此外,一些增加的复杂性,我有一些树冲突,因为我删除了myBranch中仍然存在于他们的分支中的一些文件。从那以后,这种树冲突就发生了。

问题1: 是否需要手动合并/解决所有树冲突?

第二次尝试 - 使用"切换"将他们的分支与myBranch合并。切换回我的分支并提交。

据我了解,当在(2)不同分支上的同一个存储库中工作时,您可以切换工作副本链接到的存储库分支。完成此操作后,您的工作副本与新分支之间的任何差异将被"合并"使用"更新"。

来自TortoiseSVN的男人:

切换 -

  

正如“Update-to-revision”更改工作副本的时间窗口一样   看一下历史上的不同点,所以“Switch”会改变空间   工作副本的窗口,以便它指向的不同部分   库。在行李箱上工作时特别有用   只有少数文件不同的分支。你可以改变你的工作   在两者之间复制,只传输已更改的文件。

更新 -

  

此Subversion命令从中删除最新的更改   将存储库存入您的工作副本,合并其他人所做的任何更改   工作副本中的本地更改。

结果 - 任何不同的文件都在我的工作副本中由"他们的分支"该文件的版本。

问题2 - 为什么文件被替换而不是合并?

问题3 - 为什么仅在他们的分支中存在的他们的分支文件被放置在myBranch中并且没有树冲突?

请随时回答您知道答案的任何问题或有关实现目标的任何建议。谢谢。

1 个答案:

答案 0 :(得分:0)

首先,这是对你所尝试的内容的分析:
1)两棵不同树木的合并
https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html所示,如果出现以下情况,它可能适用于您的情况:
- 你有与myBranch链接的工作副本
- 然后在TortoiseSVN窗口中选择合并FROM myBranch to theirBranch(而不是相反,我想你做了:它解释了你观察到的冲突)。
但是,当没有可以使用的合并跟踪功能时,这种合并很有用,这可能不是您的情况 2)切换命令
这不是合并,而是将本地工作副本与另一个分支(在您的情况下)重新同步。因此,如果在切换之前与myBranch相比没有任何本地更改,则切换后与其分支相比,您将不会有任何更改。这意味着您的本地文件将被替换,正如您所观察到的那样。这回答了你的问题2和3 切换命令不是合并,在你的情况下使用它可能是非常危险的(你最终可能会忘记你的本地工作副本链接到哪个分支)。

其次,我建议使用"合并一系列修订"这似乎非常适合您的情况。但是,您仍然可能遇到树冲突:您必须手动解决它们,因为所有其他冲突。这回答了你的问题1。