关于svn项目迁移有人可能会说,新建一个git项目,把原来的代码直接扔进去提交不完了吗。恩,是的,没错。但是为了保留之前的历史提交记录,还是得做下面的步骤

首先确保本地正常安装配置好git,具体步骤不再赘述。

需要配置name和email

在git bash中采用以下命令

git config --global user.name "你的名字"

git config --global user.email "你的邮箱”

1、要迁移的项目从svn clone到本地

git svn clone -s svn://ip/项目名称 --no-metadata

此处  -s 表示svn标准目录结构:trunk、branches、tags的定义的项目,如果不采用标准结构,那么就需要如下参数

--trunk="svntrunk" --branches="svnbranches“ --tags=“svntags”。

根据项目trunk结构,clone语句改写为:

git svn clone -s svn://ip/项目名称 --no-metadata --trunk="trunk/项目名“ --branches="branches" --tags="tags"

在git bash中输入上面语句提示输入有该项目权限的svn账号和密码,输入后等待svn拷贝到本地(项目较大时,需要数小时)

拷贝完后,cd 项目名 跳转到项目目录

git branch -a 查看分支事是否正确

2、将一些远程分支迁回本地分支

实际应用中,如果项目在svn有tags标签,先把远程(remotes)标签变成适合的本地git标签,运行:

cp -Rf .git/refs/remotes/tags/* .git/refs/tags/

上面这一句,把tags去掉了remotes拷贝一份,

rm -Rf .git/refs/remotes/tags/*

这一句删除了带remotes的tags,所以运行前请确认已拷贝成功。通过以上两条命令会将原本以remotes/开头的远程tags变成git标签

然后,把refs/remotes下面剩下的索引页变成本地git分支:

cp -Rf .git/refs/tags/* .git/refs/tags/

rm -Rf .git/refs/remotes/*


3、gitlab中新建要一个名叫demo的项目

4、设置remote分支,并push

去掉默认远程仓库地址,把gitlab设置为默认远程库

git remote rm origin

git remote add origin ssh://git@192.168.224.134:30128/demo.git

上传所有分支

git push origin -all 

----------------------------------如果你的项目就只是用gitlab管理代码,到这里就可以了----------------------------------------


5、如果有用gerrit代码审核工具,那么创建gerrit项目并同步gitlab的项目内容

1)、创建名为demo的项目

2)、gerrit采用docker部署,进入gerrit容器

cd /var/gerrit/review_site/git

rm -rf demo.git   //刚创建demo项目的git目录

su-exec gerrit2 git clone --bare ssh://git@192.168.224.134:30128/demo.git   //gerrit2是在gitlab中新建demo项目后,添加的一个项目成员gerrit2

3)、配置代码合并后自动同步gitlab代码

跳转到同级目录etc/,修改配置文件replication.config

cd ../etc/

vi replication.config

文件末尾加上:

[remote "demo"]

projects = demo

url = ssh://git@192.168.224.134:30128/demo.git

push = +refs/heads/*:refs/heads/*

push = +refs/tags/*:refs/tags/*

push = +refs/changes/*:refs/changes/*

threads = 3

svn项目迁移至gitlab的更多相关文章

  1. SVN项目迁移到Git上(并带有完整的提交记录)

    公司需求:早期的一些项目使用的是SVN,现在想要更换为Git,需要代码迁移并且能在Git上看到之前在SVN中的项目的提交记录,公司没有使用gitlab,代码都push在公司的服务器上,用的是Torto ...

  2. SVN项目迁移到GIT

    源项目为SVN项目,  复制一份出来后. 在VS里无法修改 源码管理器的插件为GIT.    解决方法:  删除SVN插件信息 在解决方案文件中. 删除以下SVN信息就可以了   删除后:

  3. SVN代码迁移到GITlab

    ==================================================================================================== ...

  4. SVN迁移到Gitlab实践经历

    svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...

  5. 项目案例之GitLab的数据迁移

    项目案例之GitLab的数据迁移 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方 ...

  6. Git SVN Clone 旧项目迁移到 Git 上

    Git SVN Clone 旧项目迁移到 Git 上 很久使用的是 SVN,但由于项目重启,想改为 Git. 之前的 SVN 仓库是本地,所以在 git svn clone 一直不成功. 正确的方式: ...

  7. 使用git svn clone迁移svn仓库

    使用git svn clone迁移svn仓库 clone命令可以指定很多参数,主要用到这些,你也可以使用git svn help查看完整的参数列表. git svn clone https://172 ...

  8. svn搬移到gitlab及使用

    svn是一款非常简便,易用的源代码管理工具,用了这么多年,对它情有独钟.都说习惯最难改,那为何要搬移到gitlab上呢? 喜欢尝试新东西,前提还是git比较强大,svn有的它都有,svn没有的它也有. ...

  9. SVN库迁移整理方法总结

    有时候需要从一台机器迁移svn存储库到另外一台机器,如果数据量非常大的话,没有好的方法是很不方便的,其实迁移svn跟迁移mysql差不多,也有导出导入的方案 以下是subversion官方推荐的备份方 ...

随机推荐

  1. appium 方法整理

    1.contexts contexts(self):     Returns the contexts within the current session.     返回当前会话中的上下文,使用后可 ...

  2. [NOI2019]弹跳(KD-Tree/四分树/线段树套平衡树 优化建图+Dijkstra)

    本题可以用的方法很多,除去以下三种我所知道的就还有至少三种. 方法一:类似线段树优化建图,将一个平面等分成四份(若只有一行或一列则等分成两份),然后跑Dijkstra即可.建树是$O(n\log n) ...

  3. The five Day 水平翻转图像,然后反转图像并返回结果

    """ 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果. 水平翻转图片就是将图片的每一行都进行翻转,即逆序.例如,水平翻转 [1, 1, 0] 的结 ...

  4. ZooKeeper学习笔记(一)——概述

    zookeeper学习笔记(一)--概述 1. 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目.zookeeper从设计模式的角度来理解:是一个基于观察者设计 ...

  5. linux安装mysql后报错启动不了Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

    今天安装完Mysql后,开启发生了错误: 2.打开错误信息文件,查看错误原因是:Plugin 'FEDERATED' is disabled. /usr/sbin/mysqld: Table 'mys ...

  6. WPF 使用 AppBar 将窗口停靠在桌面上,让其他程序不占用此窗口的空间(附我封装的附加属性)

    原文:WPF 使用 AppBar 将窗口停靠在桌面上,让其他程序不占用此窗口的空间(附我封装的附加属性) 本文介绍如何使用 Windows 的 AppBar 相关 API 实现固定停靠在桌面上的特殊窗 ...

  7. 3、Linux目录操作

    1.目录操作概述 2.ls显示目录内容 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls 执行权限:所有用户 功能描述:显示目录文件 ls  -a    显示目录下的所有文件(包括 ...

  8. 2019 字节跳动java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.字节跳动等公司offer,岗位是Java后端开发,因为发展原因最终选择去了字节跳动,入职一年时间了,也成为了面 ...

  9. webpack4引入JQuery的两种方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_36185028/artic ...

  10. js获取任意一天的0点和23:59:59时间

    最近写代码时,需要获取任意一天的起始和结束时间,0点和23:59:59这两个时间的时间戳 使用了setHours() 方法 setHours() 方法用于设置指定的时间的小时字段 1. 获取当天开始时 ...