用git在svn代码库上开发

出自Linux Wiki

在2011年11月30日 (三) 05:14由Chenxing (讨论 | 贡献)所做的修订版本

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

同步后建议调用git gc (garbage collection)清理一下垃圾:

git gc

获取最新代码

如果想获取代码库的最新代码(对应svn update),只需:

git svn rebase

如果有冲突,处理方法与git版本库类似。

开发

开发时就如同一个普通的git,可以使用git的各种feature,如本地commit,方便地创建多个branch等。具体可参见相关资料[2]

提交代码

将代码提交到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. 如何在svn系统中使用git
个人工具
简体繁体转换