2010-02-18 154 views
7

使用git-svn而不是git的優勢顯而易見(svn兼容性),但git優於git-svn有什麼優勢?git比git-svn有什麼優勢?

+5

訪問svn不是「git-svn over git的優勢」。 git-svn的目的是給你git優於svn的優點。如果不使用git,你不能有用地使用git-svn。 – 2010-02-18 06:23:21

回答

5

這僅僅意味着您的開發鏈(svn)中無需管理一個VCS。
在管理期限:

你留下了由Git的管理分佈式存儲庫
  • ,每個自治與他們的完整的歷史
  • 你沒有保持到中央SVN回購的連接之一。
  • 可以不同的方式組織您的備份(推你的數據傳送到遠程備份裸回購,或通過git bundle導出您的Git回購)

當然,你可以管理所有的advantages of Git over SVN

+0

您是否可以根據實際使用情況(即速度,功能)更詳細? – Mike 2010-02-18 04:56:01

+1

@Mike:我已經完成了我的回答。 – VonC 2010-02-18 05:06:16

3

git-svngit在本地工作時共享相同的功能。當從遠程存儲庫發送或接收修改時會出現差異。

  1. Push vs. dcommit。

    爲什麼git-svn需要這個單獨的dcommit命令?

    由於Subversion存儲庫的行爲與遠程Git存儲庫的行爲不同:SVN總是嘗試合併目錄級別的傳入更改。如果修改其他用戶同時修改的文件,SVN會拒絕傳入的修改,其中過期的錯誤。否則通過commit/dcommit

    與此相反,Git push返回過期錯誤,當一個修改相同的分支/標記時,無論文件被觸摸。

    因此,git-svn dcommit必須確保它剛剛提交的版本與預期相同(某些目錄可能在dcommit期間自動合併)。這意味着,git-svn總是將其發送到SVN存儲庫的更改提取/提取回來。

  2. 文件忽略。

    當人們忽略工作樹中的某些文件並提交此修改時,無法通過git-svn dcommit發送此修改。因此,無法與其他SVN存儲庫用戶共享忽略。

  3. Git屬性。

    Subversion和Git都有一些與文件和目錄相關的元數據。與.gitignore類似,無法與同事共享.gitattribute。

  4. 合併提交。

    最後,當有人試圖dcommit合併提交時,根本不會將某些提交發送到SVN存儲庫。當合並分支的所有提交尚未提交給SVN存儲庫時都會發生這種情況。

其中大部分git-svn問題很難甚至無法解決。你可能會考慮SubGit - 一個替代git-svn的服務器端可以修復大部分。

欲瞭解更多詳情,請參閱SubGit documentationSubGit vs. git-svn comparison

相關問題