subversion合并删除命令

时间:2008-10-27 16:02:44

标签: svn merge

当我将主干合并到功能分支中时,主干上发生的删除将不会复制到我的工作副本。

为什么合并时删除主干上的删除不会删除分支上的同一文件? 我正在使用subversion 1.5客户端和服务器。

我假设重新集成分支时会跳过对分支文件的更改?

在主干上兑换文件的最佳方法是什么,因为同事只是因为没有“准备好”而从主干中删除了文件。

情况:

cd project; svn copy trunk branches/f1; svn ci -m "branching out" branches f1;
echo "modifying a file on branch." >> branches/f1/file1; svn ci branches/f1 -m "Branch modified"; 
echo "Above modify is not even needed to state the case";
svn rm trunk/file1; svn ci trunk -m "creating (conflicting) delete on trunk";
cd branches/f1; svn merge svn+ssh://repos/trunk .
[ -f file1 ] && echo "file f1 does exist while it should have been deleted by merge.";

因此,即使我正在合并主干文件已被主动删除的文件中,该文件仍然存在于我的工作副本中。非常意外。在我的情况下,我甚至没有对文件进行任何更改,这是我能想到为什么svn会保存文件的唯一原因。

2 个答案:

答案 0 :(得分:1)

据我所知,你所做的是在file1中创建一个本地冲突。在你的分支中,它被修改了。在你的主干中,它被删除了。合并时,它将发生冲突。所以文件仍然存在。

我建议进行2次测试:

  1. 运行上面的代码后, 包括svn status
  2. 的结果
  3. 尝试与上面相同的代码,但是 没有修改那个分支 所有。 (svn status会有所帮助 这里也是。)

答案 1 :(得分:0)

合并后,您确定在主干上删除的文件仍处于版本控制之下吗?它可能是无版本的,但仍然存在,这是预期的行为。查看svn status的输出将让您查看该文件是否仍受版本控制。

您可以查看此错误报告,该报告彻底解释了这种情况:http://subversion.tigris.org/issues/show_bug.cgi?id=2282