svn遷移到git那些事

最近項(xiàng)目要求需要把項(xiàng)目從svn遷移到git,并保留原來的一些提交修改記錄。在此做個(gè)記錄,說一下遷移步驟:
網(wǎng)上有很多的教程,基本步驟差不多大多數(shù)都可以搞定,但是在遷移過程中也會(huì)遇到一些坑。
可以有兩種遷移辦法:
1、不需要以前的提交紀(jì)錄:這種最簡(jiǎn)單,只需在git或是gitLab上創(chuàng)建自己的倉庫;然后使用git clone命令獲取遠(yuǎn)程倉庫到本地;將現(xiàn)在的工程拖放入倉庫內(nèi);使用git add . & git commit -m "注釋" & git push origin master 就可以將本地的工程提交到git遠(yuǎn)程倉庫與組內(nèi)人員共享。
2、完全遷移,包括以前的所有提交記錄:
(1)羅列出當(dāng)前倉庫里的svn用戶的信息,并重定向到user.txt中

 svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > users.txt

ps:這個(gè)步驟有可能會(huì)出錯(cuò),得到的users.txt里的信息不完全,只有用戶名,么有相對(duì)應(yīng)的郵箱,這樣在下邊的步驟沒法執(zhí)行

我得到的格式:yourname=
正確格式:yourname=yourname<youremail>

只有格式正確后才可有效執(zhí)行步驟(2)

(2)將倉庫克隆到本地

   git svn clone svn地址  --authors-file=users.txt --no-metadata 

(3)從svn獲取更新

    git svn fetch
    git checkout master
    git svn rebase

(4)處理分支及標(biāo)簽

    標(biāo)簽
    cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
    rm -Rf .git/refs/remotes/origin/tags

    分支
    cp -Rf .git/refs/remotes/* .git/refs/heads/
    rm -Rf .git/refs/remotes

(5)添加git遠(yuǎn)程倉庫的地址

    git remote add origin git@my-git-server:yourProjectName.git

(6)推送到遠(yuǎn)程

    git push origin --all

至此就把svn的工程全部遷移到git服務(wù)器,但是打開git發(fā)現(xiàn)里邊有兩個(gè)分支,分別是master和git-svn,以前的提交記錄早期的大都是在git-svn這個(gè)鏡像上,并沒有全部在master上,此處沒有去深究。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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