用git在svn代码库上开发

此页由Linux Wiki用户Chenxing于2012年1月20日 (星期五) 10:05的最后更改。

出自Linux Wiki

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

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

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

反馈与讨论

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