2012-08-05 96 views
1

我們有一箇中央Git倉庫,供開發人員從中獲取和推送更改。他們在默認主分支上進行更改。我們的持續集成(CI)工具在這個默認主分支上構建工件,並且是負責將我們想要測試的東西提升到「UAT」分支的實體(實際上,這是由構建主人單擊CI工具網頁將進行促銷)。 CI工具還負責將代碼從UAT推廣到「Production」分支。 UAT和生產部門的目的是捕捉升級到UAT和生產的內容。由於我們的開發/發佈迭代速度非常快(1周迭代),所以UAT分支上沒有發展,並且製作只包含「發展」形式的不常發生的「熱修復」。好的做法,從發佈的回購分離Git回購?

如果我們可以很容易地做到這一點,我們希望加入一個控制,以防止有人誤將UAT和生產分支直接更改爲開發版。一個想法是在中央服務器上掛鉤,以確保只有CI工具用戶可以對UAT和Production進行更改。我們也認爲我們可以有一箇中央回購,開發人員使用它只包含主分支,並有第二個回購包含UAT和生產分支。 CI工具將與兩個回購站溝通 - 它將查看回購的發展情況,以查看何時發生變化,並使用第二個回購協議將其升級爲UAT和生產分支。

這是人們通常會做的(爲了開發與升級的目的而分開回購?)它會比服務器掛鉤方式更好嗎?

回答

2

爲了您訂閱的目的,我會說防止未經授權的提交和通過鉤子合併是一種方式。您無需專門關心您正在跟蹤的遠程設備。您也可以隨時來回合併。

+0

+1,這可以很容易地通過工具,如[gitolite]完成(https://github.com/sitaramc/gitolite/ ) – che 2012-08-05 19:12:42

0

我想說克隆一個git repo很便宜並且很容易設置。如果CI用戶/構建主人能夠將某些內容推廣到UAT /生產,爲什麼不將這些更改推送到單獨的存儲庫?可能就像一個Linux內核開發模型。每個更改都由開發人員簽入,由CI用戶測試,然後授權並推送(可能已簽名)到發佈存儲庫。

即使有可能限制某些領域的提交給某些人我不覺得這是用分佈式工具做的方式。我真的很喜歡開放回購,並可能使用其他專業知識庫用於某些用途。 Git保留所有內容,並且通過推入其他回購渠道不會泄露信息。所以作者總是保留作者 - 只有提交者改變。

這裏是它周圍的一個很好的文章,有很多的信息: What git branching models actually work