[英]Why does this Subversion merge lead to a tree conflict instead of a merge conflict?
題
我本來希望文件a.txt
發生合並沖突,因為它的第2行同時在trunk
和branch/featurex
上更改了。
svn diff
嗎? 重現情況的示例
要重現樹沖突,您可以在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
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
沒有提及它們是副本。 要復制它們,源必須是存儲庫URL(目標也應該是)。 嘗試使用以下方法創建分支:
PS C:\demo\workspace\trunk> svn copy -m "Create branch for feature x" "^/trunk" "^/branches/featurex"
(當您在工作副本中時, ^
是存儲庫根目錄的別名),后跟svn update
。 甚至可以說是svn switch
-您不應簽出多個分支,只能在一次提交而不是三個提交中創建初始結構!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.