0

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

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

我有自己的分支(myBranch),它最初是作为 theirBranch 的副本。在检查并处理它之后,“工作副本”,当我对它进行重大更改时,我将它提交回 myBranch。

目标:合并从 theirBranch 到 myBranch 的任何更改。

第一次尝试 - 是“合并两棵不同的树”。

“这种方法涵盖了当你想将两个不同分支的差异合并到你的工作副本中的情况。”

结果 - 代码中的任何差异都被标记为冲突,即使在 myBranch 最初创建后我只更改了代码。此外,一些额外的复杂性,我有一些树冲突,因为我从 myBranch 中删除了一些仍然存在于 theirBranch 中的文件。这棵树的冲突对我来说很重要。

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

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

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

来自 TortoiseSVN 人:

转变 -

正如“Update-to-revision”更改工作副本的时间窗口以查看历史中的不同点一样,“Switch”更改工作副本的空间窗口,使其指向存储库的不同部分。在只有少数文件不同的主干和分支上工作时,它特别有用。您可以在两者之间切换工作副本,并且只会传输更改的文件。

更新 -

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

结果 - 任何不同的文件在我的工作副本中都被文件的“theirBranch”版本替换。

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

问题 3 - 为什么将只存在于 theirBranch 中的 theirBranch 文件放在 myBranch 中而没有树冲突?

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

4

1 回答 1

0

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

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

于 2016-01-06T20:04:02.387 回答