SVN仓库迁移至Git,保留commit提交记录

2 篇文章 0 订阅

最近公司要将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
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Git代码迁移SVN是一个复杂的过程,需要一定的技术知识和操作。下面是一个完整的详细教程,以帮助您进行Git代码SVN迁移: 1. 准备工作: - 确保您的系统上已安装GitSVN。您可以从官方网站下载并安装它们。 - 确保您有读取Git仓库和写入SVN仓库的权限。 2. 创建一个空的SVN仓库: - 使用SVN创建一个新的空仓库,用于存储迁移后的代码和历史记录。 3. 克隆Git仓库: - 在本地选择一个目录,使用以下命令克隆Git仓库: ``` git clone <Git仓库URL> ``` 4. 配置Git-svn: - 在克隆的Git仓库目录中,运行以下命令来配置Git-svn: ``` git svn init <SVN仓库URL> --prefix=svn/ --no-metadata ``` - `<SVN仓库URL>` 是目标SVN仓库的URL。 - `--prefix=svn/` 参数将创建的SVN分支和标签的前缀设置为 "svn/"。 5. 迁移代码提交记录: - 使用以下命令将Git提交记录迁移SVN: ``` git svn fetch ``` - 该命令会将所有Git提交记录逐一导入到SVN仓库中。 6. 提交SVN仓库: - 进入新创建的SVN仓库目录,使用以下命令提交SVN仓库: ``` svn add --force . svn commit -m "Initial import from Git" ``` 7. 验证迁移结果: - 检查SVN仓库中的代码提交记录,确保迁移成功。 请注意,由于GitSVN之间存在一些概念和功能上的差异,一些高级特性(如分支、标签和Git特有的元数据)可能无法完全迁移。在进行迁移之前,请充分测试,并确保备份重要的数据。 此外,这只是一个基本的示例教程,实际迁移的复杂性取决于您的项目和仓库结构。如果您有特定的要求或遇到了问题,请提供更多关于您的项目和环境的信息,以便我能够提供更准确的建议。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值