svn迁移git并保留历史提交记录

382 阅读2分钟

svn迁移git并保留历史提交记录

一、将svn中的所有用户信息与git账号进行映射。

svn用户信息需映射为git中存在的账号,形成文档如下:userinfo.txt

zhangsan1 = name1 <邮箱>
zhangsan2 = name2 <邮箱>
zhangsan3 = name3 <邮箱>

二、拉取svn代码

  1. 在电脑中 创建新文件夹 将用户文件存放同层目录。

    需要把userinfo.txt文件放置于其同层目录中,比如work文件夹中:存放newprojects文件夹及userinfo.txt文件。

  2. 使用git svn命令克隆svn中的需要迁移git的代码。在work文件夹中执行:

    git svn clone svn://xx.x.x.xxx/xx/xx --no-metadata --authors-file=userinfo.txt newprojects --username=xxx
    

    或者

    git svn clone http://xxxxx/xx/xxx --no-metadata --authors-file=userinfo.txt newprojects --username=xxx
    
  3. 执行后 可能需要输入密码*****。 执行完毕即拉取svn代码完毕

三、 在git中创建新项目

在git中创建新项目仓库, 地址为: http://xx.x.x.xxx:xxx/xx/xx.git

注意不能初始化readme文件,该仓库用于迁移svn代码。

四、 关联git仓库保留svn历史记录

在刚才创建的newproject文件夹下(已经拉取完svn代码的文件夹)进行操作。

cd newprojects 

newprojects文件夹下执行命令关联git仓库:

git remote add origin http://xx.x.x.xxx:xxx/xx/xx.git
git push -u origin --all
git push -u origin --tags

五、 我的mac报错处理

执行git svn命令报错 git: 'svn' is not a git command. See 'git --help'. 解决: brew install git subversion (这个不对) brew install git-svn 下载git-svn过程中下载python3.11报错: curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

  • 通过python官网下载python3.11 并更改变量后 下载依旧报错
  • 通过配置host: 199.232.28.133 raw.githubusercontent.com,再次下载git-svn报错:从 error 7 变成了 error 35
  • 通过修改brew镜像方式解决
  • 更换后 再次执行brew install git-svn 下载过程python3依旧报错 最后多次继续执行下载命令尝试 最终下载成功。

至此,svn更换为git成功,并保存了所有以往的提交记录~