• svn项目迁移至gitlab


    关于svn项目迁移有人可能会说,新建一个git项目,把原来的代码直接扔进去提交不完了吗。恩,是的,没错。但是为了保留之前的历史提交记录,还是得做下面的步骤

    首先确保本地正常安装配置好git,具体步骤不再赘述。

    需要配置name和email

    在git bash中采用以下命令

    git config --global user.name "你的名字"

    git config --global user.email "你的邮箱”

    1、要迁移的项目从svn clone到本地

    git svn clone -s svn://ip/项目名称 --no-metadata

    此处  -s 表示svn标准目录结构:trunk、branches、tags的定义的项目,如果不采用标准结构,那么就需要如下参数

    --trunk="svntrunk" --branches="svnbranches“ --tags=“svntags”。

    根据项目trunk结构,clone语句改写为:

    git svn clone -s svn://ip/项目名称 --no-metadata --trunk="trunk/项目名“ --branches="branches" --tags="tags"

    在git bash中输入上面语句提示输入有该项目权限的svn账号和密码,输入后等待svn拷贝到本地(项目较大时,需要数小时)

    拷贝完后,cd 项目名 跳转到项目目录

    git branch -a 查看分支事是否正确

    2、将一些远程分支迁回本地分支

    实际应用中,如果项目在svn有tags标签,先把远程(remotes)标签变成适合的本地git标签,运行:

    cp -Rf .git/refs/remotes/tags/* .git/refs/tags/

    上面这一句,把tags去掉了remotes拷贝一份,

    rm -Rf .git/refs/remotes/tags/*

    这一句删除了带remotes的tags,所以运行前请确认已拷贝成功。通过以上两条命令会将原本以remotes/开头的远程tags变成git标签

    然后,把refs/remotes下面剩下的索引页变成本地git分支:

    cp -Rf .git/refs/tags/* .git/refs/tags/

    rm -Rf .git/refs/remotes/*


    3、gitlab中新建要一个名叫demo的项目

    4、设置remote分支,并push

    去掉默认远程仓库地址,把gitlab设置为默认远程库

    git remote rm origin

    git remote add origin ssh://git@192.168.224.134:30128/demo.git

    上传所有分支

    git push origin -all 

    ----------------------------------如果你的项目就只是用gitlab管理代码,到这里就可以了----------------------------------------


    5、如果有用gerrit代码审核工具,那么创建gerrit项目并同步gitlab的项目内容

    1)、创建名为demo的项目

    2)、gerrit采用docker部署,进入gerrit容器

    cd /var/gerrit/review_site/git

    rm -rf demo.git   //刚创建demo项目的git目录

    su-exec gerrit2 git clone --bare ssh://git@192.168.224.134:30128/demo.git   //gerrit2是在gitlab中新建demo项目后,添加的一个项目成员gerrit2

    3)、配置代码合并后自动同步gitlab代码

    跳转到同级目录etc/,修改配置文件replication.config

    cd ../etc/

    vi replication.config

    文件末尾加上:

    [remote "demo"]

    projects = demo

    url = ssh://git@192.168.224.134:30128/demo.git

    push = +refs/heads/*:refs/heads/*

    push = +refs/tags/*:refs/tags/*

    push = +refs/changes/*:refs/changes/*

    threads = 3

  • 相关阅读:
    python中的面向对象编程
    python global vs nonlocal (2)
    python3 nonlocal vs global
    poj蚂蚁问题
    C/C++ static vs global
    砝码问题
    Wythoff's game
    C++中的::operator new, ::operator delete
    客户信息表 自我汇总 待确认
    Oracle Savepoint
  • 原文地址:https://www.cnblogs.com/guxiong/p/11051078.html
Copyright © 2020-2023  润新知