GitLab代碼遷移復(fù)盤

背景:公司由于一些問題,需要將外網(wǎng)GitLab上的代碼遷移至內(nèi)網(wǎng)GitLab,中間遇到一些坑在此記錄一下。

1.Git兩種協(xié)議及適應(yīng)場(chǎng)景

一個(gè)Git項(xiàng)目最重要的文件是.git文件,對(duì)代碼的操作其實(shí)是對(duì).git文件的操作(如拉取代碼,推送代碼等)。Git常用的兩種協(xié)議:SSH或HTTPS,我將根據(jù)自己的理解,說說這兩種協(xié)議各自應(yīng)用場(chǎng)景;

HTTPS:每次訪問都要求輸入用戶名和密碼,可在文件中保存密碼防止重復(fù)輸入

設(shè)置git config --global credential.helper store,默認(rèn)會(huì)在用戶目錄下創(chuàng)建.git-credentials文件,里面保存賬戶名和密碼;取消保存:git config --global credential.helper "",也可以直接修改.gitconfig文件中對(duì)應(yīng)屬性值;

訪問鏈接:https://gitlab.com/dlstone/test.git

或者 https://username:password@gitlab.com/dlstone/test.git(URL中攜帶用戶名和密碼)

適合場(chǎng)景:不同項(xiàng)目在同一repository中有相同賬號(hào)名和密碼;

SSH:使用公私鑰來訪問,使用ssh-keygen生成

設(shè)置ssh-keygen參考鏈接:

創(chuàng)建密鑰:https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

配置密鑰:https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

訪問格式:git@gitlab.com:dlstone/test.git

適合場(chǎng)景:不同項(xiàng)目在不同repository中有不同賬號(hào)名和密碼;

2.GitLab項(xiàng)目導(dǎo)入

新建項(xiàng)目,選擇Import project from?Git repository URL,按照給出的樣例拼接URL即可;

遇到問題:新建項(xiàng)目每個(gè)導(dǎo)入選項(xiàng)都有詳細(xì)說明,在不熟悉的情況下,沒有研究每個(gè)選項(xiàng)的具體作用就直接動(dòng)手實(shí)踐,導(dǎo)致浪費(fèi)了不少時(shí)間。以后在類似的場(chǎng)景,首先應(yīng)該研究每個(gè)導(dǎo)入功能的適用場(chǎng)景,從中選擇最佳實(shí)踐。

3.wiki遷移

1.將需要遷移的wiki內(nèi)容clone到本地;

2.將新項(xiàng)目的wiki內(nèi)容clone到本地;

3.拷貝wiki內(nèi)容至新項(xiàng)目并提交;

wiki拷貝遷移有個(gè)問題,以往的提交日志丟失;wiki與工程倉(cāng)庫(kù)是兩個(gè)獨(dú)立的.git文件,需要區(qū)分兩者的差別;

4.應(yīng)用部署腳本中倉(cāng)庫(kù)地址替換

遇到的問題:遷移的項(xiàng)目工程多,每個(gè)工程的部署腳本都需要修改,可使用sed,grep命令來批量替換字符串(MAC適用);?

替換單個(gè)文本中字符串:sed -i "" "s/{regular_expression}/{replacement}/g" test.txt

替換當(dāng)前目錄下匹配的字符串:sed -i "" "s/{regular_expression}/{replacement}/g" `grep "{regular_expression}" -rl ./`

5.Git Submodule處理

添加:對(duì)于主工程來說添加submodule就像添加一個(gè)文件,所以需要 add 并 commit

添加submodule:git submodule add https://gitlab.com/dlstone/child.git

添加當(dāng)前目錄下所有文件:git add .?

提交本地:git commit -m "add submodule"? ?

push到服務(wù)器:git push origin maser?

clone:與普通文本不一樣,對(duì)于含有submodule的工程需要做特殊處理

?clone代碼:git clone https://gitlab.com/dlstone/test.git

子工程初始化:git submodule init? ?

查看狀態(tài):git submodule?

更新:git submodule update --remote

更新:submodule有更新,首先將submodule工程的修改提交,然后根據(jù)以下步驟更新主工程

更新:git submodule update --remote? ?

添加當(dāng)前目錄下所有文件:git add .?

提交本地:git commit -m "add submodule"? ?

push到服務(wù)器:git push origin maser?

5.Jenkins配置修改

修改Repositories地址和認(rèn)證

修改submodule配置

刪除部署腳本中的submodule命令,不刪除會(huì)報(bào)錯(cuò)(第2步已配置,可刪除)

最后編輯于
?著作權(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)容