用Git的方式使用SVN

用Git的方式使用SVN

习惯用Git后的程序员一定对SVN不屑一顾。不过目前的开发环境必须使用SVN,用起来不开心。还好Git提供了对SVN的支持,让我们可以像使用Git一样使用SVN。当然一些Git的高级功能还是无法支持的。

有兴趣详细了解的同学可以参考git-svn文档。简单来说只需要几步就可以使用了。

检出SVN库

git svn clone http://PATH_TO_SVN

有了这一步就可以在命令行像操作Git一样操作SVN了。如果对git-svn的命令不习惯,可以试试用工具。

使用SourceTree

我经常使用的Git客户端是SourceTree。SourceTree支持git-svn,只需要将检出的目录拖到SourceTree的Repository Browser (Command + B),就可以使用了。

如果使用时遇到错误:

Can’t locate SVN/Core.pm in @INC (you may need to install the SVN::Core module)

解决方法是参考这里

sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/SVN /System/Library/Perl/Extras/5.18/SVN
sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN/ /System/Library/Perl/Extras/5.18/auto/SVN

然后就可以开心地继续开发了。

git-svn

自定义Action

使用过程中,因为我有一些改动不需要提交到svn上,所以每次提交或者更新时都需要先stash,完成操作再放回来。这样3步操作可以通过Source Tree的自定义Action合成一步。

定义了一些脚本pull.shpush.sh,例如:

#!/bin/sh
cd "$REPO"
git stash
git svn fetch
git svn rebase
git stash apply
#!/bin/sh
cd "$REPO"
git stash
git svn dcommit
git stash apply

打开Source Tree的Preferences->Custom Actions,新建pull与push,选择这两个脚本。以后打开项目后,就可以在Actions->Custom Actions下找到你添加的这两个Action。

Comments

comments powered by Disqus