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 標簽


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM