.metadata是什么项目文件_SVN项目迁移到GIT并保留commit记录

迁移一个SVN项目(大小约为2G)到Gitee上,本文记录操作过程

1. 编辑userinfo.txt

格式为svn_username=git_username,提交记录里出现的所有svn_user都要有对应git_user

svn_user1=svn_user1<svn_user1@xxx.com>
svn_user2=svn_user2<svn_user2@xxx.com>

2. 从svn拉取代码

配置git信息:

git config --global user.name "YOUR_USERNAME"
git config --global user.email "YOUR_EMAIL"

查看配置:

git config --list

拉取代码(项目越大,花费时间越多)

git svn clone -r 282506:HEAD svn_url --no-metadata -A userinfo_path local_path
  • -r 282506:HEAD 代表从svn的282506版本到最新版本的提交记录,避免从第一个版本拉取数据量过大,操作耗时高。 如果需要拉取所有记录,可去除 -r 282506:HEAD
  • svn_url 你的svn项目地址。
  • --no-metadata 防止git拉取无用的SVN附加信息
  • local_path 为git clone下来的svn目录,会自动新建
  • -A userinfo_path 你的userinfo.txt路径

3. 提交代码到git

a. 项目总大小不大于50M:

cd localpath
git remote add origin https://gitee.com/xxx/xxx.git

查看关联情况:

git remote -v

如果关联有误,可以删除关联

git remote rm origin

在gitee上建的仓库上有.gitignore文件,需要先rabase,但因项目过大,多次rebase都卡住了,所以清空了远程的仓库,不执行rebase

git pull --rebase origin master

(如果code = 411,则是由postBuffer引起的,可以在客户端执行 git config --global http.postBuffer 52428800,改为最大50M)

b. 项目总大小大于50M:

项目文件过大,超过http实体最大值(50M),需要换成ssh传输,错误提示:

Enumerating objects: 2598, done.
Counting objects: 100% (2598/2598), done.
Delta compression using up to 4 threads
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
Compressing objects: 100% (2239/2239), done.
error: pack-objects died of signal 201.80 MiB | 1.60 MiB/s
fatal: the remote end hung up unexpectedly

需要换成ssh传输

这个命令需要自己输入,直接复制粘贴会导致错误

ssh-keygen –t rsa –C "YOUR_EMAIL"
cat ~/.ssh/id_rsa.pub

将生成的公钥,复制到你的gitee ssh公钥设置

测试是否能用ssh登录git

ssh -T git@gitee.com

出现下面提示则成功

Hi <YOUR_USERNAME>! You've successfully authenticated, but GITEE.COM does not provide shell access.

将git链接 https://gitee.com/xxx/xxx.git 对应修改成 @gitee.com:xxxx/xxx.git(其他git同理)

git remote set-url origin git@gitee.com:xxxx/xxx.git

4. push代码到远端

git push -u origin master

操作实例

git config --global user.name "zhanghan"
git config --global user.email "zhanghan@gdyd.com"
git svn clone --no-metadata -A userinfo.txt https://10.66.0.1/eip-ng/branches/eip-docx docx
cd docx
ssh-keygen –t rsa –C "zhanghan@gdyd.com"
cat ~/.ssh/id_rsa.pub
在gitee官网添加ssh公钥
git remote set-url origin git@gitee.com:gdydit_eip/docx.git
git push -u origin master
参考资料 https://www. lovelucy.info/codebase- from-svn-to-git-migration-keep-commit-history.html https:// blog.csdn.net/s_t_ruggl e/article/details/91530997
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值