svn 代码迁移到git

因公司架构变动,现要求将手中负责的项目从svn上迁移至git,其实迁移很简单,但是还需要保留 svn上的提交记录,就无行的给工作增添了一些难度,得还好网上教程比较多,这里是我实战的笔记,仅供参考。

1、收集svn上的人员信息,并编辑成git能识别的账号

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

注:此命令最好是在mac或LINUX系统上执行生成 users.txt

执行成功后会在 svn目录生成 users.txt
##2、 将用户信息修改成git能够识别的格式

zhansan = 张三 <zhansan@qq.com>
lisi = 李四 <lisi@qq.com>
wangwu = 王五 <wangwu@qq.com>

注:如果这个时候还知道用户的邮箱可先保持与前面英文账号保持一致

2、使用 git svn clone 命令 克隆代码(以下步骤建议在win10上操作)

git svn clone https://svn_project_url/ --no-metadata --authors-file=../users.txt ../bpms-bb

注:svn_project_url 即你的svn代码地址

3、用git命令查看提交记录 (按q退出 )

D:\克隆到本地代码地址> git log

4、关联git上的项目地址

D:\克隆到本地代码地址>git remote add origin https://gitlab.wuhan.cn/project/xiangzi.git

查看关联地址是否正确
git remote -v

5、 将本地代码提交到远程仓库

git pull origin master

如果提交报错 ,说明远程仓库有操作记录,可以使用强制合并提交
git pull origin master --allow-unrelated-histories

6、合并到master分支

git push origin master
这样就基本完成了 迁移工作。


接下来记遇到问题即解决方法

1、 svn迁移到git时因其他原因中断,再次使用clone 命令报错

Using existing [svn-remote "svn"]
svn-remote.svn.fetch already set to track :refs/remotes/git-svn

在项目目录上使用命令:git svn fetch 继续操作,可节省不少时间

2、由于项目较大,或者同时执行多个克隆命令 导致空间不足

libsvn: Out of memory - terminating application.
      0 [main] perl 641 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump

我的解决方法是将窗口关掉,打开新命令窗口 并执行:git svn fetch

3、 svn代码迁移到git ,电脑突然关机,或误操作将命令窗口关闭

.git/svn/refs/remotes/git-svn/index.lock': File exists.

Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
write-tree: command returned error: 128

执行命令 git svn fetch 也会报错,需要找到 index.lock,删除掉再执行即可

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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特有的元数据)可能无法完全迁移。在进行迁移之前,请充分测试,并确保备份重要的数据。 此外,这只是一个基本的示例教程,实际迁移的复杂性取决于您的项目和仓库结构。如果您有特定的要求或遇到了问题,请提供更多关于您的项目和环境的信息,以便我能够提供更准确的建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值