分布式版本控制軟件水銀(Mercurial)使用指南5(完)

Repository Architecture

翻譯自:http://hginit.com/05.html

水銀給了你相當(dāng)大的建庫自由度驮瞧。由于合并是如此好用醉冤,你可以根據(jù)你的開發(fā)進(jìn)度來維護(hù)一些特殊用途的倉庫

我們的菜單已經(jīng)變的相當(dāng)漂亮了:

圖1

我們來更加仔細(xì)地看一看變更集的序號:

圖2

數(shù)字的第一部分桃熄,13卦停,很短也很方便弦悉。它只有一個問題……它不可靠耿戚!

當(dāng)團(tuán)隊(duì)里的人各自工作并且將其成果合并湿故,那些短號是不同步的:

圖3

因此,我沒辦法跟人們說:“好吧膜蛔,咱們來將版本轉(zhuǎn)移到變更集13上坛猪。”因?yàn)槊總€人的13有可能是不同的飞几。這就是為什么那個瘋狂的十六進(jìn)制數(shù)存在的原因砚哆。

圖4

這個十六進(jìn)制數(shù)在所有的倉庫中都是一致的并且永遠(yuǎn)不會改變。好了屑墨,現(xiàn)在我們可以給大家說躁锁,“現(xiàn)在讓我們移動到變更集1b03ab783b17!但如果我們能給這個變更集一個名字豈不是更好嗎卵史?”

是的战转,你可以這么做。這叫tag以躯。

圖5

我們現(xiàn)在來看看log:

圖6

注意到添加tag這個動作也形成了一個變更集槐秧,并且自動為我提交了。因此忧设,我現(xiàn)在可以使用Version-1.0來表示1b03ab783b17刁标。

接著開始開發(fā)Guac 2.0

圖7

提交:

圖8

“太咸了!”有顧客抱怨址晕。

這時我們可以用hg up命令回到Version-1.0版本

圖9

現(xiàn)在可以解決他的問題:

圖10

并且:

圖11

水銀告訴我膀懈,我又創(chuàng)造了一個新的頭。現(xiàn)在有兩個頭:2.0是我之前在上面工作的頭谨垃,1.1是我剛剛提交的頭启搂。

圖12

現(xiàn)在我可以把這個1.1版本給客戶,然后回到version 2.0開始工作刘陶。

圖13

現(xiàn)在只有一個問題……解決的太咸的問題沒有放在2.0版本上胳赌。這該如何解決?

圖14
圖15

啊哦匙隔。我必須要合并標(biāo)簽疑苫。這是水銀中的一個討厭的問題。這個問題就在于在水銀中,標(biāo)簽只是一個叫.hgtags的文件缀匕,并且也在版本控制的范圍內(nèi)纳决。因此,你需要時不時地手動合并一下.hgtags這個文件乡小。不管何時發(fā)生這個合并的動作阔加,你要做的很簡單……即總是保證每一行對應(yīng)到一個版本就行了。

圖16

剛剛所描述的是一種簡單的满钟,回到歷史版本胜榔,修改,再合并到當(dāng)前版本的一個方法湃番。而事實(shí)上在軟件工程中夭织,這樣的事幾乎隨時都在發(fā)生。因此吠撮,水銀提供了一個更加強(qiáng)健的方式來解決這一問題尊惰。

因此,我現(xiàn)在要撤銷1.0之后的所有工作泥兰,并且將倉庫返回到剛剛創(chuàng)建完1.0版本的時候弄屡。這樣,我就可以展示當(dāng)工作在一個未來的版本時鞋诗,如何修復(fù)客戶的問題膀捷。

圖17

想法是這樣的:我們將創(chuàng)立兩個倉庫,一個叫做stable削彬,而另一個叫做dev全庸。

叫做stable的倉庫裝著我們給客戶發(fā)布的最新的主版本。不論何時你需要修復(fù)一個緊急的bug融痛,你就在stable里面做壶笼。

dev倉庫用于下一個版本的開發(fā)。

當(dāng)1.0版本固定之后雁刷,就可以將stable克隆到dev中拌消。

圖18

現(xiàn)在我就有兩個相等的倉庫了。

圖19

由于一直到變更集14安券,這些倉庫的歷史都是一樣的。因此水銀會使用一個叫“硬鏈接”的技巧來避免在硬盤中存放兩個拷貝氓英。這使得hg clone操作非澈蠲悖快速而低耗,因而可以放心地在本地克隆許多倉庫铝阐。

現(xiàn)在我們開始在dev這個倉庫里面工作:

圖20

并且在stable倉庫中修改了鹽的問題:

圖21

將之標(biāo)簽為1.1

圖22

現(xiàn)在呢址貌,我們可以時不時地將stable中修改的問題拉到dev中:

圖23

這是我們現(xiàn)在做的:

圖24

如果你能理解上面的那張瘋狂的圖的話,那說明你水銀已經(jīng)掌握地不錯了。要點(diǎn)就在于练对,stable倉庫中只有bug的修復(fù)遍蟋,而dev倉庫中有新的代碼并且會將bug的修復(fù)合并進(jìn)去。

使用多個倉庫的情景還有一些:

  • 你可以建立一個團(tuán)隊(duì)的倉庫螟凭,然后讓一些人在此基礎(chǔ)上開發(fā)一個新的功能虚青。當(dāng)它們結(jié)束工作,并且這個功能可以很好地運(yùn)行之后螺男,你可以將這個變更從團(tuán)隊(duì)倉庫推送到主開發(fā)倉庫棒厘,這時所有的人都能看到這個新功能。
  • 你可以為測試人員建立一個QA的倉庫下隧,你可以把你需要測試的代碼放到QA的倉庫中去(而不是直接放到主倉庫中去)奢人。當(dāng)測試通過之后,你可以將QA倉庫里的東西推送到主開發(fā)倉庫中去淆院。通過這個方式何乎,主倉庫中的代碼總是測試過的。
  • 由于每個開發(fā)人員都有它們自己的倉庫土辩,因而你可以從你的朋友那兒clone一份過來做實(shí)驗(yàn)支救。這樣就不會影響到整個團(tuán)隊(duì)。

在大而復(fù)雜的組織中脯燃,你可以自由結(jié)合這些技巧搂妻,從而創(chuàng)建一堆互相關(guān)聯(lián)的倉庫。每個功能都要經(jīng)歷測試和集成辕棚,它會被拉地越來越高直到最終你的新代碼可以被放到主倉庫中并且可以被客戶得到欲主。

圖25

自測

以下是你讀完這篇教程之后應(yīng)該能掌握的:

  1. 給版本打上版本號,并且能夠回到這個版本
  2. 用“stable”倉庫和“dev”倉庫來組織你的團(tuán)隊(duì)

好了逝嚎,本教程已經(jīng)到達(dá)尾聲了扁瓢。這個入門教程沒有覆蓋到水銀的方方面面,不過好在已經(jīng)有非常多的資源可以引領(lǐng)你更深入地了解水銀补君。這里推薦一本覆蓋面較為全面的書給大家引几。


譯者行之寫在最后:

有簡友問水銀與Git的區(qū)別。其實(shí)挽铁,兩者都是分布式版本控制系統(tǒng)伟桅。應(yīng)該說,大同小異而各有優(yōu)勢叽掘。不過楣铁,如果你是像我這么不Geek的程序員,懶得在命令行里面打命令的話更扁,可以試試水銀哦~總覺得Git是給人擺酷用的盖腕。要說簡單方便赫冬,還是水銀。

安裝水銀時可以直接安裝tortoisehg溃列。光從圖形界面的使用舒適感來說劲厌,TortoiseHg確實(shí)要比TortoiseGit要好用一些。TortoiseHg的Workbench還是相當(dāng)強(qiáng)大的听隐。

圖26

另外补鼻,水銀開web服務(wù)也特別方便。特別適合局域網(wǎng)內(nèi)的工作協(xié)同遵绰。

圖27

你可以讓任意一臺聯(lián)網(wǎng)的電腦在5秒鐘之內(nèi)開啟服務(wù)辽幌,這樣其他人就可以訪問這臺電腦上的倉庫啦。

可能有人會問椿访,既然TortoiseHg這么好用乌企,直接教怎么用TortoiseHg就好啦,干嗎給這么一堆命令行教程成玫?

然而我想說的是加酵,重要的是思想好嗎脖祈?這篇教程的重點(diǎn)在于用水銀希望的工作方式去思考毕源。知道了這,你覺得還需要專門學(xué)TortoiseHg怎么用嗎馏颂?

所以钦勘,這里就不展開介紹TortoiseHg了陋葡。只留下四個字,給大家點(diǎn)信心彻采。就是TortoiseHg特別好用腐缤!

最后,我想給自己留一條后路肛响。也就是想告訴大家岭粤,雖然我翻譯這教程有頂水銀損Git之嫌。但是特笋,我最近也確實(shí)在嘗試使用Git~畢竟人家有時候還是想裝一下Geek的:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剃浇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猎物,更是在濱河造成了極大的恐慌虎囚,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔫磨,死亡現(xiàn)場離奇詭異溜宽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)质帅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人煤惩,你說我怎么就攤上這事嫉嘀。” “怎么了魄揉?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵剪侮,是天一觀的道長。 經(jīng)常有香客問我洛退,道長瓣俯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任兵怯,我火速辦了婚禮彩匕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘媒区。我一直安慰自己驼仪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布袜漩。 她就那樣靜靜地躺著绪爸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宙攻。 梳的紋絲不亂的頭發(fā)上奠货,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機(jī)與錄音座掘,去河邊找鬼递惋。 笑死,一個胖子當(dāng)著我的面吹牛雹顺,可吹牛的內(nèi)容都是我干的丹墨。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼嬉愧,長吁一口氣:“原來是場噩夢啊……” “哼贩挣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起没酣,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤王财,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后裕便,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绒净,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年偿衰,在試婚紗的時候發(fā)現(xiàn)自己被綠了挂疆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片改览。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缤言,靈堂內(nèi)的尸體忽然破棺而出宝当,到底是詐尸還是另有隱情,我是刑警寧澤胆萧,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布庆揩,位于F島的核電站,受9級特大地震影響跌穗,放射性物質(zhì)發(fā)生泄漏订晌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一蚌吸、第九天 我趴在偏房一處隱蔽的房頂上張望锈拨。 院中可真熱鬧,春花似錦套利、人聲如沸推励。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽验辞。三九已至,卻和暖如春喊衫,著一層夾襖步出監(jiān)牢的瞬間跌造,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工族购, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壳贪,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓寝杖,卻偏偏與公主長得像违施,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瑟幕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

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