2010-12-01 46 views
7

我已經聽說過Git如何重新設計分支如何工作,以及SVN的分支模型如何搞砸。爲什麼在SVN中分支不夠好?

我沒有使用過多的SVN,所以我對於分支應該是什麼樣子沒有任何先入之見。我首先看着git分支,然後「獲取」它。

SVN分支的實際缺點是什麼?鼓勵爲工作流,分支策略和分支性能(在提交/檢出/切換時間方面)的POV提供答案。

感謝, JRH

+3

我不使用git或任何其他DVCS,但這http://hginit.com/00.html和這個http://kiln.stackexchange.com/questions/892/how-will-mercurial-be-better-than-subversion-when-one-user-refactors-code -and-ano可能對您有所幫助。 – sharptooth 2010-12-01 07:15:27

回答

4

有幾件事情浮現在腦海

  1. 所有分支都存儲在中央資料庫。如果您沒有連接到該服務器,或者您的連接速度很慢,則無法快速訪問它們。
  2. 所有分支都存儲在中央存儲庫中。這意味着它們是公開的 - 團隊中的任何人都可以查看它們。沒有辦法保留一個別人無法訪問的私人分支。
  3. 提交的DAG本身包含​​足夠的信息,以便您可以確定哪些更改包含在當前版本的代碼中,包括來自任意數目分支的更改。在svn,IIRC中,這是通過使用svn:mergeinfo屬性完成的,這個屬性更加複雜,因爲有人可能會忘記提交更改後的屬性,所以容易出錯。
0

主要問題是,Subversion使一個糟糕的工作跟蹤變化和合並信息(例如,目錄不是第一類對象,也沒有真正的重命名支持)。只要您嘗試在分支之間移植更改,就會發生衝突。有些衝突是合理的(兩個分支都編輯了同一行),但其他人沒有解釋。

如果您甚至要求很明顯,你不說謊,你還沒有使用Subversion的太多,因爲這些衝突出現幾乎立即:)