svn迁移git仓库教程
侧边栏壁纸
  • 累计撰写 173 篇文章
  • 累计收到 1,057 条评论

svn迁移git仓库教程

萧瑟
2023-02-18 / 4 评论 / 147 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年05月23日,已超过310天没有更新,若内容或图片失效,请留言反馈。

项目交付、版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等。git自带了从svn迁移至git的工具命令,可很好的对svn上的提交历史做迁移和映射,操作简单方便。但是初次接触不熟练,这里做一个总结和记录,内容尽量简单化。争取提供给刚刚接触git和准备迁移的用户一个简单易懂的方案。

迁移流程图

迁移教程

这里分为两步来说明,第一步是比较简单迁移要件准备,已经准备好的用户可直接略过,直接进入第二步进行迁移操作。

第一步:准备工作:

① svn项目(SvnProject)地址及访问此svn项目权限账号:

  地址:https://mytest.cn/svn/project/Example/ SvnProject /

  账号:test/test@123

② git新建一个仓库(如:GitProject)存放迁移项目

  远程仓库地址:https://192.165.22.33/migrate/GitProject

  账号/密码: my_test/mytest@123

③ 待迁移svn项目有过提交记录的用户清单:

如果具备①的svn账号又没有svn管理员权限,可以通过导出所有提交历史并用代码提取一下用户清单(开发人员都懂,不赘述)。获取到的用户清单为user1,user2,user3。创建文件users.txt,按如下格式存入svn账号与git账号的映射关系,“=”前为svn账号,“=”号后为git账号,尖括号为git用户的邮箱,尖括号及邮箱可无。

users.txt

注:如果有些用户已经离职了,其账号在git中没有,这里依然可以映射至不存在的git用户。

如果SVN用户未全部列举,执行迁移时会报如下错误:

SVN用户异常

报这个错误时可简单粗暴删除文件夹重新导出即可。

④ :电脑上安装git客户端,客户端下载地址:

https://www.git-scm.com/download/

下载后安装客户端,安装及配置参考:

https://blog.csdn.net/u013295518/article/details/78746007

第二步:数据迁移

一:导出svn记录到本地

在你存放users.txt的同级目录新建一个文件,命名为你的项目名:GitProject

text-here

右键文件空白处,单击Git Bash Here

在bash界面,输入git拷贝命令:

git svn clone https://mytest.cn/svn/project/Example/MyProject/ --no-metadata --authors-file=users.txt GitProject

text-here

参数说明:

git svn clone 是Git的迁移命令
https://mytest.cn/svn/project/Example/MyProject/是svn服务器地址,注意需要到迁移项目的根目录一级
--no-metadata 参数去除了svn上很多杂乱的参数信息,保留了清晰简洁的提交记录信息。
-file=users.txt 为你的用户映射文件夹;
GitProject是刚刚新建的空白项目名文件夹
第一次操作,会多次要求账号密码:请注意每次提示信息,第一次密码输入是操作系统的用户密码,第二次为svn账号和密码,第三次为git的账号密码。注意按提示输入。

第三步:关联git远程仓库

执行

cd GitProject

进入迁移项目路径下:

执行:

git remote add origin git@192.165.22.33:migrate/GitProject.git

后即已关联远程git仓库,执行可查看关联情况

git remote –v

未关联时:

text-here

关联成功后:

text-here

如果关联错了,可以使用 git remote rm origin删除错位关联后重新关联即可

 git remote rm origin
第四步:提交记录至git

svn项目中的所有提交记录和历史版本都已经导出本地并关联了远程仓库,现在只需要将这些记录推送至远程仓库即可。

执行

git push -u origin master

命令输入后需要输入git账号\密码

执行成功后,就完成了整个迁移过程。登录git网站,可以看到空白仓库中多了很多提交记录和文件。

引用资料:

svn 迁移至git操作手册

github推送项目常见错误fatal: remote origin already exists0

Git 与其他系统 - Git 与 Subversion

评论 (4)

取消
  1. 头像
    林羽凡
    内蒙古自治区阿拉善盟 iPhone · Safari

    svn好像挺早了吧,是不是那个小乌龟那个

    回复
    1. 头像
      萧瑟 作者
      北京市 Windows 10 · Google Chrome
      @ 林羽凡

      是的,前段时间有需求,需要将svn迁移到git上。表情

      回复
  2. 头像
    vian
    河南省周口市 Android · Google Chrome

    表情 技术文评论果然少

    回复
    1. 头像
      萧瑟 作者
      北京市 Windows 10 · Google Chrome
      @ vian

      确实是的。无所谓了,只是记录一下常用的小记罢了,希望能给其他人带来帮助。表情

      回复