2010-07-02 81 views
12

我正在一個由3名開發人員組成的團隊中工作,我們最近已從CVS切換到Mercurial。我們通過在每個工作站上擁有本地存儲庫並將其推入/推向開發服務器來使用Mercurial。我不確定這是否是最好的工作流程,因爲很容易忘記推出提交後,3種合併衝突會導致真正的頭痛。有沒有更好的工作流程可以使用,因爲我認爲分佈式VC的複雜性超過了目前的好處。小團隊的Mercurial工作流程

感謝

+1

您對CVS感到滿意嗎?如果是這樣,你爲什麼改用Mercurial? – 2010-07-02 22:57:48

+1

簡短的答案是我讓他做的。主要想法是,我們可以對每個開發人員版本進行控制,而無需使用中央存儲庫中的每個開發人員分支。開發人員完成工作後,他們可以將其更改推送到共享存儲庫。我們的持續集成服務器拉動這個存儲庫的頭部並構建我們的可分發文物。 – BenM 2010-07-05 12:58:18

回答

9

如果您正在進行大量3種方式的合併,可能是因爲您和您的團隊成員正在處理的內容過多。 Mercurial非常擅長處理合並本身,只要你沒有編輯完全相同的文件行。如果可能的話,你可以更清楚地劃分工作,避免一些大合併的麻煩。還要注意,這對於CVS來說仍然是一個問題,因爲它可能比mercurial更糟糕。

在每次提交之後,您也不需要推送。您的工作流程可能如下所示:

  • 提交某些功能的一部分。
  • 提交一些更多的功能。
  • 提交功能的最後一部分。
  • 提交錯誤修復了愚蠢的錯誤。
  • 推送全部功能回購。

在某種程度上,這看起來像Going Dark,但可以通過確保上述示例中的功能範圍較小來緩解這一問題。

+1

當2個開發人員向類中添加新功能時,大多數合併衝突都會發生,比如每個發生在同一行號上的1個方法,例如在文件結尾處。 – Tarski 2010-07-05 12:54:53

8
  1. 忘記你所知道的CVS。即使某些命令有些類似,Mercurial也不例外。

  2. 閱讀http://hginit.com/。按照例子。

  3. 忘記你對CVS的所有了解。

  4. 我的意思是。這是最難的部分。學會信任你的工具。

+0

我第二。說「很容易忘記推」是他們還沒有接受工作流程的證據。 – tghw 2010-07-02 14:28:30

+0

我來看看,但是你遇到過哪些資源有點短? @ tghw這是一個來自hg祕密邪教的說法嗎? – Tarski 2010-07-02 14:49:30

3

這聽起來像你都在對同一分支進行更改。這有一個不令人滿意的副作用,即你在幾乎每一次提交時都合併了彼此的變更,除非手動干預衝突並不是你想要的每時間。

這是我建議的工作流程。這個想法是更多地使用分支,所以你需要不太經常地合併到主分支。

  1. 讓每個開發人員都在單獨的分支中開發每個功能。通過這種方式:

    • 您避免不斷融合其他人的變化,

    • 你是自由的未來的傢伙之前推不完整的工作壓力,「使得它很難融合。」

  2. 當一個特徵是「完成」,如果變化似乎乾淨的應用(一個主觀判斷),合併特性分支直接到主分支和刪除功能分支。

  3. 如果要素落在主分支落後方式(很多功能合併),或者如果合併,否則難以出現:

    1. 合併主到特性分支。

    2. 查找並修復與其他開發人員完全隔離的任何錯誤。

    3. 假設該功能已準備就緒,請將其合併到主設備中(注意:現在在此方向上的合併將按定義進行清理)。如果沒有,你可以繼續開發。

1

我們正在使用水銀具有對我們每個工作站的本地存儲庫和拉/推到開發服務器。

這聽起來很好。我的團隊規模大約是原來的兩倍,效果很好。

我不知道這是最好的工作流程,因爲它很容易忘記提交後推,

您不必每次推後提交;當你想要推動時你推動。這是關於DVCS的一個大想法:Commit和Push是截然不同的!

3種方式合併衝突會導致真正的頭痛。

你工作的代碼很多嗎?在我的5-6位程序員團隊中,每天推/拉幾次,每天提交幾十次,我不記得上一次我必須手動解決合併衝突。當然不是在過去的一兩個月裏。

是否有更好的工作流程我們可以使用,因爲我認爲分佈式VC的複雜性超過了目前的好處。

也許你應該更詳細地描述你的工作流程,因爲我在典型的工作日上遇到的集中式版本控制的唯一複雜性可能是一個命令,而且好處是巨大的。一次只做「hg blame」讓我在集中版本上節省更多的時間,而不是所有我必須整年打字的「hg push」!

0

對於什麼是值得的,我們是第一次與Mercurial合作的類似規模的團隊,我們也是從同樣的問題開始的。

我們堅持,現在事情明顯好轉。我認爲大部分問題發生在代碼很小時,人們都試圖在同一件事上工作。現在已經有點成熟了,人們並沒有在彼此的腳趾上踩到很多東西,巴黎的情況也大打折扣。

希望你把它整理好!