6

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

为什么合并时主干上的删除不会删除分支上的相同文件?我正在使用颠覆 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 会保存文件的唯一原因。

4

2 回答 2

1

据我了解,您所做的是在 file1 中创建本地冲突。在您的分支中,它已被修改。在您的后备箱中,它已被删除。当你合并时,它会发生冲突。所以文件仍然存在。

我建议2个测试:

  1. 运行上面的代码后,包含svn status.
  2. 尝试与上面相同的代码,但根本不修改该分支。(svn status在这里也会有帮助。)
于 2008-10-28T09:22:13.200 回答
0

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

你不妨看看这个错误报告,它彻底解释了这种情况:http ://subversion.tigris.org/issues/show_bug.cgi?id=2282

于 2010-12-02T17:29:21.200 回答