首先,我从主项目
创建一个分支$ 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)
只是一个语法问题,或者正如同事所暗示的那样,一个更深层次的问题使得基本上不可能让重命名的文件保持同步?如果是这样,重命名文件并保持同步的正确方法是什么?
答案 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
在这里阅读合并: