当前位置:首页 > 编程相关 > Git > 正文内容

从SVN仓库迁移至Git仓库

martinsun10个月前 (01-20)Git741

一、安装工具

Centos 系统中安装 git-svn工具

yum install git-svn -y

Windows 系统上操作则安装 git-base

二、生成svn转git的账号对应关系

文件中的格式为: svn用户名 = git用户名 <git邮箱>
例如:

root=root <admin@example.com>
zhangsan=zhangsan <zhangsan@qq.com>

对应关系主要用于将SVN迁移至Git仓库之后,日志中的提交者可以在Git仓库中正常显示,开发者能够看到代码的提交用户。
以上文件生成也可以使用命令生成

svn log 要迁移的SVN仓库地址 -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt

执行后只需要对生成的users.txt 文件格式做调整即可。

三、导出记录

git svn clone 要迁移的SVN仓库地址 --trunk=主分支名称 --tags=tags --branches=branches --authors-file=./users.txt --no-metadata 

上面的命令中:

  • --trunk 是指定svn仓库中的主分支,如果不指定,将会在导出的时候报类似错 update-ref HEAD refs/remotes/origin/trunk: command returned error: 128 的错误
  • --tags--branches指需要迁移的标签和分支,如果不需要迁移,则不指定

下面的操作需要进入导出的项目目录操作

四、清理工作

此步骤针对需要有迁移的标签分支

  • 把标签变成合适的Git 标签(有则执行)
    cp -rf .git/refs/remotes/tags/* .git/refs/tags/
    rm -rf .git/refs/remotes/tags
  • 把refs/remotes 下面剩下的索引变成本地分支
    cp -rf .git/refs/remotes/* .git/refs/heads/
    rm -rf .git/refs/remotes

五、添加Git远地址

git remote add origin 目的Git仓库地址

六、推送

git push origin --all

到此,迁移工作已完成

版权声明:本文由MartinSun发布,内容供学习参考使用。

图文说明:部分图文来源于网络,如侵权请联系删除。

本文链接:https://www.sunyonghong.com/?id=45

标签: gitsvn
分享给朋友:

相关文章

使用git subtree管理子仓库

说明最近在使用一个仓库统一管理其他子仓库的代码,降低在平时维护的成本,做了以下的梳理 介绍 与git gitmodule有一定区别,可以在网上查阅相关资料必须要学会使用git subtree的相关...

git 更新 fork 的项目到原项目的最新版本

说明fork 了一个项目之后,原仓库更新后,自己的fork项目想要同步更新原仓库,可以查看下面的操作步骤。 ps: 下文中提到的上游仓库,指的是原仓库 查看远程的版本库地址主要用于确定本地是否已经...

解决git每次拉取都需要输入账号密码

以允许git记录用户名和密码git config --global credential.helper store执行完成后,后面输入Git账号和密码时,会被存放到用户主目录下的git-credent...