svn迁移至gitlab + 单gitlab项目迁移至另一个gitlab

svn迁移至gitlab

1、ssh登录svn服务器,获取用户文件

# 我的svn服务器用户文件在这里 /home/svn/passwd ,原始文件大致长这样
[root@svn ~]#cat /home/svn/passwd
[users]
zhain = b3e811
zoiwei = 12.H-15
lqanng = 77ae315

# PHP 
xun = e2d2635
huho = 629bfd9

2、将用户源文件,处理成只包含用户名的user-svn.txt

    # sed '/^[ #]/d'        # 去掉以空格和#开头的行
    # sed '/^$/d'           # 去掉空行
    # sed 's/=.*//'         # 去掉 = 后面的字符
    # sed '/\[users\]/d'    # 去掉 [users] 这行

    cat /home/svn/passwd | sed '/^[ #]/d' | sed '/^$/d' | sed 's/=.*//' | sed '/\[users\]/d' > /root/user-svn.txt

3、进一步将 user-svn.txt 文件处理成 git可关联的用户文件 user-git.txt

    # 最终需要的格式   (用户名=用户名<用户名@atstm.cc>)
    while read line;do echo "$line=$line<$line@atstm.cc>" >> /root/user-git.txt;done < user-svn.txt

4、找一台centos系统安装git 和 git-svn,并拉取代码到本地

# 安装git 和 git-svn
    dnf install git git-svn
    # apt install git git-svn

    # 创建本地存放代码的目录
    mkdir /root/scripts/ -p

    # 将代码从svn上clone下来,根据提示输入密码
    git svn clone svn://192.168.3.10/scripts --no-metadata --authors-file=/root/user-git.txt /root/scripts/ --username=zhain

# 注意 1、若是上面的 git svn clone 未完成而失败了,请cd 到对应目录,重新执行 git svn fetch
    cd /root/scripts/ ; git svn fetch

# 注意 2、若是git svn clone 完成后,svn项目中有新的代码提交,应该如何操作
    cd /root/scripts/ ; git svn rebase      # 未验证

5、去你的gitlab上创建一个项目,并获取项目地址

    cd /root/scripts/
    # 设置项目仓库地址
    git remote add origin http://gitlab.atstm.cc/xxxx/scripts.git

    # 注意:为了解决git不会提交空目录的情况,先找到空目录,再给下面创建一个固定名称的隐藏文件
    find . -type d -empty -exec touch {}/.gitkeep \;

    # 注意,还有一个大坑,小心之前虽然使用的svn,但是可能更早前使用了git,或者开源项目,导致部分目录下面有.gitignore文件。可能导致push后,代码不对
    # find . -name .gitignore -exec rm -rf {} \;      # 小心点,有的是要忽略的,不要搞错了哦

    # 将当前分支重命名为main,并推送
    git branch -M main
    git push -uf origin main

6、去gitlab上自行验证,历史版本

file

7、若是之前svn项目 是 master + trunk两个目录,如何合并成gitlab的main

# 1、先去gitlab网页,基于前面提交的main分支创建一个名为 old_svn_release分支

# 2、回到当前的克隆目录,删除trunk目录,并将master内的内容复制到当前目录
    rm trunk -rf
    rsync -av master/* ./
    rm master -rf

# 3、
    git add .
    git commit -m "从新的gitlab开始"
    git push -uf origin main

单gitlab项目迁移至另一个gitlab

# 克隆老项目,--mirror 克隆整个项目的所有分支和标签
    git clone --mirror <原GitLab项目URL>

# 将老项目地址改成新的项目地址
    cd <克隆下来的项目目录>
    git remote set-url origin <新GitLab项目URL>

# 推送到新的gitlab。--mirror 确保所有的分支、标签和引用都会被推送到新的远程仓库
    git push --mirror origin
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/1292.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2024/2/27作者: 辣条①号

目标:网络规划设计师、系统工程师、ceph存储工程师、云计算工程师。 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录