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

Setting Up for a Team

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

使用水銀的好處之一是可以使一個團隊協同工作。水銀使得你們可以單獨地工作,然后把你們的更改合并到一起。
使用水銀來協同工作的最普遍的方法就是在我們的個人計算機之外,再建立一個中央倉庫。我們可以把中央倉庫作為一個交換區,從而來得知大家都作了哪些更改。

圖1

建立中央倉庫的最簡單粗暴的辦法就是在服務器上,用hg init命令。并且使用hg serve命令使之成為web服務端。默認地,該服務的端口號為8000.

圖2

由于這臺電腦的名字叫做joel.example.com,因此可以通過網址http://joel.example.com:8000/來登錄。

圖3

中央web服務端運行之后,我就可以從將這個倉庫從服務器端拷貝到我的電腦上為我所用了。這個倉庫現在是空著的,因此我也只拷貝到了空的倉庫。

圖4

現在我要建立一個叫做guac的文件。

圖5

我添加這個文件,然后提交,以作為第一個官方版本。

圖6

我會提供一個提交注釋:


圖7

我快快地做些許改變,使得我們的倉庫也有些歷史:

圖8

現在提交變更:

圖9

看,我提交的時候用了-m這個參數。這是在命令行直接寫提交信息的方法。

OK。現在我們到哪里了呢?我們建立了中心倉庫,并且復制到了本地電腦上。然后做了兩個變更并且提交了。然而那些變更只是在我的本機上——它們還沒有出現于中心倉庫呢。因此,現在水銀的世界看上去是這樣的:

圖10

現在,我們要使用hg push這個命令,來把我的變更推到中心倉庫中:

圖11

很好。然而似乎不行。這里有一個安全性的考量,看看是不是要讓全世界的人都可以把它們的變更推送到中心倉庫中。可以通過編輯服務端的.hg\hgrc來配置。

圖12

當然,這樣做是不安全的。然而如果你的工作環境是一個被保護的比較好的局域網,并且該局域網中的同事是值得信賴的,那么這樣做也是可以的。否則的話,你需要去讀一下有關安全的章節。

好了,現在重啟服務。


圖13

現在就可以推送了:


圖14

現在,水銀的世界看起來就是這樣:

圖15

我知道你在想什么,你在想,“很奇怪啊,為什么這些倉庫中只有變更信息而沒有文件?guac文件在哪里?

是的,很奇怪。然而分布式版本控制器就是這么工作的。倉庫中只包含了變更棧。

我們可以使用網頁瀏覽器來一瞥現在的中心倉庫:

圖16

現在我想要Rose來幫忙我的工作。Rose在測試組。

圖17

Rose使用hg clone命令來獲得她自己的完整的倉庫拷貝。hg clone命令帶兩個參數。一個是倉庫的源地址,一個是目標文件夾的名字。她現在構建了她自己的recipes文件夾。

圖18

利用hg log命令,她看到了所有的歷史。她實際上下載了整個倉庫,包含了在這個倉庫發生的所有歷史。

Rose將要完成一個變更,并且提交到中心倉庫:

圖19

她現在進行提交。注意,即使服務器沒有運行,提交的過程也能在她的機器上完成。

圖20

當Rose在進行她的變更之時,我也可以在同時進行我的變更。

圖21

當我提交的時候,你會發現我的變更集#2與Rose的變更集#2并不相同。

圖22

我們的歷史開始分離。

圖23

不用擔心……過一會兒我們就會看到如何將這些分離的變更合到一起。

Rose可以在離線狀態繼續她的工作。只要愿意,她可以作出任意多的變更,然后提交也可以,revert也可以。直到在某一時刻,她想要與外界分享她提交的內容。她可以輸入hg outgoing來顯示她可以上傳到中心倉庫的所有變更集。如果她再輸入hg push,則這些變更集會全部上傳到中心倉庫中。

圖24

可以這樣來認識hg outgoing:它就是簡單地列出當前倉庫有,而中心倉庫沒有的。

OK,Rose推送了她的變更。

圖25

現在水銀的世界變成了這樣:

圖26

當我從當天的第四個拿鐵休息中回來,我也準備要推送我的變更了。

圖27

啊……失敗了!順便要說的是,看到那條信息了嗎?就是那條說要用push -f to force的那條。那是一條很糟糕的建議。永遠永遠不要使用push -f來強制推送。否則你會后悔的。請暫時相信我。

Rose能推送成功而我卻失敗了的原因是,我們兩個人都做出了變更,而她先我一步推送了。現在需要先進行合并。而水銀知道這一點。

我現在要做的是獲取那些在中心倉庫中有的,而我沒有的。從而我可以合并它們。

圖28

上面有一個+1heads。這個意思是我之前就一條主線,現在變成有兩條線了,變成了有兩個頭的怪物。就像這樣:

圖29

現在在我的倉庫里面有兩個版本了……我有我的版本:

圖30

還有Rose的版本:

圖31

現在要我來合并它們。幸運的是,這很簡單。

圖32

看,hg merge命令將我的兩個頭合并到了一起。在當前的情況下,由于我們是分別編輯的文件的不同部分,因此根本沒有任何沖突。

我還需要提交一下。這很重要。如果合并失敗了,我也總能回滾并且再次嘗試。由于合并很成功,我打算提交它。然后我就可以將我的變更推送到中心倉庫了。

圖33

現在中心倉庫的內容就和我做的同步了:

圖34

OK,現在我有了Rose的變更,以及我的變更,然而Rose卻還沒有我的變更。
Rose這時需要拉下倉庫中的最新版本。

圖35

然后你會感到有一點奇怪。因為即使Rose將新的變更都拉到了她的倉庫中,它們竟然沒有出現在她的工作目錄中。

圖36

然而在她的倉庫中其實是有新的變更的……

圖37

它們不再她的工作目錄中是因為她仍然在變更集#2上工作。你可以通過“parent”命令來看到。

圖38

水銀總是對我們很友好。它保證我們拉的很安全;它所做的就是給我們其他人做的最新的變更。我們可以在自己方便的時候再轉換過去。

記住,不帶任何參數的hg up命令會將工作目錄更新到最高的變更集。在此例中為數字4:

圖39

當一個團隊在工作時,你的工作流看起來大概是這樣的:

  1. 如果你一段時間沒搞了,那么就先去獲得最新的版本:
    • hg pull
    • hg up
  2. 做一些變更
  3. 提交它們(本地)
  4. 重復步驟2-3直到你滿意了并且想要與他人的工作合并
  5. 當你準備好要分享時:
    • hg pull來獲得別人的變更(如果有的話)
    • hg merge來將它們合并到你的里面
    • 測試!保證合并沒有把什么事情變糟
    • hg push

自測

以下是你學完這篇教程后應該會做的:

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

推薦閱讀更多精彩內容