SVN转Git操作, 并附带当前SVN版本的操作记录

初衷

为了适应当下的协作开发的节奏, svn的时代渐行渐远, git的操作无疑让开发进度更加快速. 于是乎 svn->git是必然的的, 而且还要带上提交记录, 进行无缝切换.

基本技能

阅读以下操作, 默认你已经具备一下技能和环境:

  1. Gitee/Github/Gitlab线上仓库(本文已gitee为例)
  2. HomeBrew(这个可以使用别的, 主要是安装3-5)
  3. git
  4. svn
  5. git-svn(这个是重点)

可选:

  1. ssh公钥

如果在安装环境和软件过程中, 出现问题, 请自行百度, 这里不做赘述.

步骤概览

  1. 获取svn所有提交记录的操作者名单, 替换成分配的账号
  2. git-svn处理, 拉取svn项目,并创建git
  3. 设置git仓库地址
  4. 推上去

前提说明

本文意在指导操作步骤, 至于操作细节, 请根据项目实际操作.
我将进行操作, 将以前的多人项目svn移步到我的个人git上.

详细步骤

0. 服务器获取svn提交者记录

找你们的服务器给你一个, 自行需求到满足格式的形式

1. 本地获取svn提交者记录

如果你通过0步骤拿到了, 请忽略

  • 本地新建文件夹, 作为处理仓库
  • 新建userinfo.txt
  • cd到当前文件夹
  • git clone svn项目地址 到当前文件夹下
  • 执行命令:
    这里注意,前言中说明了, 这里主要是转移到我的个人仓库, 所以, xxx的位置需要填写我的仓库邮箱地址
svn log -r 1:HEAD --xml | grep "' '{print $2}' | awk -F '' '{print $1"="$1"" }'  > userinfo.txt
  • 通过上述代码得到所有提交者记录, 并进行了格式化, 可以根据实际情况做映射改动

2. git-svn转换

  • 新建一个全新的文件夹, 作为转换的仓库
  • 将0或者1获取到的userinfo.txt搞到当前文件夹下
  • cd到当前文件夹
  • 执行命令
// xxx为你的svn地址, 请自行填写
git svn clone xxx --no-metadata --authors-file=userinfo.txt

这期间如果出现什么问题, 请自行百度, 大概率是git-svn的安装问题

3. 创建网络仓库

这里采用的是gitee

  • 新建一个空仓库, 不需要选择其他的东西, null null null
  • 接下来你会看到仓库的提示, 这里就选择普通的https的模式

4. 配置本地信息

我们继续回到步骤2中新文件夹
此时该文件夹下, 一个项目文件, 一个userinfo.txt

依次执行一下命令:

// 创建readme文件
1). touch README.md
// git添加提交文件
2). git add README.md
// 这里xxx是步骤3中的https的地址
3). git remote add origin xxx
// 推上去
4). git push -u origin "master"

5. 结束

常见问题

  1. gitee限制了100M的文件怎么办

这个没办法, 之前有说通过设置上传阈值, 但是估计这种消耗流量的早就被限制了, 这里是做个取巧的操作:

  1. 根据提示, 查找到大文件, 找到文件路径,
  2. 执行命令git filter-branch --tree-filter 'rm -f xxx文件路径xxx' --tag-name-filter cat -- --all, 用于删除所有有关大文件的提交记录.
  3. , 通过分包压缩(这个普通的zip软件都可以做到), 设置分包压缩的大小<=99M, 可以压缩出多个对应的压缩包
  4. 可以将原大文件加入忽略文件中
  5. 在ReadME或者其他的文档中进行说明, 下载项目后要做的解压操作

备注: 我想肯定有人说, 你这个治标不治本, 更何况治标都治不好. 我是觉得, 这个是解决不太关心大文件的提交记录的解决方案, 只是一种取巧方案. 如果想要绝对完美的同学, 请百度寻找插件或者其他解决方案

  1. 暂时还没有

你可能感兴趣的:(技术,svn,git,github,记录,gitee)