svn迁移git并保留历史提交记录
一、将svn中的所有用户信息与git账号进行映射。
svn用户信息需映射为git中存在的账号,形成文档如下:userinfo.txt
zhangsan1 = name1 <邮箱>
zhangsan2 = name2 <邮箱>
zhangsan3 = name3 <邮箱>
二、拉取svn代码
-
在电脑中
创建新文件夹将用户文件存放同层目录。需要把
userinfo.txt文件放置于其同层目录中,比如work文件夹中:存放newprojects文件夹及userinfo.txt文件。 -
使用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 -
执行后 可能需要输入密码*****。 执行完毕即拉取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成功,并保存了所有以往的提交记录~