最近公司要将SVN服务迁移,前段时间刚把SVN服务从windows服务器迁移到Linux。
现在项目越来越多,加之SVN的集中式管理,不支持分布式,分支切换麻烦,Git支持分布式开发,快照式数据,速度快,主干分支切换方便。给领导建议了一下把仓库迁移到git,领导的要求就是可以迁移,但是不能丢提交记录。经过自己的研究尝试,最终把SVN仓库成功迁移到git,下面将迁移过程分享出来。
一.软件安装及git配置
1.git安装
2.gitlab安装(我们使用的gogs,具体根据公司内部的架构和情况选择,中小企业,并且团规规模不是很大的情况下gogs是足够使用了)
3.git账号配置
在你准备作为git本地仓库的文件夹目录->鼠标右键->Git Bash Here 进入git命令行,
输入如下命令:
git config --global user.name "username"
git config --global user.email "username@mail.com"
username是gitlab下注册的用户名,username@mail.com是gitlab下注册的邮箱
查看配置:
git config --list
4.svn账号与git账号映射
在当前文件夹下创建文件userinfo.txt,文件内容如下斜体: (注:svn账号3在svn中有记录,但无git账号,提交记录中涉及到的svn账号需要全部列举出来,否则会报错。提交记录可以选择指定记录到最新记录,下面会有说明)
svn用户名1=git用户名1<git邮箱1@mail.com>
svn用户名2=git用户名2<git邮箱2@mail.com>
svn用户名3=git用户名3<git邮箱3@mail.com>
二. svn项目导出到本地git仓库
1.在存放userinfo.txt的同级目录下新建一个文件夹,名称最好命名成你的项目名称
2.继续在Git Bash执行下面命令:
git svn clone -r 1126:HEAD
svnurl
--no-metadata --authors-file=userinfo.txt template
注:此处的 -r 1126:HEAD 代表从svn的1126版本到最新版本的提交记录,避免从第一个版本拉取数据量过大,操作耗时高。
svnurl
是你的svn项目地址。如果需要拉取所有记录,可去除 -r 1126:HEAD
此处执行命令后会弹出一个窗口,需要登录两次,第一次是登录本地电脑,使用你本地的计算机用户和密码就好;第二步是登录gitlab的用户名密码,这个根据自己注册的用户密码填写就好。
三、在gitlab上创建仓库(我们用的是gogs)
下图红框的地址为后面使用的
giturl
四、关联git远程仓库
导入成功后,输入如下命令:
cd template
git remote add origin
giturl
注:
giturl
是你的git项目地址
查看关联情况:
git remote -v
如果关联有误,可以删除关联
git remote rm origin
五、提交记录至git
提交记录之前,先拉取远程git项目文件(README.md),否则直接提交会报错。若仓库中没有文件,执行此步没有提示。
git pull --rebase origin master
拉取成功后,执行push命令
git push -u origin master
最近公司要将SVN服务迁移,前段时间刚把SVN服务从windows服务器迁移到Linux。现在项目越来越多,加之SVN的集中式管理,不支持分布式,分支切换麻烦,Git支持分布式开发,快照式数据,速度快,主干分支切换方便。给领导建议了一下把仓库迁移到git,领导的要求就是可以迁移,但是不能丢提交记录。经过自己的研究尝试,最终把SVN仓库成功迁移到git,下面将迁移过程分享出来。一.软件安装及...
六步删除
git
Hub上
仓库
的所有
提交
历史
首先废话凑下字数,不想听废话的直接看下面代码。
当我们
commit
次数很多的时候项目
仓库
最后会积攒很多无用的
提交
历史,这时候这些大历史会在项目clone的时候导致速度很慢。
没有梯子的童鞋体验更是不好,所以删除
提交
历史还是很有必要的。
步骤========================
1.运行
git
checkout --orphan latest_branch
2.添加所有文件
git
add -A
3.
提交
更改
git
commit
-am “co
领导让我将以前一个工程的文档给维护的同事。
我只是那个项目的参与者,不是作者。要文档我哪有啊…, 只好尝试将
svn
提交
日志导出给他。
领导以前从来没要求研发向
svn
提交
时写
提交
日志,也没有要求写changlog和其他设计文档,这时候问我有没有文档,整的有点懵逼。
还好我
提交
日志的习惯还蛮好的,每次
提交
都会写
提交
的原因文本。
上网找了一下,已经有同学做了实验。
我也
记录
一下。
在
svn
目录中建立一个实验目录,添加几个文件,修改几次,并分别
提交
,
提交
时写一些
提交
日志。
浏览
svn
日志
以前开发中未制定、遵循
git
管理项目标准,随意(不规范)的
提交
严重“污染了”
提交
历史,使开发主线 “脏乱”;
基于以前的
仓库
重新开发,这样可
保留
以前的配置等文件,但是需要删除全部的历史
记录
、tag、分支等;
由于自己或其他方面特殊需求,需要
保留
仓库
的部分属性(创建时间,说明,主页等),但需要清除历史
记录
,使其为“新库”。
基于以上3方面的需求,需要提供一个 在不删除原
仓库
的前提下,清除原
仓库
的所有历
svn
代码
迁移
到
git
1、收集
svn
上的人员信息,并编辑成
git
能识别的账号2、使用
git
svn
clone 命令 克隆代码(以下步骤建议在win10上操作)3、用
git
命令查看
提交
记录
(按q退出 )4、关联
git
上的项目地址5、 将本地代码
提交
到远程
仓库
6、合并到master分支接下来记遇到问题即解决方法
因公司架构变动,现要求将手中负责的项目从
svn
上
迁移
至
git
,其实
迁移
很简单,但是还需要
保留
svn
上的
提交
记录
,就无行的给工作增添了一些难度,得还好网上教程比较多,这里是我实战的笔记,仅供参考
最近在使用华为软件开发云进行开发项目管理,目前华为软件开发云支持500M的免费项目空间,而且还可以在线编译和构建,不用担心开发环境和生产环境的不同,很好的体现了DevOps的开发理念.
之前一直是用
svn
做代码管理,而华为软件开发云是使用目前国外比较流行的
Git
进行代码版本控制.在网上查询了
迁移
方式,发现
Git
本身有命令可以直接克隆
SVN
的代码库,而且
迁移
后能保持原
SVN
的
提交
记录
.以下是总结的...
1.创建一个
Git
仓库
首先,您需要在
Git
服务器上创建一个新的
Git
仓库
。您可以使用
GitLab
、
Git
Hub 或 Bitbucket 等托管服务或您自己的
Git
服务器。
2.安装
git
-
svn
工具
您需要安装
git
-
svn
工具,这样您就可以从
SVN
仓库
中克隆代码并将其转换为
Git
仓库
。您可以使用以下命令在 Linux 上安装
git
-
svn
工具:
sudo apt-get install
git
-
svn
3.克隆
SVN
仓库
使用以下命令克隆
SVN
仓库
:
git
svn
clone <
SVN
仓库
URL> <本地目录>
这将从
SVN
仓库
中克隆代码并将其转换为
Git
仓库
。
4.将代码推送到新的
Git
仓库
使用以下命令将代码推送到新的
Git
仓库
:
git
remote add origin <新
Git
仓库
URL>
git
push -u origin master
这将把转换后的
Git
代码推送到新的
Git
仓库
中。
这样,您就可以将
SVN
仓库
迁移
到
Git
仓库
中了。