当前位置: 首页 > news >正文

SVN迁移至GitLab,并附带历史提交记录(二)

与《SVN迁移至GitLab,并附带历史提交记录》用的 git svn clone不同,本文使用svn2git来迁移项目代码。

一、准备工作

  1. 安装Git环境,配置本地git账户信息:
git config --global user.name "XXX"
git config --global user.email "XXX@mail.com"

可通过命令git config -l 查看结果

  1. 安装git-svn,运行git svn -h,若正常输出帮助信息,说明安装没问题。
  2. 安装ruby,运行ruby -h,若正常输出帮助信息,说明安装没问题。
  3. 执行下面命令安装svn2git,注意下面命令依赖ruby。
gem install svn2git

再运行svn2git -h,若正常输出帮助信息,说明安装没问题。

  1. svn账号与git账号映射,新建文件 userinfo.txt,左侧是SVN的账号,右侧是git账号信息,用=号连接:
svn1=git1<git1@mail.com>
svn2=git2<git2@mail.com>
svn3=gitx<gitx@mail.com>

注意:

  • 需要将涉及到的同步记录中的用户都做映射,否则在同步时可能会报错
  • 对于无法对应的人员,如离职人员,有SVN账号,但是没有现在的GIT账号,保险起见,可以采用无关紧要的账号进行对应,或者单独建一个账号也可以,例如使用的test账号进行标识的

二、导出SVN项目至本地

  1. 创建空文件夹用于存放SVN的代码,并将userinfo.txt文件放置在同一层级
│  userinfo.txt
└─ MyProject
  1. 鼠标右键 选中Git Bash Here 进入git命令行,执行:
svn2git svnUrl --authors userinfo.txt -v

这里的-v会输出执行过程的信息,方便debug。此处的 -r 12345:HEAD 表示从svn的12345版本到最新版本的提交记录,避免拉取所有数据量过大,操作耗时高。svnurl是svn项目地址。如果需要拉取所有记录,可去除 -r 12345:HEAD

如果在windows有下面错误:

D:\MyProject>svn2git https:/xxx.com:8443/svn/SVN2GIT/ --authors authors.txt -v
Running command: git svn init --prefix=svn/ --no-metadata --trunk='trunk' --tags='tags' --branches='branches'  https:/xxx.com:8443/svn/SVN2GIT/
Initialized empty Git repository in D:/MyProject/.git/
Running command: git config --local --get user.name
Running command: git config --local svn.authorsfile authors.txt
Running command: git svn fetch
Running command: git branch -l --no-color
Running command: git branch -r --no-color
Running command: git config --local --get user.name
Running command: git config --local --get user.email
Running command: git checkout -f master
error: pathspec 'master' did not match any file(s) known to git
command failed:
git checkout -f master

去安装目录C:\Ruby30-x64\lib\ruby\gems\3.0.0\gems\svn2git-2.4.0\lib\svn2git,找到migration.rb文件,把#{trunk}#{tag}#{branch}两边的单引号删除,再重新执行上面命令。
参考自:svn2git - command failed

三、与远程git仓库关联起来

  1. 进入项目文件夹,
cd MyProject
  1. 关联远程事先创建好的git项目
git remote add origin gitURL

如:git remote add origin http://192.168.1.xx:5678/MyProject.git

  • 查看关联情况:
git remote -v
  • 如果关联有误,可以删除关联
git remote rm origin
  1. 推送本地项目到git仓库
  • 提交记录之前,先拉取远程git项目文件(如:README.md),否则直接提交会报错
git pull --rebase origin master
  • 拉取成功后,推送主分支trunk代码
git push -u origin --all

git push --all origin
  • 推送tags代码
git push -u origin --tags

ref:
1.从 SVN 到极狐GitLab的迁移指南
2. https://github.com/nirvdrum/svn2git

http://www.lryc.cn/news/276105.html

相关文章:

  • 如何创建容器搭建节点
  • 微众区块链观察节点的架构和原理 | 科普时间
  • React Admin 前端脚手架之ant-design-pro
  • 向爬虫而生---Redis 基石篇1 <拓展str>
  • 【野火i.MX6ULL开发板】利用microUSB线烧入Debian镜像
  • “我在大A炒自己”
  • js 颜色转换,RGB颜色转换为16进制,16进制颜色转为RGB格式
  • uniapp中用户登录数据的存储方法探究
  • 引导过程与服务控制
  • 《矩阵分析》笔记
  • 『App自动化测试之Appium应用篇』| Appium常用API及操作
  • VSCode搭建 .netcore 开发环境
  • python 写自动点击爬取数据
  • CSDN博客重新更新
  • 《剑指 Offer》专项突破版 - 面试题 5 : 单词长度的最大乘积(C++ 实现)
  • 【Java集合篇】HashMap的get方法是如何实现的?
  • Java学习苦旅(二十二)——MapSet
  • 【Linux Shell】12. 文件包含
  • 前端-基础 常用标签-超链接标签( 锚点链接 )
  • 2024--Django平台开发-基础信息(一)
  • C++力扣题目--94,144,145二叉树递归遍历
  • 开源游戏引擎:创造无限可能 | 开源专题 No.56
  • MyBatisPlus学习一:快速入门
  • 2024最新外贸建站:ChemiCloud主机购买使用及自建外贸独立站教程
  • 校招社招,认知能力测验,③如何破解语言常识类测试题?
  • 了解一下InternLM2
  • 关于使用统一服务器,vscode和网页版jupyter notebook的交互问题
  • Linux22.04系统安装显卡驱动,cuda,cudnn流程
  • 【常考简答题】操作系统
  • Large Language Models Paper 分享