我在同一个中央存储库中与另一个团队合作。
他们有一个分支(让我们称之为他们的分支),我不允许编辑(可以查看,结帐,只是不更改)。
我有自己的分支( myBranch ),最初是他们的分支副本。检查完毕后再对其进行处理,#34;工作副本",当我对其进行重大更改时,我会将其提交给myBranch。
目标:将其分支中的任何更改合并到myBranch。
第一次尝试 - 是要做两个不同树木的合并"。
"此方法涵盖了要合并差异的情况 两个不同的分支到您的工作副本。"
结果 - 代码中的任何差异都标记为冲突,即使代码仅在我最初创建myBranch 后由我更改。此外,一些增加的复杂性,我有一些树冲突,因为我删除了myBranch中仍然存在于他们的分支中的一些文件。从那以后,这种树冲突就发生了。
问题1: 是否需要手动合并/解决所有树冲突?
第二次尝试 - 使用"切换"将他们的分支与myBranch合并。切换回我的分支并提交。
据我了解,当在(2)不同分支上的同一个存储库中工作时,您可以切换工作副本链接到的存储库分支。完成此操作后,您的工作副本与新分支之间的任何差异将被"合并"使用"更新"。
来自TortoiseSVN的男人:
切换 -
正如“Update-to-revision”更改工作副本的时间窗口一样 看一下历史上的不同点,所以“Switch”会改变空间 工作副本的窗口,以便它指向的不同部分 库。在行李箱上工作时特别有用 只有少数文件不同的分支。你可以改变你的工作 在两者之间复制,只传输已更改的文件。
更新 -
此Subversion命令从中删除最新的更改 将存储库存入您的工作副本,合并其他人所做的任何更改 工作副本中的本地更改。
结果 - 任何不同的文件都在我的工作副本中由"他们的分支"该文件的版本。
问题2 - 为什么文件被替换而不是合并?
问题3 - 为什么仅在他们的分支中存在的他们的分支文件被放置在myBranch中并且没有树冲突?
请随时回答您知道答案的任何问题或有关实现目标的任何建议。谢谢。
答案 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。