假设我有一个SVN仓库,有两个分支,并且两个分支中都存在某个文件,并且相差一行。有没有办法允许用户修改任一分支上的该行并合并到另一个分支,而 SVN 不会标记合并冲突?换句话说,有没有办法告诉 SVN 将这些不同的行视为相同的行?
举个例子,假设我有一个名为“B”的分支,其中有一个文件
foo.txt
,其内容如下:
1
2
apple
4
从这个分支我创建一个名为“C”的分支:
svn cp ^/branches/B ^/branches/C
然后我将
branches/C/foo.txt
修改为以下内容(然后提交):
1
2
banana
4
我能做些什么(除了修改文件的内容)来允许用户在任一分支上修改
foo.txt
并合并到另一个分支,而不会 SVN 标记合并冲突?
我还将指定:
Subversion 将报告冲突,因为存在存在冲突。但是,您可以使用 Subversion 的自动冲突解决来指定接受哪个版本。要从 C 合并到 B,你可以这样做:
# we are on B
svn merge --accept theirs-conflict ^/branches/C .
这将使用 B 中的内容来解决所有冲突。要限制为一个特定文件(并手动解决所有其他冲突),您可以执行以下操作:
# we are on B
svn merge --accept postpone ^/branches/C .
svn resolve --accept theirs-conflict foo.txt
或者使用樱桃选择合并:
# we are on B and know only foo.txt was changed in r123
svn merge -c 123 --accept theirs-conflict ^/branches/C .
另请参阅
高级合并中有关
--accept
的文档,并且可以在此处找到可能的值。