git-svn 用于在 git 与 svn 的单个分支之间双向操作。 在这里 svn 作为中心的仓库, git 作为个人在离线状态下进行版本管理。svn 的所有操作需要与中心仓库保持连接,git 可以弥补这个遗憾。
这里简单几句的说一下配置和使用方法,并附带一个例子
1、修改~/.gitconfig, 添加:
[svn]
rmdir = true
这个设置的目的在于,当 git 中删除文件夹后,和 svn 同步时,同样也在 snv 中进行文件夹删除操作。
2、克隆 svn 分支
$ git-svn clone http://svn.foo.org/projects/doo/trunk doo.trunk-git
3、本地操作和一般使用 git 相同
4、同步 svn 更新
$ git-svn rebase
5、将本地修改同步到 git
在首先做第 4 步并解决可能的冲突之后,使用
$ git-svn dcommit
就可以将操作更新到 svn 了
比如,这两个仓库就是用这种方法同步的:
http://fuse-convmvfs.svn.sourceforge.net/viewvc/fuse-convmvfs/fuse-convmvfs/trunk/
http://linuxfire.com.cn/~hellwolf/cgi-bin/gitweb.cgi?p=fuse-convmvfs.git;a=summary
这里简单几句的说一下配置和使用方法,并附带一个例子
1、修改~/.gitconfig, 添加:
[svn]
rmdir = true
这个设置的目的在于,当 git 中删除文件夹后,和 svn 同步时,同样也在 snv 中进行文件夹删除操作。
2、克隆 svn 分支
$ git-svn clone http://svn.foo.org/projects/doo/trunk doo.trunk-git
3、本地操作和一般使用 git 相同
4、同步 svn 更新
$ git-svn rebase
5、将本地修改同步到 git
在首先做第 4 步并解决可能的冲突之后,使用
$ git-svn dcommit
就可以将操作更新到 svn 了
比如,这两个仓库就是用这种方法同步的:
http://fuse-convmvfs.svn.sourceforge.net/viewvc/fuse-convmvfs/fuse-convmvfs/trunk/
http://linuxfire.com.cn/~hellwolf/cgi-bin/gitweb.cgi?p=fuse-convmvfs.git;a=summary