svn 迁移至git操作手册

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

旧svn服务器:192.168.1.185(对生产的敬畏)

新svn+git服务器:192.168.1.203

我是把旧的svn通过dump下来传到203的svn上面这需要点时间,这个原理跟mysql的dump一样

把SVN上的代码仓库迁移到Gitlab上,实际上就是把SVN仓库转变成Git仓库,并且希望能保留原SVN仓库的Commit等历史记录,这一点很重要。
SVN迁移到Gitlab需要安装git-svn

yum install -y git-svn

建立users.txt(存储svn账号与gitlab上账号的关联性)

svn log svn://192.168.1.203 -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > ./users.txt

得到的结果:

然后开始把SVN仓库转变成Git仓库,执行以下命令:

git svn clone svn://192.168.1.203/XinglvTmc/ --no-metadata --authors-file=users.txt --trunk=trunk --tags=tags --branches=branch XinglvTmc

添加GitLab到Git源信息

git remote add origin URL

注:目的地gitlab仓库地址

5. 将trunk, branches等上传

git push origin --all

为了将标签变为合适的 Git 标签,运行

# cd  my_project
# cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
# rm -Rf .git/refs/remotes/origin/tags

这会使原来在 remotes/origin/tags/ 里的远程分支引用变成真正的(轻量)标签。

接下来,将 refs/remotes 下剩余的引用移动为本地分支:

# cp -Rf .git/refs/remotes/* .git/refs/heads/
# rm -Rf .git/refs/remotes
 
现在所有的旧分支都是真正的 Git 分支,并且所有的旧标签都是真正的 Git 标签。 最后一件要做的事情是,将你的新 Git 服务器添加为远程仓库并推送到上面。
下面是一个将你的服务器添加为远程仓库的例子:
 git remote add origin http://192.168.1.203/root/xinglvtmc.git/

git fatal: 远程 origin 已经存在。

不小心将git远程地址配错了,再次配置提示以下错误:

fatal: 远程 origin 已经存在。

此时只需要将远程配置删除,重新添加即可;

git remote rm origin

git remote add origin https://github.com/***/WebCrawlers.git

再次提交文件即可正常使用

粗心造成的小错误,顺便说一下,如果git没有commit就执行push操作会出现以下错误

fatal: unable to access 'https://github.com/***/WebCrawlers.git/': Empty reply from server

解决:只需要先commit 在 push即可

gitlab删除已上传项目中的文件夹

最新文章

  1. Android(4)—Mono For Android 第一个App应用程序
  2. visual studio 编辑窗口 设置固定选项卡 使窗口选项卡多行显示
  3. kubernetes部署Fluentd+Elasticsearch+kibana 日志收集系统
  4. weiphp踩坑记录
  5. 最简单的js确认框!
  6. 网络通信之Socket与LocalSocket的比较
  7. Quartz.net开源作业调度框架使用详解(转)
  8. 瀑布流插件(jquery.masonry.js)
  9. 选择或者放弃MySQL的理由
  10. colspan是跨列,rowspan是跨行
  11. 高一的我曾对自己说&quot;要放慢脚步去生活&quot;!?
  12. 洛谷-生活大爆炸版石头剪刀布-NOIP2014提高组复赛
  13. 七行代码开始flask
  14. 记录前台js判断,如果为空,給议空的占位
  15. Openwrt 刷机后配置WAN口,安装luci和设置中文、安装挂载USB存储。
  16. D- 泛型练习 ,继承,方法
  17. Content-type详解
  18. linux下can调试工具canutils安装过程记录
  19. 次短路——Dijkstra
  20. spring容器bean的作用域 &amp; spring容器是否是单例的一些问题

热门文章

  1. 深入理解JVM虚拟机5:虚拟机字节码执行引擎
  2. 走进JavaWeb技术世界11:单元测试框架Junit
  3. 解析复杂的嵌套数据结构-jsonpath
  4. python人生如初见之初见yield
  5. php过滤表情符号
  6. linux下安装pm2,pm2: command not found
  7. &lt;JavaScript&gt;尺寸类样式的获取
  8. 常用sql2
  9. (四)HttpServletRequest对象(转)
  10. 【Leetcode_easy】605. Can Place Flowers