Subgit简介
目前主流的版本管理工具,一个SVN,另一个Git。
具体谁优谁劣,大家评论不一。尺有所短,寸有所长。这篇文章不讨论哪个好哪个坏,而是主要介绍一款工具软件,方便在SVN与Git之间灵活切换。
这个软件就是Subgit。
Subgit是什么?
引用官方网站的一句话:
SubGit is a tool for a smooth, stress-free SVN to Git migration. Create writable Git mirror of a local or remote Subversion repository and use both Subversion and Git as long as you like. You may also do a fast one-time import from Subversion to Git or use SubGit within Atlassian Bitbucket Server.
Subgit是一款能够从SVN平滑、无压力转换到Git的工具。创建一个本地(或远程)Subversion仓库的可读写Git镜像,Subversion和Git两者你都可以随便选用。你也可以从Subversion进行一次性快速导入到Git,或者在Atlassian Bitbucket服务器里使用Subgit。
Subgit 镜像
使用Subgit创建一个已经存在的Subversion仓库的双向的Git-SVN镜像,你可以任意提交代码到Git或SVN,GubGit会在Git和SVN之间自动同步,几乎零延时。
Subgit 导入
Subgit的导入功能,能高效快速处理大量仓库,保证数据、修改记录完整清晰。Subgit的命令行也适用于全自动无人处理。
与Git-SVN对比
SubGit提供公司级的、安全的从Svn到Git的迁移方法。
SubGit有专业的技术支持,零延时的镜像,集中化配置,非凡的性能,强大的文档————这些只是比其他工具优秀的一部分。
官方文档
Subgit官方文档里列出了主要的用途:
1.Quick How-To(快速上手)
如何设置Git/SVN镜像,足够应对大多数标准SVN项目。
2.Mirror Remote Subversion Repository(远程SVN仓库镜像)
创建一个从网络访问的远程Subversion仓库的镜像。在push操作时,完成从Git到Subversion的转换,同时后台同步完成从Subversion到Git的转换。
3.Mirror Local Subversion Repository(本地SVN仓库镜像)
在服务器端为Subversion安装Subgit,Subversion和Git都依赖于同一个服务器。他们之间的转换是双向同步的,开销也很小。
4.One Time Import from Subversion to Git(从Subversion一次性导入Git)
完成一次性从Subversion到Git的导入,没有同步的功能。
5.SubGit for Gerrit(Subgit支持Gerrit)
6.SubGit for GitLab(Subgit支持Gitlab)
在Gitlab与你的Subversion之间同步,服务器端配置,如果没有服务器端的权限,可以参考下面的Github配置。
7.SubGit for GitHub(Subgit支持Github)
在Github与你的Subversion之间同步,当然,这里面有些限制需要注意。
8.SubGit for Atlassian Bitbucket Server(Subgit支持Atlassian Bitbucket Server)
9.Comparison to Git-Svn(与Git-Svn对比)
10.SubGit Release Notes(Subgit版本记录)
11.SubGit Registration(Subgit的注册)
没有注册你只能用30天
使用心得
Subgit实质上是一个Svn与Git之间转换的工具,附带了一些主流的远程仓库的支持。
假如公司正在使用SVN,那么肯定有一个SVN地址,如果你只会Git,那么,你可以通过Subgit,建立一个Git仓库,这个git仓库是SVN的镜像,它可以在本地电脑上,仅供你一人操作,也可以在远程Git仓库里。如果Git仓库仅在本地,可以Git提交,可以自动零延时同步到SVN上,同时,也能从SVN上及时获取到别人的提交。但是在远程仓库里会有些限制,因为这里涉及到同步的及时性问题,容易出现冲突。
这篇文章只是简单介绍一下Subgit目前支持的功能,随着Subgit的更新,功能肯定越来越强大,操作也越来越简便。
如果没有什么特殊的应用,完全能够按照步骤一步一步来完成配置。但,目前有些功能的操作还是比较复杂,如果没有一定的Git功底,不了解hook钩子的,里面的自动同步功能可能会比较棘手。(我也不懂钩子。。。)