zoukankan      html  css  js  c++  java
  • svn迁移到gitlab

    Prerequisites:本机安装git 客户端

    迁移:

    1. 安装好git客户端,在指定文件夹下,右键,Git bash here进入git bash

               

             2. 建立users.txt(存储svn账号与gitlab上账号的关联性)

               格式: svn用户名 = git用户名,如:

               注意: svn里面有的账号必须要做关联,否则clone会失败。比如上面的user11找不到是哪个开发人员,也不知道它该对应哪个git账号,那就随便指定一个git账号就行了,这样做的目的其实就是将user11在svn里面的所有提交日志  关联到yqdong的git账号下。转到git之后,原svn账号就无关紧要,各司其职了。

               绑定 users.txt 的意义仅在于,将svn里面的提交者日志,注意是提交者,不是svn里面所有的用户信息都得关联,仅仅是往项目提交过代码的svn账号,将这些svn账号找出来,然后关联到现有的git账号,一旦转到git上之后,每个git用户就能看到自己过去在svn里面提交的日志,绕了这么大一圈,现在明白了吧?

              可以通过以下命令快速创建 users.txt

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

    注:URL是要迁移的svn项目地址
           

        3. 导出svn上的项目数据

    • git svn clone URL --trunk="trunk" --tags="tags" --branches="branches" --authors-file=./users.txt --no-metadata 

      注:URL是要迁移的svn项目地址  

    • 注:--trunk --tags --branches参数当且仅当要迁移项目有这些分支才添加。

            4. 添加GitLab到Git源信息

    git remote add origin URL

    注:目的地gitlab仓库地址

           5. 将trunk, branches等上传

    git push origin --all

    svn迁移gitlab(二)

    当svn仓库里有tag、branch时,会发现照着上面迁移gitlab上面是没有tag、branch,故迁移失败。研究发现在第3步导出svn上的项目之后,需要一点post-import(导入后) 清理工作。最起码的,应该清理一下git svn 创

    建的那些怪异的索引结构。首先要移动标签,把它们从奇怪的远程分支变成实际的标签,然后把剩下的分支移动到本地。

    • 要把标签变成合适的Git 标签,运行(选,如果有tag则执行)
      $ cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
      $ rm -Rf .git/refs/remotes/tags

      该命令将原本以tag/ 开头的远程分支的索引变成真正的(轻巧的)标签。

    • 把refs/remotes 下面剩下的索引变成本地分支  
      $ cp -Rf .git/refs/remotes/* .git/refs/heads/
      $ rm -Rf .git/refs/remotes

              现在所有的旧分支都变成真正的Git 分支,所有的旧标签也变成真正的Git 标签

  • 相关阅读:
    JavaScript 预解析
    JavaScript 作用域
    JavaScript 函数
    SlidesJS
    1. Skippr
    HTML5 模拟现实物理效果
    实现各种 CSS3 文本动画效果
    表单填写进度提示效果
    HTML5 WebGL 实现逼真的云朵效果
    【原创】bootstrap框架的学习 第八课 -[bootstrap表单]
  • 原文地址:https://www.cnblogs.com/vwater/p/10332838.html
Copyright © 2011-2022 走看看