【问题标题】:File is shown as deleted while merging branch to trunk将分支合并到主干时文件显示为已删除
【发布时间】:2015-06-29 07:37:03
【问题描述】:

我正在使用 tortoise svn 选项 Merging Two Different Trees 将分支合并到主干

我在主干下有文件,即 file1,但不在分支上

我已经检查了我本地的中继线。然后做了 Right- click > Merge > Merging Two Different Trees > mentioned from as trunk url and to as branch url > Test merge

现在file1在Test merge results下显示为已删除但为什么?理想情况下,它应该问我这个文件在分支下不存在,但是 存在于主干上。你想保留还是不保留? 可以选择吗?

更新:-

6 月 1 日,我从主干创建了分支。 6 月 5 日,我在主干下添加了 file1。现在当我试图将分支合并到主干时,应该 显示为已删除?

【问题讨论】:

  • 这不是一个真正的 Java 特定问题...
  • Merging Two Different Trees 是重新集成分支的完全错误选择。从svn help merge开始+SVN 书本,仔细阅读
  • 但这就是tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html 的建议。请参阅“如果您使用此方法将功能分支合并回主干,则需要从主干的工作副本中启动合并向导。”在“合并两棵不同的树”部分下
  • “如果您正在使用”并不意味着该方法应该用于重新集成。 “这是 reintegrate 方法的更一般情况”,但您显然需要更少的一般性 - Merge a range of revisions :) 另请阅读 svnbook.red-bean.com/en/1.8/svn.branchmerge.basicmerging.html (尤其是保持分支同步和重新集成分支部分)

标签: svn merge tortoisesvn


【解决方案1】:

如果您从主干创建了分支,然后删除了分支中的文件,则在分支日期之后将其计为更改。因此,就像您要合并的其他更改一样,您也可以合并这个(删除文件)。

如果文件在单独的提交中被删除,您可以在没有此修订的情况下合并(您指定要合并的修订)。

您还可以在本地合并,然后提交合并的版本。所以删除的文件只在您的本地计算机中被删除。当您将合并提交到存储库时,您可以取消选中文件的删除或恢复文件的删除。这样,主干仍然会有文件。

【讨论】:

  • 6 月 1 日,我从主干创建了分支。 6 月 5 日,我在主干下添加了 file1。现在当我尝试将分支合并到主干时,它是否应该显示为已删除?
  • 这是一个冲突,因为您在两个分支中修改了版本,因此您应该在合并期间解决它。 SVN 看到了差异,但不知道哪个是正确的。也许它应该为此文件提供树冲突,而不是将其显示为已删除。您可以将添加该文件的版本从主干合并到分支,然后将分支合并到主干。或者您可以合并主干并提交合并后的版本,取消选中删除文件。
  • 您说“这是一个冲突,因为您在两个分支中修改了版本”,但我只是在创建分支后将其添加到主干下。我没有在两个分支下修改。这是SVN的正确行为吗(如果我在分支被剪切后在主干中添加文件,那么如果我将分支合并回主干,文件将显示为已删除)
  • 我知道我可以取消选中删除文件或恢复删除文件,但我想了解这里的 svn 行为
  • Trunk 也是一个分支。您的项目在 6 月 1 日分为两个版本 - 主干 (T) 和分支 (B)。您在 B 中做了一些工作。您还在 T 中添加了文件。因此,当合并发生时,您合并 B -> T。它会在 6 月 1 日之后检查 B 中的差异,并发现在 B 中没有这样的文件,所以它被标记为已删除。如果你合并 T->B 它会看到主干中有一个新文件,它会在分支中创建它
【解决方案2】:

如果您遵循说明,如果 TSVN 通过“合并两棵不同的树”帮助重新集成,则可以轻松解释。您要求将trunk - branch 之间的差异应用于工作副本。

主干中存在文件但分支中不存在,然后区别 - '删除文件'

这种差异适用于工作副本和静默(此处没有冲突)删除文件。

您还可以检查合并后您的工作副本是否应该看起来完全像分支。这就是重新整合合并所做的 - 使目标分支(在您的情况下为“主干”)等于源分支。

如果您仍想通过“合并两个不同的树”执行重新集成合并,则首先执行同步合并主干-> 分支。在这种情况下,分支将包含主干和分支更改,并且重新集成看起来就像将分支更改复制到主干(但实际上它使主干等于分支)

【讨论】:

  • 正如您在评论中建议的那样,将分支合并到主干,我们应该使用Merge a range of revisions 。但在这种情况下,我需要手动提及需要合并到主干的分支的修订号。如果我把它留空,它会将分支的所有修订合并到主干。如果我将修订文本框留空,那将是一种“合并两棵不同的树”。对吧?
  • 如果我在使用 Merge a range of revisions 时需要手动提及修订号,是不是容易出错。可能有人错过了一些修订
猜你喜欢
  • 1970-01-01
  • 2011-07-20
  • 2011-11-25
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多