关于SVN老项目迁移到Git
之前使用过git-svn,感觉并不是很好用,后来在网上发现了这个东西
SubGit,一个传说中比git-svn好用的工具
准备工作
首先下载SubGit,地址http://www.subgit.com/download.html
然后解压到本地,可直接使用bin下的运行文件,也可以配置环境变量
具体使用分如下步骤
1.创建一个SVN到GIT的配置文件,使用命令如下
subgit configure --svn-url http://www.xxx.com/MyProject /User/LiYunpeng/Desktop/git
--svn-url后面跟了两个参数,第一个是SVN的仓库地址,第二个是GIT要生成的地址
我的环境是MacOS,Windows还没有试过,这两个地址应该都可以为本地仓库,也可以为远端仓库,只要能够找到
接下来的步骤其实运行命令之后已经提示了
1) Adjust Subversion to Git branches mapping if necessary: /Users/LiYunpeng/Desktop/git/subgit/config 2) Define at least one Subversion credentials in default SubGit passwd file at: /Users/LiYunpeng/Desktop/git/subgit/passwd OR configure SSH or SSL credentials in the [auth] section of: /Users/LiYunpeng/Desktop/git/subgit/config 3) Optionally, add custom authors mapping to the authors.txt file(s) at: /Users/LiYunpeng/Desktop/git/subgit/authors.txt 4) Run SubGit 'install' command: subgit install /User/LiYunpeng/Desktop/git
2.生成配置文件后进行修改配置
此处要注意的是,我们的SVN的结构目录要相对标准,因为配置文件需要用到,如果不标准,可以通过svn工具或命令进行move调整
在步骤一中生成的路径文件夹下会生成一些文件,我们重点关注下subgit这个文件夹,下面会有config文件,可进行编辑,打开后大部分为注释掉的代码和一些描述。
通过刚才的命令,我们生成了SVN的地址,在配置文件中也可以找到,我们会涉及到如下的改动:
在配置文件中找到下面这一段
trunk = master:refs/heads/master branches = branches/*:refs/heads/* tags = tags/*:refs/tags/* shelves = shelves/*:refs/shelves/*
他的作用是进行SVN的目录与Git中的mapping映射
等号前边的代表工具要识别的名称,不动
等号后边会通过:冒号来分割
冒号前边是SVN下的相对SVN路径的文件夹地址,也就是分别对应了trunk、branches、tags、sheleves,SVN的基础结构目录
冒号后边对应的自然就是Git中的一些关键的东西,分支、标签之类
下面修改账号的对应关系
在config文件中有对应账号配置的引用文件路径
authorsFile=subgit/authors.txt
也就是在subgit目录下的authors.txt,里面我们可以写多个用户对,如:
LiYunpeng = LiYunpeng <[email protected]> zhangsan =张三 <[email protected]>
等号前面的是SVN中的用户名,等号后边为Git的
下面修改SVN仓库的验证信息
在config文件中有一段对应配置
passwords=subgit/passwd
和上面的一样,验证信息配置在subgit目录下的password文件
LiYunpeng 123456
空格前面是名称,空格后面是密码,这里的密码是明文的,所以如果要在其他服务器上搭建的时候注意设置该文件的访问权限,以防密码被人知道啦。
3.配置文件完毕,执行安装
运行命令,对新创建的本地映射仓库进行安装
subgit install /User/LiYunpeng/Desktop/git
然后就是漫长的等待迁移过程,会把SVN上的提交记录一点一点的搞下来,会有进度
Translating Subversion revisions to Git commits... Subversion revisions translated: 1625. Total time: 805 seconds. INSTALLATION SUCCESSFUL
完成后会告诉你安装完成,转换了多少提交版本,用时多少
4.clone项目到你想要的目录
接下来,就是我们日常使用Git的流程了,只不过把我们用在远端仓库的http://***换成本地的地址,也就是/User/LiYunpeng/Desktop/git
以上就基本完成了,剩下的,如果想再提交到新的远端仓库,就先创建个新的远端仓库地址,然后clone到一个新分支,从转换过来的这个分支合并,然后提交到新仓库即可
相关推荐
pub_svnserve.conf的 pub_authz.conf的配置文件有非法字符的原因引起,需要查找pub_authz.conf提的非法内容比如多余的空格删除或直接将pub_authz.conf