我使用舊版svn
倉庫進行工作。但是,我想在本地計算機上享受git
的好處。在現有的SVN倉庫上使用git
- 第一個選項是
git init
我的當前回購的根,編寫代碼,並且獨立地提交代碼本地(git commit
)和遠程(svn commit
)。 - 第二個選項是
git-svn
,但我不知道是否值得學習新工具的細微差別。
我應該怎麼辦?
我使用舊版svn
倉庫進行工作。但是,我想在本地計算機上享受git
的好處。在現有的SVN倉庫上使用git
git init
我的當前回購的根,編寫代碼,並且獨立地提交代碼本地(git commit
)和遠程(svn commit
)。git-svn
,但我不知道是否值得學習新工具的細微差別。我應該怎麼辦?
我非常主張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中執行幾乎所有的操作。這意味着一切都需要更長的時間,並且你會得到這兩個系統的所有缺點,而他們在搞好對方的優勢方面做得很好。
使用git-svn,它非常簡單。 首先用git svn clone
克隆你的存儲庫,然後你可以git svn dcommit
你的工作或git svn rebase
它最新的變化。確保您的歷史始終是線性的,始終將您當地的分行重新定位在主人上,以便您可以將它們與git merge --ff-only
合併。
最好的辦法是遷移到git
並丟掉SVN。
但是,如果這不是一個選項使用git-svn
。
當你單獨提交git/svn時,你很可能最終只會很少提交SVN,這會導致其他開發者以巨大的提交結束。
無論誰低估了這一點,如果你在評論中發佈它的原因,這將是很好的。 – ThiefMaster
如果他寫作「我與一個傳統的svn回購工作」可能扔掉它不是一個真正的選擇 – cyberz