• svn搬移到gitlab及使用


    GitLab安装

    #拉取gitlab镜像
    docker pull gitlab/gitlab-ce:latest
    #运行mygitlab容器
    docker run -d --hostname=xx.hostname.com -p 3443:443 -p 3000:80 -p 3022:22 --name=mygitlab --restart=on-failure:10 -v c:DockerConfiggitlabconfig:/etc/gitlab -v c:DockerConfiggitlablogs:/var/log/gitlab -v c:DockerConfiggitlabdata:/var/opt/gitlabr/log/gitlab gitlab/gitlab-ce:latest
    #进入mygitlab容器
    docker exec -it mygitlab /bin/bash
    #抓取mygitlab版本号
    cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
    #创建下载存放的目录
    mkdir tools
    #下载汉化文件
    git clone https://gitlab.com/xhang/gitlab.git  -b  v10.7.1-zh
    #停止gitlab
    gitlab-ctl stop
    #文件替换
    cp -r -f ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/
    #在复制过程中提示,以下信息是正常的
    cp: cannot overwrite non-directory '/opt/gitlab/embedded/service/gitlab-rails/log' with directory './gitlab/log'
    cp: cannot overwrite non-directory '/opt/gitlab/embedded/service/gitlab-rails/tmp' with directory './gitlab/tmp'
    #重新加载配置
    gitlab-ctl reconfigure
    #重新启动Gitlab
    gitlab-ctl restart

    汉化

    http://blog.51cto.com/passed/2073623

    https://blog.csdn.net/xiegh2014/article/details/78802591

    svn是一款非常简便,易用的源代码管理工具,用了这么多年,对它情有独钟。都说习惯最难改,那为何要搬移到gitlab上呢? 喜欢尝试新东西,前提还是git比较强大,svn有的它都有,svn没有的它也有。

      这次是把公司有7年历史的svn项目搬移到gitlab上,期间各种折腾,有几点原因:

         1、第一次使用git。

         2、gitlab托管到linux服务器上,对命令不熟悉。

         3、跟着前人的路走,以为这样能少走弯路,结果方法没对,没搞懂原理就跟随。

         4、svn服务器上很多历史版本已经损毁。

      后来才知道以上问题跟转移库其实没多大关系,刚开始都想的复杂了,接触“新事物”还是需要不断尝试,成功之后总结的步骤:

         1、安装工具:Git-1.9.0-preview20140217.exe、Git-1.7.0.2-preview20100309.exe

         2、转换现有svn为git库(所谓的克隆),任何一台机器上都可以操作,只要能访问到svn库所在的服务器。

         3、登录gitlab;创建项目库;拷贝项目库地址;切换到本地机器将本地克隆好的git库提交到gitlab上的项目库。

     

      克隆SVN库命令,克隆成功整个任务就已经完成90%了

    git svn clone svn_url --authors-file=c:users.txt 库保存路径

      svn_url:指定你的svn服务器地址, 如:http://×.×.×.×:88/svn/trd/trd_work/Carpa.NET

          库路径 : 如:D:gitcloneCarpaNET(指定克隆库保存路径)

      users.txt:存储svn账号与gitlab上账号的关联性,如下:

    复制代码
    VisualSVN Server = wssf2014<zqhym***@gmail.com>
    yqdong = yqdong<×××@163.com>
    user11 = yqdong<×××@163.com>
    yyong = yyong<×××@gmail.com>
    msfei = mashifei<×××fei@foxmail.com>
    ......
    ......

    格式: svn用户名 = git用户名<git用户对应的邮箱帐号>
      注意: svn里面有的账号必须要做关联,否则clone会失败.比如上面的user11找不到是哪个开发人员,也不知道它该对应哪个git账号,那就随便指定一个git账号就行了,这样做的目的其实就是将user11在svn里面的所有提交日志关联到yqdong的git账号下。 转到git之后,原svn账号就无关紧要,各司其职了。
     
      绑定user.txt的意义仅在于,将svn里面的提交者日志,注意是提交者,不是svn里面所有的用户信息都得关联,仅仅是往项目提交过代码的svn账号,将这些svn账号找出来,然后关联到现有的git账号,一旦转到git上之后,每个git用户就能看到自己过去在svn里面提交的日志,绕了这么大一圈,现在明白了吧?
     
    复制代码

     

    通过svn里面的log工具,可以找出svn项目里面所有的提交者,完成上面的user.txt(必须步骤,应该有命令),点击下图的“Show All”之后,按Author排序,就可以很方便的找出所有的提交者,然后做关联。

     

         注意:凡是执行了一次git svn clone命令,不管成功失败,第二次执行该命令前,请删除前一条命令中指定的库路径(避免重复,只要库路径不相同就可以)

        

         如果以上克隆没有遇到问题,那恭喜你已经成功了,不需要进行下一步。

      下一步

          问题在于svn_url对应的服务器本身,服务器有6w多条日志,其中部分日志已经损坏,导致整个克隆失败,而一次克隆命令至少要执行一个小时,上面有7年的log日志,是很宝贵的东西,因此无论如何也要想办法把它们抓出来。其实就是想删除1-6w条日志中部分有问题的日志,这样clone时候就不会出现中断的情况,这个方法亲自尝试过,非常之麻烦,不提倡这种做法,google半天没有找到别人的经验,这事反复折腾了Two days.

      后来发现git有合并功能,这下简单了,换了做法,不去纠结svn服务器的问题,只要git svn clone能执行就ok(毫无顾虑),其它事情就跟提交代码到git一样简单。

         新步骤:

         1、先克隆svn上1~5000版本号,存放到库1;  git svn clone -r0:5000 svn_url --authors-file=c:users.txt 库保存路径1(不能重复)

         2、克隆svn上5010~最新,存放到库2;         git svn clone -r5010:HEAD svn_url --authors-file=c:users.txt 库保存路径2(不能重复)

         3、将库1提交到分支1

         4、将库2提交到分支2

         5、本地合并分支1、2,合并分支的时候必然会有冲突,而且冲突不少,全部处理就行了,都是历史记录没什么影响。

         这样做就跳过了svn上某些版本导致无法克隆的问题,舍弃一小部分日志没影响,要顾全大局。

    git库推送图解:

    如果安装了工具,还是不能执行git svn clone命令,请乖乖设置环境变量吧!

    1、gitlab上创建Group.

    2、在group上创建project.

    3、copy服务器创建的git项目地址:

    4、进入本地库1所在路径,使用GitExtensions工具推送代码,同理操作库2、库3....

    5、合并库1和库2分支,最后提交.

    gitlab取代svn,势不可挡啊!!!看图!!!

    https://www.cnblogs.com/wssf2010/p/3728881.html

  • 相关阅读:
    Hadoop Combiner的三次测试...
    加了@Accessors(chain = true),copy实体类出现问题
    zookeeper启动:Could not find or load main class org.apache.zookeeper.server.quorum.
    CentOS7 更新yum源
    SpringBoot外部静态资源的访问
    从背包问题说起——初学者角度看背包问题
    C++ 常用STL数据类型总结归纳 简单易懂 入门 教程 array vector list deque map set stack
    1.4 HTML5新增的表单属性
    1.3 HTML5新增的input类型
    1.2 HTML5新增的多媒体标签
  • 原文地址:https://www.cnblogs.com/chuancheng/p/8965306.html
Copyright © 2020-2023  润新知