2010-05-04 32 views
2

處理一些棘手的問題,希望得到社區的幫助。基本上,我們的開發團隊被分成兩個小組,可以說「紅」,「藍」分佈式源代碼管理 - 推送個人更改集

3回購:
1:主
2:紅>>主
的克隆 3:藍色>>主人克隆

每位開發人員在他們工作的本地機器上克隆紅色或藍色。

雙方正在爲我們的主要應用程序開展各種工作。每個團隊都有我們共享的「主」存儲庫的克隆,他們正在應用其變更集。變更集在該級別進行驗證,此時他們已準備好進入主人。

爲了簡化,可以說開發者A和B都是紅隊。

所以,當開發商一個推壓變更集1,那麼開發人員B推壓變更集2。然後變更集1進行驗證,並準備進入主站,變更2是不是問題就來了。

我要推變更1,儘快掌握,而不是等待驗證,變更集2,特別是因爲變更3可能在此期間被引入。

我們現在使用的是mercurial,我喜歡它 - 如果我想要做的工作流會更容易,我會願意切換到git。

我在想這個錯嗎?我很感激幫助。

+0

你有三個不同的主幹這是令人困惑的。你可以使用可能使用trunkRed,trunkBlue和trunk(對於父「trunk」)來重新提出你的問題。 – Lohrun 2010-05-04 18:55:21

+0

爲您的工作流程製作一張ascii圖表是否太麻煩了?我很困惑。 – 2010-05-04 18:57:30

+0

另外,如果紅色有變化b c,A和B進入。藍色有b和c,A進入,但B取決於紅色C.是什麼東西在推動之前神奇地解決了這種依賴性? – 2010-05-04 18:59:19

回答

-1

我不熟悉善變的分支,但這裏是你會怎麼做在SVN - 我敢肯定有一個等效。您需要設置分支,並將變更集合合併到/ trunk中。這使您可以選擇和修改哪些版本,而不是隻需要執行「svn up」並全部獲取。

例如,你可以有像

/branches/dev 
/trunk 

在這種情況下,/行李箱被認爲是當前穩定的代碼,這將在生產環境中運行。假設你只是想推紅隊的修訂100,藍隊的修訂110從內/行李箱,你會怎麼做:

svn merge <host>/branches/dev -r 99:100 
svn merge <host>/branches/dev -r 109:110 

,只有在那些特定的修訂所做的更改將合併成/樹幹。

+0

他使用的是Mercurial,只是用SVN術語解釋,這完全是令人困惑的。我不認爲他在使用分支機構。 – 2010-05-04 19:01:07

+0

我知道,但由於我不熟悉Mercurial語法,我認爲我至少會嘗試並傳達分支和合並的想法。他的場景正是分支機構的目標。 – 2010-05-04 19:16:50

+0

@Tim,雖然我同意試圖在SVN中回答它令人困惑,但我認爲他可能對分支有一點意見。特別是如果TeamA和TeamB真的只是不同的功能正在實施。無需多次回購,只需團隊/功能分支。 – 2010-05-04 20:12:03

0
  • TeamA
  • TeamB

TeamA是準備推變化,您合併TeamA到主人,當TeamB準備就緒,就合併成TeamB高手。

定期上下行兩個TeamA & TeamB應該讀取/從Master合併,以確保thier版本有最新的代碼。

如果您需要更多示例,請看Gitorious/Github是如何設置的。每個開發人員都有自己的項目克隆,然後當他們準備好時,他們申請合併到主倉庫中。

這個原理可以應用於Merc,關鍵是確保經常獲取/合併到Team Repos(開發人員回購)以確保將新代碼引入到開發週期中。

+0

HG的這個問題很容易導致合併之間未解決的問題。 – 2010-05-04 19:02:43

+0

我明白這一點 - 問題是我真的不希望「紅色」必須穩定才能將變更集從「紅色」推送到主幹中。所以我不想把整個克隆推回到主人,只是「挑選櫻桃」的變化集。 – ChickenMilkBomb 2010-05-04 19:05:14

+0

您不必拉,當您將變更集合併入主幹時,這是減少碰撞的最佳做法。 – Aren 2010-05-04 19:13:02

4

在特定的情況下,你所描述的:

我要推變更1至儘快掌握 ,而不是等待 覈查變更集2, 特別是因爲變更3可同時引入了 。

所有你需要做的就是hg push -r cset1其中cset1是你想要的CSET的版本號或節點哈希值。

當你把與-r它推動改變及其所有祖先的,所以你可以把變更1不推changeset2,但不用按變更1沒有變更集2。

如果您需要將它們按順序排列(兩個但不是一個),那麼您將使用TransplantExtension進行櫻桃採摘,但只要您正在進行以便您有一個簡單的選項。 (注意,爲了避免「兩個但不是一個」的情況,最好的計劃是讓任何一個寫第一個特徵的人做第一個hg update zero,這樣兩個和一個將是兄弟姐妹(兩個孩子都是零),而不是父母 - 孩子,這更自然地反映了他們的真實關係,如果他們確實是可分離的特徵。這可以通過分支明確地完成,但是嚴格地使用變更父母進行操作也是非常有效的操作模式。)

相關問題