2012-06-14 33 views
12

我使用舊版svn倉庫進行工作。但是,我想在本地計算機上享受git的好處。在現有的SVN倉庫上使用git

  • 第一個選項是git init我的當前回購的根,編寫代碼,並且獨立地提交代碼本地(git commit)和遠程(svn commit)。
  • 第二個選項是git-svn,但我不知道是否值得學習新工具的細微差別。

我應該怎麼辦?

回答

8

我非常主張git-svn。我和我的一些同事試圖在Subversion的頂端使用Git repro,這是一個痛苦和恐怖的過程。

無可否認,這是針對Subversion 1.6.x的;我懷疑1.7.x會更好,因爲它只有一個.svn目錄。

  • 從版本庫更新需要從Subversion提取更新,然後使用Git提交它們。這是緩慢和乏味的(不可否認,它與git-svn相當慢,但至少可以使這個過程自動化)。

    另外,無論你最終下載每一個使用Subversion提交和手動提交它的Git,或者你最終犯顛覆的束提交到Git倉庫,並$deity幫助你,如果你曾經想在Subversion修訂工作在你的Git提交之間。

  • Git無法處理空目錄,Subversion要求它們的目錄格式爲.svn。這意味着您需要將您的.svn存儲庫保留在Git存儲庫之外,因此任何git checkout操作都需要單獨的svn up

  • 如您所見,您需要單獨提交所有內容。

因此,分別使用Subversion和Git,您需要在Git和Subversion中執行幾乎所有的操作。這意味着一切都需要更長的時間,並且你會得到這兩個系統的所有缺點,而他們在搞好對方的優勢方面做得很好。

5

使用git-svn,它非常簡單。 首先用git svn clone克隆你的存儲庫,然後你可以git svn dcommit你的工作或git svn rebase它最新的變化。確保您的歷史始終是線性的,始終將您當地的分行重新定位在主人上,以便您可以將它們與git merge --ff-only合併。

4

最好的辦法是遷移到git並丟掉SVN。

但是,如果這不是一個選項使用git-svn

當你單獨提交git/svn時,你很可能最終只會很少提交SVN,這會導致其他開發者以巨大的提交結束。

+2

無論誰低估了這一點,如果你在評論中發佈它的原因,這將是很好的。 – ThiefMaster

+4

如果他寫作「我與一個傳統的svn回購工作」可能扔掉它不是一個真正的選擇 – cyberz

2

您可以嘗試SubGit項目。將SubGit安裝到你的SVN倉庫中;將創建SVN存儲庫的純Git接口(真正的Git,而不是git-svn)。之後,你可以使用兩個接口:SVN或Git作爲你的倉庫。

如果你沒有權限訪問你的SVN服務器,還有另一種選擇推薦:SmartGit客戶端。它的行爲類似於git-svn,但提出了更多功能(標記,忽略,EOL處理,櫻桃選擇)。