用git在svn代碼庫上開發

此頁由 Linux Wiki用戶Chenxing 於 2012年1月20日 (星期五) 10:05 的最後更改。

從 Linux Wiki

提示:此文已超过 12 年(4691 天)未更新,如发现内容过时或有误,欢迎改进:)

git在功能上比svn強大不少,但目前很多版本庫仍在使用svn。得益於git-svn,我們可以把遠程的svn代碼庫複製到本地,從而實在在本地使用git開發,並通過svn與遠程代碼庫交互。

目錄

初始化代碼庫

最簡單的辦法是將整個SVN代碼庫同步到本地(包括所有歷史記錄,可能會非常慢):

git svn clone SVN代码库路径 -s

如果想只同步最近的更新,可以指定-r參數,如:

git svn clone SVN代码库路径 -r100:HEAD -s

會從相應的revision(此例是r100)同步到最新版本(HEAD)。[1]

上面的-s參數表示只同步trunk,對於某些非標準的代碼庫,不要加-s

如果是Google Code的SVN代碼庫,可使用如此方法[2]

git svn clone --username your-name -s https://your-project.googlecode.com/svn

同步後建議調用git gc (garbage collection)清理一下垃圾:

git gc

獲取最新代碼

如果想獲取代碼庫的最新代碼(對應svn update),只需:

git svn rebase

如果有衝突,處理方法與git版本庫類似。

開發

開發時就如同一個普通的git,可以使用git的各種feature,如本地commit,方便地創建多個branch等。具體可參見相關資料[3]

提交代碼

將代碼提交到svn,就只能保持版本的線性性了,此時建議先更新本地代碼庫:

git fetch
git svn rebase

同時也建議整理一下本地的commit

git rebase -i

都準備好後,就可以提交了:

git svn dcommit

參考

  1. (StackOverflow) How to git-svn clone the last n revisions from a Subversion repository?
  2. Develop with Git on a Google Code Project
  3. 如何在svn系統中使用git

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。
個人工具
简体繁体转换