多倉庫移植 MGit 管理 - 實(shí)操作

多倉庫移植 MGit 管理 - 實(shí)操作

MGit

MGit 是一款 Ruby 封裝的基于 Git 的多倉庫管理工具,可以高效的访惜、同時(shí)的對(duì)多個(gè) Git 倉庫執(zhí)行 Git 命令椿疗。 適合于在多個(gè)倉庫中進(jìn)行關(guān)聯(lián)開發(fā)的項(xiàng)目该肴,提高 Git 操作的效率葛假,避免逐個(gè)執(zhí)行 Git 命令帶來的誤操作風(fēng)險(xiǎn)障陶。
鏈接: <u>https://github.com/baidu/m-git/</u>

實(shí)操

一、準(zhǔn)備工作

  • 配置SSH
  • 安裝MGit工具
  • 拉取demo并體驗(yàn)

1桐款、配置SSH
需要特別說明 使用MGit方式必須要配置SSH咸这。

2夷恍、安裝 MGit 工具

環(huán)境要求:

  • 系統(tǒng):支持 macOS魔眨、Ubuntu,暫時(shí)不支持 Windows
  • Ruby版本: >= 2.3.7
$ gem install m-git

2酿雪、拉取demo并體驗(yàn)(初始化多倉庫—)

初始化多倉庫使用 mgit init 命令;

類似于 Git 從遠(yuǎn)程 clone 新倉庫, 會(huì)將多個(gè)倉庫 clone 到本地;

下面通過一個(gè) demo 體驗(yàn)一下 MGit 命令:

2.1 建議在一個(gè)新文件夾中拉取demo

$ mgit init -g https://github.com/baidu/m-git.git

2.2 體驗(yàn)一下mgit命令

$ mgit -l                 顯示所有mgit管理的倉庫
$ mgit branch --compact   查看多倉庫的分支
$ mgit status             產(chǎn)看倉庫分支超前/落后情況

二遏暴、已有倉庫遷移到MGit管理

1、根據(jù)文檔 配置 manifest.json 文件

配置manifest文件指黎,將要管理的倉庫按照規(guī)定的格式放到這個(gè)文件中朋凉。

經(jīng)過實(shí)測(cè),我的manifest.json文件如下:

{
    # 主倉庫git地址醋安,mainProject.git不需要寫
    "remote": "git@gitee.com:yxxxxxxe", 
    "version":1,
    "mgit-excluded": false,
    // 子倉庫的本地路徑可以在這里統(tǒng)一設(shè)置
    "dest": "../Developments",
    "repositories": {
        "MainProject": {
            // 主倉庫的本地路徑最好重新設(shè)置
            "abs-dest": "./",
            "remote-path": "mainProject.git",
            "config-repo": true
        },
        "SKSugarSwift": {
            "remote": "git@github.com:yxxxxxxe",
            "remote-path": "SKSugarSwift.git"
        }
    }
}

簡(jiǎn)單解釋一下注意事項(xiàng):

  • 需要注意的是杂彭,為方便管理,需要將主倉庫MainProjectabs-dest路徑吓揪,像文件中這樣設(shè)置為跟 manifest.json 同目錄下"abs-dest": "./"亲怠。
  • 如果主倉庫的 abs-dest 不重新設(shè)置,那么所有倉庫(主倉庫跟所有子倉庫)都將在 “../Developments” 路徑下柠辞。
  • 其它子倉庫的abs-dest可以不設(shè)置团秽,會(huì)自動(dòng)在“../Developments” 路徑下新建跟子倉庫同名的文件夾,將子倉庫的內(nèi)容放到里面叭首。
  • 當(dāng)然也可以不設(shè)置外層的dest字段习勤,即將dest字段留空,然后在主倉庫和所有子倉庫下的abs-dest字段設(shè)置本地路徑焙格。

注意:這里的目錄結(jié)構(gòu)跟demo中的目錄結(jié)構(gòu)不一致图毕。具體就是通過manifest.json文件設(shè)置的。

2眷唉、將manifest.json文件放到主倉庫的目錄下

  • 主倉庫也需要在manifest文件中配置予颤,并且需要將主倉庫的config-repo字段配置為true损肛,即 "config-repo": true
  • 其它倉庫稱為子倉庫荣瑟。

3治拿、測(cè)試

使用 mgit init -f manifest-path 命令測(cè)試 manifest.json 配置是否正常。
注意manifest-path 就是 manifest.json文件的路徑笆焰。

注意這個(gè)命令不會(huì)重復(fù)拉取主倉庫劫谅,只會(huì)拉取所有的子倉庫到當(dāng)前目錄,并在當(dāng)前目錄創(chuàng)建一個(gè).mgit文件夾

你可以在當(dāng)前目錄中看到每個(gè)倉庫的源碼嚷掠,他們的路徑可以通過 manifest.jsondest字段配置捏检。

你也可以在.mgit/source-git/ 下看到所有倉庫的.git, 這是 MGit 對(duì)所有倉庫的托管。

4不皆、提交manifest.json到遠(yuǎn)端倉庫

本地測(cè)試成功后贯城,你可以提交主倉庫中的 manifest.json,推送主倉庫的變更到遠(yuǎn)端霹娄。
可以連同.mgit隱藏文件夾一同推送能犯。

5、mgit方式管理

其實(shí)這里有2種使用方式犬耻,一是本地已經(jīng)有主倉庫了直接使用mgit踩晶,二是在新目錄下直接使用mgit拉取并管理。

5.1 直接使用

經(jīng)過第3步的測(cè)試枕磁,在manifest.json文件同目錄下已經(jīng)自動(dòng)生成了一個(gè).mgit的隱藏文件夾渡蜻,在這個(gè)同目錄下,就可以使用mgit命令了计济。

當(dāng)使用任何一個(gè)正確的 mgit 命令時(shí)茸苇,它就會(huì)先幫你拉取遠(yuǎn)端倉庫(如果本地路徑不存在的話)。

需要特別注意的是沦寂,如果本地已經(jīng)有主倉庫学密,并且子倉庫也在manifest.json文件配置的路徑中,那么在主倉庫中使用mgit命令時(shí)凑队,.mgit隱藏文件夾內(nèi)的source-git文件夾內(nèi)不會(huì)生成手動(dòng)下載的子倉庫的.git隱藏文件夾则果,因?yàn)?code>source-git這個(gè)文件夾用來保存著使用mgit命令下載的子倉庫的.git隱藏文件夾。

如果所有子倉庫都在對(duì)應(yīng)目錄下漩氨,甚至.mgit隱藏文件夾內(nèi)連source-git文件夾都不會(huì)自動(dòng)生成西壮,因?yàn)樗凶觽}庫都不是使用mgit命令自動(dòng)拉取的。

5.2 新目錄拉取

在一個(gè)新目錄或者新設(shè)備上叫惊,安裝了mgit之后款青,可以使用mgit的初始化倉庫命令拉取一套新的多倉庫在本地使用。

# mgit初始化多倉庫命令
$ mgit init -g 主倉庫地址
6霍狰、本地配置表 local_manifest 只共同操作特定子倉庫

如果本地只需要操作某幾個(gè)子倉庫抡草,其它倉庫不需操作饰及,可以通過創(chuàng)建local_manifest.json臨時(shí)修改多倉庫配置,在不修改manifest.json的情況下對(duì)配置進(jìn)行調(diào)整康震,達(dá)到只操作某幾個(gè)子倉庫的目的燎含。

將字段mgit-excluded設(shè)置為false,即"mgit-excluded": false腿短。

local_manifest的創(chuàng)建和配置方式請(qǐng)查看鏈接中的3.本地配置表local_manifest屏箍。
https://github.com/baidu/m-git/blob/master/docs/config/manifest.md

bug 2023-04-08

在實(shí)踐過程中,發(fā)現(xiàn)一個(gè)bug
1橘忱、使用 mgit init -g xxxxx.git 命令時(shí)赴魁,生成的本地目錄結(jié)構(gòu)與 manifest.json 中描述的不一致!

2钝诚、然后再次使用正確的 mgit 命令(如 mgit status)颖御,或者本地本來就有主工程,然后移植到 mgit 管理的話凝颇,就會(huì)自動(dòng)拉取子倉庫潘拱,這時(shí)候本地目錄結(jié)構(gòu)就與 manifest.json 中描述的一致了。

詳見提的 issue:https://github.com/baidu/m-git/issues/14

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祈噪,一起剝皮案震驚了整個(gè)濱河市泽铛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辑鲤,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杠茬,死亡現(xiàn)場(chǎng)離奇詭異月褥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瓢喉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門宁赤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人栓票,你說我怎么就攤上這事决左。” “怎么了走贪?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵佛猛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我坠狡,道長(zhǎng)继找,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任逃沿,我火速辦了婚禮婴渡,結(jié)果婚禮上幻锁,老公的妹妹穿的比我還像新娘。我一直安慰自己边臼,他們只是感情好哄尔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柠并,像睡著了一般究飞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堂鲤,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天亿傅,我揣著相機(jī)與錄音,去河邊找鬼瘟栖。 笑死葵擎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的半哟。 我是一名探鬼主播酬滤,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼寓涨!你這毒婦竟也來了盯串?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤戒良,失蹤者是張志新(化名)和其女友劉穎体捏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糯崎,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峡捡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年陈莽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坷虑,死狀恐怖范嘱,靈堂內(nèi)的尸體忽然破棺而出茎芭,到底是詐尸還是另有隱情漱凝,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布惰瓜,位于F島的核電站否副,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鸵熟。R本人自食惡果不足惜副编,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痹届,春花似錦呻待、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柴淘,卻和暖如春迫淹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背为严。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工敛熬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人第股。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓应民,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親夕吻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诲锹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容