git配合svn的一些使用方法
作弊条
在一个git库中跟踪不同的svn branch
首次创建git库:git svn clone [svn代码库到HEAD分支的URL] [git代码库名]
例如,对于 FreeBSD,对应的URL为 http://svn.freebsd.org/base/head/
一般来说,从远程svn库复制需要的时间会比较长,也可以考虑首先在本地建立一份镜像,然后直接用 file:/// 去指定。
接下来编辑 .git 中的 config 文件,找到类似:
[svn-remote "svn"]
url = file:///downloads/mirrors/freebsd/base/head
fetch = :refs/remotes/git-svn
对于不同的分支,可以继续添加新的svn-remote小节,例如:
[svn-remote "svn-releng-8.2"]
url = file:///downloads/mirrors/freebsd/base/releng/8.2
fetch = :refs/remotes/git-svn-releng-8.2
添加完之后,用git svn fetch svn-releng-8.2这样的命令来同步对应的分支。
本地开发分支
本地开发分支比较简单,只需git checkout -b [你的分支名字] [源分支]即可。
远程开发分支
如果需要在另一个系统上做开发,则需要一些特别的步骤。
首先是git clone远程系统上的代码库。然后编辑.git/config,其中应该有类似这样的部分:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = server:/repo/freebsd.git
为svn的branch建立对应的remote:
[remote "svn"]
fetch = +refs/remotes/*:refs/remotes/svn/*
url = server:/repo/freebsd.git
然后git pull,在git branch -r时就能看到远程系统上的git-svn branch了。这个主要是在git merge的时候比较有用。