svn合并重命名的文件

时间:2014-10-13 10:21:54

标签: svn merge mv

首先,我从主项目

创建一个分支
$ svn cp project branched

然后我重命名分支中的一些文件:

$ svn mv branched/file.c branched/file.cpp

提交/更新后,其他人对原始项目中的原始文件进行了更改,如何合并这些更改?

$ svn merge project/file.c branched/file.cpp
svn: E195002: Invalid merge source 'project/file.c'; a working copy path can only be used with a repository revision (a number, a date, or head)

只是一个语法问题,或者正如同事所暗示的那样,一个更深层次的问题使得基本上不可能让重命名的文件保持同步?如果是这样,重命名文件并保持同步的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

  

"无效的合并来源' project / file.c&#39 ;;工作副本路径只能   与存储库版本"

一起使用

让我们打破它。

  

"无效的合并来源' project / file.c'"

SVN在理解你的意思时遇到了问题" project / file.c"。注意SVN正在尝试使用您告诉它使用的相同文件,并且此文件显然存在于您的系统上。这里没有重命名问题。

  

"工作副本路径"

您告诉SVN从您工作副本中的计算机上已存在的文件进行合并。这不是正常使用。通常,您指定要合并的存储库URL。支持使用 ,但是:

  

"只能与存储库版本"

一起使用

...如果您尝试从工作副本中合并,您实际上只是告诉SVN您正在谈论的文件,并且SVN仍将使用存储库服务器来获取合并的数据。因此,您需要告诉SVN要合并的版本。 E.g:

$ svn merge -r HEAD project/file.c branched/file.cpp

然而,你在这里做的另一个奇怪的事情是合并一个文件。通常,您希望合并整个目录树,而不是单个文件。所以,我建议改变以下内容:

$ svn merge http://example.com/svn/path/to/project branched

在这里阅读合并:

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.merge.html