关于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要生成的地址
我的环境是Mac OS,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到一个新分支,从转换过来的这个分支合并,然后提交到新仓库即可

猜你喜欢

转载自liyunpeng.iteye.com/blog/2271914