svn遷移gitlab并保留空文件夾與提交記錄

獲取svn所有user
填寫svn倉庫根目錄地址,最后輸出svn用戶與git用戶映射關(guān)系

svn log https://xxxx/svn/xxxs -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2"@xxx.com>"}' | sort -u > ./svn2git.txt

clone代碼

git svn clone https://xxx/svn/xxx/ --stdlayout --no-metadata --authors-file=./svn2git.txt <dist_xxx_temp>

--stdlayout是使用svn標(biāo)準(zhǔn)目錄結(jié)構(gòu),即trunk、tags、branches這種結(jié)構(gòu)
--no-metadata是去除svn元數(shù)據(jù)信息
<dist_xxx_temp>處填入本地存儲(chǔ)路徑
clone過程中可能會(huì)出現(xiàn)用戶不存在的報(bào)錯(cuò),這種情況下請檢查svn2git.txt中是否包含該用戶,且格式是否正確。添加完畢后,執(zhí)行命令git svn fetch繼續(xù)即可。
調(diào)整分支
根據(jù)實(shí)際情況,將.git/refs/remotes/origin/tags下內(nèi)容挪到.git/refs/tags/,將.git/refs/remotes挪到.git/refs/heads/
執(zhí)行命令

git branch -r  #遠(yuǎn)程svn分支
git branch -l  #本地git分支
git tag -l  #本地git tag

檢查結(jié)果是否正確,不正確的話再調(diào)整分支也可。
push到gitlab
重設(shè)遠(yuǎn)程倉庫

git remote rm origin
git remote add origin http://xxxx/xxx.git

push到倉庫
注意:push遷請先解決空文件夾的問題

git push -u origin --all
git push -u origin --tags

解決空文件夾無法提交到git問題

find . -type d -empty -and -not -regex ./\.git.? -exec touch {}/.gitkeep \;

參考:

  1. Git 與其他系統(tǒng) - 遷移到 Git
  2. 將代碼庫從 SVN 遷移至 Git 并保留所有 commit 記錄
  3. SVN切換到Git方法及坑點(diǎn)
  4. SVN遷移Gitlab步驟
  5. gitlab上傳空文件夾
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容