svn项目迁移至gitlab
关于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的更多相关文章
- SVN项目迁移到Git上(并带有完整的提交记录)
公司需求:早期的一些项目使用的是SVN,现在想要更换为Git,需要代码迁移并且能在Git上看到之前在SVN中的项目的提交记录,公司没有使用gitlab,代码都push在公司的服务器上,用的是Torto ...
- SVN项目迁移到GIT
源项目为SVN项目, 复制一份出来后. 在VS里无法修改 源码管理器的插件为GIT. 解决方法: 删除SVN插件信息 在解决方案文件中. 删除以下SVN信息就可以了 删除后:
- SVN代码迁移到GITlab
==================================================================================================== ...
- SVN迁移到Gitlab实践经历
svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...
- 项目案例之GitLab的数据迁移
项目案例之GitLab的数据迁移 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方 ...
- Git SVN Clone 旧项目迁移到 Git 上
Git SVN Clone 旧项目迁移到 Git 上 很久使用的是 SVN,但由于项目重启,想改为 Git. 之前的 SVN 仓库是本地,所以在 git svn clone 一直不成功. 正确的方式: ...
- 使用git svn clone迁移svn仓库
使用git svn clone迁移svn仓库 clone命令可以指定很多参数,主要用到这些,你也可以使用git svn help查看完整的参数列表. git svn clone https://172 ...
- svn搬移到gitlab及使用
svn是一款非常简便,易用的源代码管理工具,用了这么多年,对它情有独钟.都说习惯最难改,那为何要搬移到gitlab上呢? 喜欢尝试新东西,前提还是git比较强大,svn有的它都有,svn没有的它也有. ...
- SVN库迁移整理方法总结
有时候需要从一台机器迁移svn存储库到另外一台机器,如果数据量非常大的话,没有好的方法是很不方便的,其实迁移svn跟迁移mysql差不多,也有导出导入的方案 以下是subversion官方推荐的备份方 ...
随机推荐
- golang学习笔记 ---常用第三方包
包的介绍 包类似Java中概念,jar是源代码管理,分发的最小单位. 目前多数包来自 Github官方包来自 golang.org/x/... 可以在如下网址查询到高频使用的第三方包清单https:/ ...
- windows 10 如何设定计划任务自动执行 python 脚本?
我用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能自动定时执行. ...
- js提取135编辑器相同的css
135编辑器导入的内容,有重复的很多css,导致加载很慢,只能去掉 function remove135FormatContent(content){ if(!content) return ''; ...
- Windows 7 下安装 docker
Windows 7 下需要安装docker toolbox即可(里面打包了docker.oracle virtualbox.Git) 1. 下载 1. 下载路径https://github.com/d ...
- Tensorflow在python3.7版本的运行
安装tensorflow pip install tensorflow==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple 可以在命令行 或者在py ...
- 小知识:讲述Linux命令别名与资源文件的区别
别名 别名是命令的快捷方式.为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用.语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令.重要的 ...
- linux限定用户或组对磁盘空间的使用
实验环境 环境:centos7.3 ,一块磁盘sdb分一个分区sdb1. 安装磁盘配额支持软件 yum install quota 制作文件系统,并以支持配额功能的方式挂载文件系统 mkfs.ext4 ...
- flutter_screenutil
import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; ...
- Java知识回顾 (12) package
本资料来自于runoob,略有修改. 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(cl ...
- 初识osquery
初识osquery osquery是一个由Facebook的开源用于对系统进行查询,监控以及分析的一款软件. osquery对其的说明如下: osquery将操作系统公开为高性能关系数据库.这允许您编 ...