SVN将trunk合并为分支删除文件

时间:2011-12-08 14:16:04

标签: svn version-control merge delete-file revisions

我正在尝试做一些看似简单但有问题的事情。

基本上,我有一个svn repo,它有一个主干和一个从修订版122创建的分支。

我在分支中添加了一个文件(src / utils / foo.py),将其作为修订版128提交,一切都很好。

然而,在我的分支中有几个提交(即(123,124,125,126,127)到我想要的主干。所以我做了类似的事情:

$ svn merge -r122:127 ^/projects/my_project/trunk/src/utils .
--- Merging r123 through r127 into '.':
D    foo.py

糟糕!它删除了我的文件!我做错了什么,以免发生这种情况?

3 个答案:

答案 0 :(得分:1)

它可能与拥有该文件的文件夹有关,而不是文件本身。我相信大多数SCM工具都会将文件夹视为文件,因为它们也会被版本化。您可能需要上升一级以确保“utils”文件夹也合并。

修改

只是为了解释一下,它是文件夹“utils”记录文件“foo.py”是它的子文件,所以即使foo.py存在于trunk中,也没有合并更新的utils文件夹它可能无法显示。

答案 1 :(得分:1)

首先,您是否在执行svn merge命令的正确目录中?第二个从不合并SVN中的子文件夹。只需使用

svn merge ... ^/projects/my_project/trunk 

进入工作副本的根目录。特别是在与合并历史(svn:mergeinfo)的关系中会更好。

答案 2 :(得分:0)

啊!有人确实将分支合并到了trunk中,后者将文件添加到trunk,但随后回滚了该提交,从trunk中删除了该文件。谢谢您的帮助。关于svn merge如何工作的好教训。