问题
我本来预计文件中会发生合并冲突,a.txt
因为它的第 2 行同时更改trunk
了branch/featurex
。
- 为什么我会遇到树冲突而不是合并冲突?
- 如何显示冲突?
svn diff
? - 我该如何解决这个冲突?
重现情况的示例
要重现树冲突,您可以对 and 进行更改trunk
并branches/featurex
尝试合并trunk
到branches/featurex
.
创建一个分支:
PS C:\> mkdir demo
PS C:\> cd demo
PS C:\demo> svnadmin create svnrepo
PS C:\demo> cd workspace
PS C:\demo\workspace> mkdir trunk
PS C:\demo\workspace> mkdir branches
PS C:\demo\workspace> mkdir tags
PS C:\demo\workspace> svn add trunk
PS C:\demo\workspace> svn add branches
PS C:\demo\workspace> svn add tags
PS C:\demo\workspace> svn ci -m "Create SVN default folders"
PS C:\demo\workspace> cd trunk
PS C:\demo\workspace\trunk> echo "trunk: line1" > a.txt
PS C:\demo\workspace\trunk> svn add .\a.txt
PS C:\demo\workspace\trunk> svn ci -m "1st commit on trunk"
PS C:\demo\workspace\trunk> svn copy . ..\branches\featurex
PS C:\demo\workspace\trunk> cd ..
PS C:\demo\workspace> cd .\branches
PS C:\demo\workspace\branches> svn ci -m "Create branch for feature x"
Adding featurex
Adding (bin) featurex\a.txt
在主干上提交更改:
PS C:\demo\workspace\trunk> echo "trunk: line2" >> .\a.txt
PS C:\demo\workspace\trunk> svn ci -m "2nd commit on trunk"
在分支上提交更改(在同一行以创建合并冲突):
PS C:\demo\workspace\branches\featurex> svn up
PS C:\demo\workspace\branches\featurex> echo "branch: line2" >> .\a.txt
PS C:\demo\workspace\branches\featurex> svn ci -m "1st commit on branch"
将主干合并到分支:
PS C:\demo\workspace\branches\featurex> svn up
PS C:\demo\workspace\branches\featurex> svn merge file:///c:/demo/svnrepo/trunk
--- Merging r2 through r5 into '.':
C a.txt
--- Recording mergeinfo for merge of r2 through r5 into '.':
U .
Summary of conflicts:
Tree conflicts: 1
PS C:\demo\workspace\branches\featurex>
它就是:意外的树冲突。
的内容a.txt
不显示任何合并冲突的合并,它只显示具有此内容的“分支版本”:
trunk: line1
branch: line2
版本
Subversion 版本 1.7.8 (r1419691) 于 2012 年 12 月 12 日 21:11:09 编译