2012-12-19 86 views
2

我的團隊和我本人爲一家軟件供應商工作,爲客戶構建大型軟件。數十位開發者使用Git進行源代碼控制。我們有4個版本:將大型Git/TeamCity項目與4個版本合併問題

  • 0.9:在生產
  • 0.9.1:在客戶端進行測試
  • 1.0:由我們正在測試(軟件供應商)
  • 1.1:正在修建

我們目前的工作的做法是,當你比如修復例如0.9.1中的錯誤,

  • 你拉最新的0.9.1,然後把你的修復程序0.9.1
  • 切換到1.0,拉最新的1.0,合併0.9.1,推到1.0
  • 切換到1.1,拉最新的1.1,合併1.0,推到1.1

問題是,有幾十個開發人員,往往有多個人試圖在同一時間推動他們的修復。結果,人們經常進行相同的合併,合併彼此的變化。例如:

  • DEV1推fix1到0.9.1,拉動1.0並開始合併
  • 儘管DEV1被合併到1.0,DEV2推FIX2到0.9.1,拉動1.0並開始合併自己FIX2,但也修復1
  • 加上合併也需要完成到1.1。

我懷疑,因爲這一切的痛苦,人們往往會做很多的提交在本地計算機(沒有備份),然後做大量的合併說,每天一次或每兩天 - 所以其他的開發者對付過時的代碼。

我想這個問題也發生在其他基於Git的大型項目上。希望聽到那些從事此類項目的人員處理這個問題的方式。

回答

0

儘管DEV1被合併到1.0,DEV2推FIX2到0.9.1,拉動1.0並開始合併自己FIX2,也fix1

如果DEV2是不是最新的時他的推,遙控器會拒絕它。除非他們是git push -f,這完全是另一個問題,否則必須先更新。

0

第一個,您可能需要將您的項目「分區」到更多文件中。調製更多,用戶更多OOP。這在很大程度上是非常困難的工作,在某些情況下幾乎是不可能的。

然後,你基本上有2個選擇,這取決於項目的大小。

  • 對於更大的項目:使用pull requests

    我沒有經驗,在這裏,但你應該做自己的研究,如果你與Linus or GitHub在這一個會。無論哪種情況,這都是最大的項目所做的,例如jquery

    在這種情況下,大多數開發者不應該能再推,仍然會出現同步工作疼痛 - 但這可以,如果你把足夠的文件的項目,所以每個開發工作中可能降至零一次一個。重新實施的第一步,這並不意味着簡單地將文件,但它意味着使作爲獨立的,因爲它可以每一個文件,這樣你就可以申請unit testing

  • 對於較小的那個:座標。 Branch*。通信。

    如果團隊是小,分支和電子郵件應該夠了。聯絡並決定誰先做什麼。通過分支,你不必一直合併。然後,如果需要合併的大沖突,您再次聯繫。這也不是很容易開始,但它的工作原理。

    *要當心如果您決定遵循nvie的建議。該型號至少有one big flaw