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

Repository Architecture

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

水銀給了你相當大的建庫自由度。由于合并是如此好用,你可以根據你的開發進度來維護一些特殊用途的倉庫

我們的菜單已經變的相當漂亮了:

圖1

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

圖2

數字的第一部分,13,很短也很方便。它只有一個問題……它不可靠!

當團隊里的人各自工作并且將其成果合并,那些短號是不同步的:

圖3

因此,我沒辦法跟人們說:“好吧,咱們來將版本轉移到變更集13上?!币驗槊總€人的13有可能是不同的。這就是為什么那個瘋狂的十六進制數存在的原因。

圖4

這個十六進制數在所有的倉庫中都是一致的并且永遠不會改變。好了,現在我們可以給大家說,“現在讓我們移動到變更集1b03ab783b17!但如果我們能給這個變更集一個名字豈不是更好嗎?”

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

圖5

我們現在來看看log:

圖6

注意到添加tag這個動作也形成了一個變更集,并且自動為我提交了。因此,我現在可以使用Version-1.0來表示1b03ab783b17。

接著開始開發Guac 2.0

圖7

提交:

圖8

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

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

圖9

現在可以解決他的問題:

圖10

并且:

圖11

水銀告訴我,我又創造了一個新的頭?,F在有兩個頭:2.0是我之前在上面工作的頭,1.1是我剛剛提交的頭。

圖12

現在我可以把這個1.1版本給客戶,然后回到version 2.0開始工作。

圖13

現在只有一個問題……解決的太咸的問題沒有放在2.0版本上。這該如何解決?

圖14
圖15

啊哦。我必須要合并標簽。這是水銀中的一個討厭的問題。這個問題就在于在水銀中,標簽只是一個叫.hgtags的文件,并且也在版本控制的范圍內。因此,你需要時不時地手動合并一下.hgtags這個文件。不管何時發生這個合并的動作,你要做的很簡單……即總是保證每一行對應到一個版本就行了。

圖16

剛剛所描述的是一種簡單的,回到歷史版本,修改,再合并到當前版本的一個方法。而事實上在軟件工程中,這樣的事幾乎隨時都在發生。因此,水銀提供了一個更加強健的方式來解決這一問題。

因此,我現在要撤銷1.0之后的所有工作,并且將倉庫返回到剛剛創建完1.0版本的時候。這樣,我就可以展示當工作在一個未來的版本時,如何修復客戶的問題。

圖17

想法是這樣的:我們將創立兩個倉庫,一個叫做stable,而另一個叫做dev

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

dev倉庫用于下一個版本的開發。

當1.0版本固定之后,就可以將stable克隆到dev中。

圖18

現在我就有兩個相等的倉庫了。

圖19

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

現在我們開始在dev這個倉庫里面工作:

圖20

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

圖21

將之標簽為1.1

圖22

現在呢,我們可以時不時地將stable中修改的問題拉到dev中:

圖23

這是我們現在做的:

圖24

如果你能理解上面的那張瘋狂的圖的話,那說明你水銀已經掌握地不錯了。要點就在于,stable倉庫中只有bug的修復,而dev倉庫中有新的代碼并且會將bug的修復合并進去。

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

  • 你可以建立一個團隊的倉庫,然后讓一些人在此基礎上開發一個新的功能。當它們結束工作,并且這個功能可以很好地運行之后,你可以將這個變更從團隊倉庫推送到主開發倉庫,這時所有的人都能看到這個新功能。
  • 你可以為測試人員建立一個QA的倉庫,你可以把你需要測試的代碼放到QA的倉庫中去(而不是直接放到主倉庫中去)。當測試通過之后,你可以將QA倉庫里的東西推送到主開發倉庫中去。通過這個方式,主倉庫中的代碼總是測試過的。
  • 由于每個開發人員都有它們自己的倉庫,因而你可以從你的朋友那兒clone一份過來做實驗。這樣就不會影響到整個團隊。

在大而復雜的組織中,你可以自由結合這些技巧,從而創建一堆互相關聯的倉庫。每個功能都要經歷測試和集成,它會被拉地越來越高直到最終你的新代碼可以被放到主倉庫中并且可以被客戶得到。

圖25

自測

以下是你讀完這篇教程之后應該能掌握的:

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

好了,本教程已經到達尾聲了。這個入門教程沒有覆蓋到水銀的方方面面,不過好在已經有非常多的資源可以引領你更深入地了解水銀。這里推薦一本覆蓋面較為全面的書給大家。


譯者行之寫在最后:

有簡友問水銀與Git的區別。其實,兩者都是分布式版本控制系統。應該說,大同小異而各有優勢。不過,如果你是像我這么不Geek的程序員,懶得在命令行里面打命令的話,可以試試水銀哦~總覺得Git是給人擺酷用的。要說簡單方便,還是水銀。

安裝水銀時可以直接安裝tortoisehg。光從圖形界面的使用舒適感來說,TortoiseHg確實要比TortoiseGit要好用一些。TortoiseHg的Workbench還是相當強大的。

圖26

另外,水銀開web服務也特別方便。特別適合局域網內的工作協同。

圖27

你可以讓任意一臺聯網的電腦在5秒鐘之內開啟服務,這樣其他人就可以訪問這臺電腦上的倉庫啦。

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

然而我想說的是,重要的是思想好嗎?這篇教程的重點在于用水銀希望的工作方式去思考。知道了這,你覺得還需要專門學TortoiseHg怎么用嗎?

所以,這里就不展開介紹TortoiseHg了。只留下四個字,給大家點信心。就是TortoiseHg特別好用!

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容