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

Setting Up for a Team

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

使用水銀的好處之一是可以使一個(gè)團(tuán)隊(duì)協(xié)同工作。水銀使得你們可以單獨(dú)地工作乙埃,然后把你們的更改合并到一起。
使用水銀來(lái)協(xié)同工作的最普遍的方法就是在我們的個(gè)人計(jì)算機(jī)之外,再建立一個(gè)中央倉(cāng)庫(kù)茅撞。我們可以把中央倉(cāng)庫(kù)作為一個(gè)交換區(qū)秉颗,從而來(lái)得知大家都作了哪些更改。

圖1

建立中央倉(cāng)庫(kù)的最簡(jiǎn)單粗暴的辦法就是在服務(wù)器上澜建,用hg init命令向挖。并且使用hg serve命令使之成為web服務(wù)端。默認(rèn)地炕舵,該服務(wù)的端口號(hào)為8000.

圖2

由于這臺(tái)電腦的名字叫做joel.example.com何之,因此可以通過(guò)網(wǎng)址http://joel.example.com:8000/來(lái)登錄。

圖3

中央web服務(wù)端運(yùn)行之后咽筋,我就可以從將這個(gè)倉(cāng)庫(kù)從服務(wù)器端拷貝到我的電腦上為我所用了溶推。這個(gè)倉(cāng)庫(kù)現(xiàn)在是空著的,因此我也只拷貝到了空的倉(cāng)庫(kù)奸攻。

圖4

現(xiàn)在我要建立一個(gè)叫做guac的文件蒜危。

圖5

我添加這個(gè)文件,然后提交睹耐,以作為第一個(gè)官方版本辐赞。

圖6

我會(huì)提供一個(gè)提交注釋?zhuān)?/p>

圖7

我快快地做些許改變,使得我們的倉(cāng)庫(kù)也有些歷史:

圖8

現(xiàn)在提交變更:

圖9

看硝训,我提交的時(shí)候用了-m這個(gè)參數(shù)响委。這是在命令行直接寫(xiě)提交信息的方法新思。

OK。現(xiàn)在我們到哪里了呢晃酒?我們建立了中心倉(cāng)庫(kù)表牢,并且復(fù)制到了本地電腦上。然后做了兩個(gè)變更并且提交了贝次。然而那些變更只是在我的本機(jī)上——它們還沒(méi)有出現(xiàn)于中心倉(cāng)庫(kù)呢崔兴。因此,現(xiàn)在水銀的世界看上去是這樣的:

圖10

現(xiàn)在蛔翅,我們要使用hg push這個(gè)命令敲茄,來(lái)把我的變更推到中心倉(cāng)庫(kù)中:

圖11

很好。然而似乎不行山析。這里有一個(gè)安全性的考量堰燎,看看是不是要讓全世界的人都可以把它們的變更推送到中心倉(cāng)庫(kù)中∷窆欤可以通過(guò)編輯服務(wù)端的.hg\hgrc來(lái)配置秆剪。

圖12

當(dāng)然,這樣做是不安全的爵政。然而如果你的工作環(huán)境是一個(gè)被保護(hù)的比較好的局域網(wǎng)仅讽,并且該局域網(wǎng)中的同事是值得信賴(lài)的,那么這樣做也是可以的钾挟。否則的話(huà)洁灵,你需要去讀一下有關(guān)安全的章節(jié)。

好了掺出,現(xiàn)在重啟服務(wù)徽千。


圖13

現(xiàn)在就可以推送了:


圖14

現(xiàn)在,水銀的世界看起來(lái)就是這樣:

圖15

我知道你在想什么汤锨,你在想双抽,“很奇怪啊,為什么這些倉(cāng)庫(kù)中只有變更信息而沒(méi)有文件闲礼?guac文件在哪里荠诬?

是的,很奇怪位仁。然而分布式版本控制器就是這么工作的柑贞。倉(cāng)庫(kù)中只包含了變更棧。

我們可以使用網(wǎng)頁(yè)瀏覽器來(lái)一瞥現(xiàn)在的中心倉(cāng)庫(kù):

圖16

現(xiàn)在我想要Rose來(lái)幫忙我的工作聂抢。Rose在測(cè)試組钧嘶。

圖17

Rose使用hg clone命令來(lái)獲得她自己的完整的倉(cāng)庫(kù)拷貝。hg clone命令帶兩個(gè)參數(shù)琳疏。一個(gè)是倉(cāng)庫(kù)的源地址有决,一個(gè)是目標(biāo)文件夾的名字闸拿。她現(xiàn)在構(gòu)建了她自己的recipes文件夾。

圖18

利用hg log命令书幕,她看到了所有的歷史新荤。她實(shí)際上下載了整個(gè)倉(cāng)庫(kù),包含了在這個(gè)倉(cāng)庫(kù)發(fā)生的所有歷史台汇。

Rose將要完成一個(gè)變更苛骨,并且提交到中心倉(cāng)庫(kù):

圖19

她現(xiàn)在進(jìn)行提交。注意苟呐,即使服務(wù)器沒(méi)有運(yùn)行痒芝,提交的過(guò)程也能在她的機(jī)器上完成。

圖20

當(dāng)Rose在進(jìn)行她的變更之時(shí)牵素,我也可以在同時(shí)進(jìn)行我的變更严衬。

圖21

當(dāng)我提交的時(shí)候,你會(huì)發(fā)現(xiàn)我的變更集#2與Rose的變更集#2并不相同笆呆。

圖22

我們的歷史開(kāi)始分離请琳。

圖23

不用擔(dān)心……過(guò)一會(huì)兒我們就會(huì)看到如何將這些分離的變更合到一起。

Rose可以在離線(xiàn)狀態(tài)繼續(xù)她的工作赠幕。只要愿意俄精,她可以作出任意多的變更,然后提交也可以劣坊,revert也可以。直到在某一時(shí)刻屈留,她想要與外界分享她提交的內(nèi)容局冰。她可以輸入hg outgoing來(lái)顯示她可以上傳到中心倉(cāng)庫(kù)的所有變更集。如果她再輸入hg push灌危,則這些變更集會(huì)全部上傳到中心倉(cāng)庫(kù)中康二。

圖24

可以這樣來(lái)認(rèn)識(shí)hg outgoing:它就是簡(jiǎn)單地列出當(dāng)前倉(cāng)庫(kù)有,而中心倉(cāng)庫(kù)沒(méi)有的勇蝙。

OK沫勿,Rose推送了她的變更。

圖25

現(xiàn)在水銀的世界變成了這樣:

圖26

當(dāng)我從當(dāng)天的第四個(gè)拿鐵休息中回來(lái)味混,我也準(zhǔn)備要推送我的變更了产雹。

圖27

啊……失敗了!順便要說(shuō)的是翁锡,看到那條信息了嗎蔓挖?就是那條說(shuō)要用push -f to force的那條。那是一條很糟糕的建議馆衔。永遠(yuǎn)永遠(yuǎn)不要使用push -f來(lái)強(qiáng)制推送瘟判。否則你會(huì)后悔的怨绣。請(qǐng)暫時(shí)相信我。

Rose能推送成功而我卻失敗了的原因是拷获,我們兩個(gè)人都做出了變更篮撑,而她先我一步推送了。現(xiàn)在需要先進(jìn)行合并匆瓜。而水銀知道這一點(diǎn)赢笨。

我現(xiàn)在要做的是獲取那些在中心倉(cāng)庫(kù)中有的,而我沒(méi)有的陕壹。從而我可以合并它們质欲。

圖28

上面有一個(gè)+1heads。這個(gè)意思是我之前就一條主線(xiàn)糠馆,現(xiàn)在變成有兩條線(xiàn)了嘶伟,變成了有兩個(gè)頭的怪物。就像這樣:

圖29

現(xiàn)在在我的倉(cāng)庫(kù)里面有兩個(gè)版本了……我有我的版本:

圖30

還有Rose的版本:

圖31

現(xiàn)在要我來(lái)合并它們又碌。幸運(yùn)的是九昧,這很簡(jiǎn)單。

圖32

看毕匀,hg merge命令將我的兩個(gè)頭合并到了一起铸鹰。在當(dāng)前的情況下,由于我們是分別編輯的文件的不同部分皂岔,因此根本沒(méi)有任何沖突蹋笼。

我還需要提交一下。這很重要躁垛。如果合并失敗了剖毯,我也總能回滾并且再次嘗試。由于合并很成功教馆,我打算提交它逊谋。然后我就可以將我的變更推送到中心倉(cāng)庫(kù)了。

圖33

現(xiàn)在中心倉(cāng)庫(kù)的內(nèi)容就和我做的同步了:

圖34

OK土铺,現(xiàn)在我有了Rose的變更胶滋,以及我的變更,然而Rose卻還沒(méi)有我的變更悲敷。
Rose這時(shí)需要拉下倉(cāng)庫(kù)中的最新版本究恤。

圖35

然后你會(huì)感到有一點(diǎn)奇怪。因?yàn)榧词筊ose將新的變更都拉到了她的倉(cāng)庫(kù)中后德,它們竟然沒(méi)有出現(xiàn)在她的工作目錄中丁溅。

圖36

然而在她的倉(cāng)庫(kù)中其實(shí)是有新的變更的……

圖37

它們不再她的工作目錄中是因?yàn)樗匀辉谧兏?2上工作。你可以通過(guò)“parent”命令來(lái)看到探遵。

圖38

水銀總是對(duì)我們很友好窟赏。它保證我們拉的很安全妓柜;它所做的就是給我們其他人做的最新的變更。我們可以在自己方便的時(shí)候再轉(zhuǎn)換過(guò)去涯穷。

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

圖39

當(dāng)一個(gè)團(tuán)隊(duì)在工作時(shí)拷况,你的工作流看起來(lái)大概是這樣的:

  1. 如果你一段時(shí)間沒(méi)搞了作煌,那么就先去獲得最新的版本:
    • hg pull
    • hg up
  2. 做一些變更
  3. 提交它們(本地)
  4. 重復(fù)步驟2-3直到你滿(mǎn)意了并且想要與他人的工作合并
  5. 當(dāng)你準(zhǔn)備好要分享時(shí):
    • hg pull來(lái)獲得別人的變更(如果有的話(huà))
    • hg merge來(lái)將它們合并到你的里面
    • 測(cè)試!保證合并沒(méi)有把什么事情變?cè)?/li>
    • hg push

自測(cè)

以下是你學(xué)完這篇教程后應(yīng)該會(huì)做的:

  1. 建立中心倉(cāng)庫(kù)并且讓團(tuán)隊(duì)成員從此處拷貝赚瘦。
  2. 把變更推到中心倉(cāng)庫(kù)中粟誓。
  3. 從中心倉(cāng)庫(kù)拉取變更。
  4. 從不同的貢獻(xiàn)者處合并變更起意。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鹰服,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子揽咕,更是在濱河造成了極大的恐慌悲酷,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亲善,死亡現(xiàn)場(chǎng)離奇詭異设易,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蛹头,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)顿肺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渣蜗,你說(shuō)我怎么就攤上這事屠尊。” “怎么了袍睡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵知染,是天一觀的道長(zhǎng)肋僧。 經(jīng)常有香客問(wèn)我斑胜,道長(zhǎng),這世上最難降的妖魔是什么嫌吠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任止潘,我火速辦了婚禮,結(jié)果婚禮上辫诅,老公的妹妹穿的比我還像新娘凭戴。我一直安慰自己,他們只是感情好炕矮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布么夫。 她就那樣靜靜地躺著者冤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪档痪。 梳的紋絲不亂的頭發(fā)上涉枫,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音腐螟,去河邊找鬼愿汰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乐纸,可吹牛的內(nèi)容都是我干的衬廷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼汽绢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吗跋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起庶喜,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤小腊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后久窟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體秩冈,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年斥扛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了入问。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡稀颁,死狀恐怖芬失,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情匾灶,我是刑警寧澤棱烂,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站阶女,受9級(jí)特大地震影響颊糜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秃踩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一衬鱼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧憔杨,春花似錦鸟赫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)台谢。三九已至,卻和暖如春岁经,著一層夾襖步出監(jiān)牢的瞬間对碌,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工蒿偎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朽们,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓诉位,卻偏偏與公主長(zhǎng)得像骑脱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苍糠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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