2010-03-30 112 views
4

我一直聽說git中的分支比SVN中的分支容易得多,因爲將分支合併回中繼/主設備更容易。我讀過一些教程,但它們只涉及基本的合併衝突(「Alice更改了code.cpp的第8行,同時Bob更改了第8行的code.cpp ...」),並且SVN和所有其他分佈式源控制系統。GIT和SVN在合併衝突解決方案時有什麼區別

你能否給我一些分支變化的例子,這些變化會導致SVN倉庫出現問題,但是會被git妥善處理?

+0

也許svn最近被抓到了?我不知道,我沒有太多用處。可以svn不斷從遠程分支合併? – hasen 2010-03-30 13:53:00

+0

這看起來非常類似於這個問題:http://stackoverflow.com/questions/2475831/merging-hg-git-vs-svn所以你可能想看看這個。 – welp 2010-03-30 09:18:59

回答

3

我終於有一些時間用樹枝鼓搗/使用Git和SVN合併,發現殺死SVN,但使用Git工作完美的情況下:

比方說,該項目是由這些文件:

/main.cpp 
/sub1/sub1.cpp 
/sub1/sub1.h 
  1. 創建分支
  2. 在trunk中,將sub1。*移動到根目錄,刪除sub1子目錄。
  3. 在分支使/sub1/sub1.cpp
  4. 在後備箱的一些變化作出/sub1.cpp一些變化
  5. 合併分支和樹幹。

SVN失去了在分支3中所做的所有更改,git中的類似更改完美合併。這足以讓我拒絕SVN作爲任何需要分支的項目的版本控制系統。

2

hgInit.com與Mercurial相關,但會給你一個關於合併衝突的DVCS和SVN區別的非常好的概述。

爲什麼顛覆與合併麻煩 原因與它的方式 存儲版本歷史做。 Subversion 喜歡思考修訂。 A 修訂版是整個文件 系統看起來像在某個特定的時間點 。在Mercurial中,你認爲 關於變更集。變更集是一個 一個修訂版和下一個修訂版之間的變更簡明清單。

因此,當Mercurial(或Git)單獨比較每個更改集時,Subversion會比較整個文件。處理變更集時衝突的發生要少得多。

+0

奧利?我只看到我的問題中描述的基本衝突情況。 – chalup 2010-03-30 09:26:15