2010-11-12 38 views
4

我是一個使用GitHub倉庫的項目提交者。我有一小組開發人員無法讀取或承諾回購。我想設置一個他們可以承諾的git服務器,這是GitHub倉庫的克隆。當他們提交提交時,我會檢查它們,有時進行編輯,然後推送到GitHub回購。如何管理提交者的層次結構(如Linux內核開發)

我的問題是,由於我有時會改變他們的提交,什麼是從GitHub更改回克隆服務器的最佳工作流程,以便每個人的歷史不會混亂?

編輯:澄清,我不一定意味着提交將被編輯。但是我可能需要刪除/拒絕一些提交的提交(也可能創建新的提交提交)。這將如何影響我下游的開發者?

+0

改變已被推/拉的提交從來不是一個好主意。 – meagar 2010-11-12 16:07:24

+1

那麼,在這種情況下,有什麼選擇? Linux內核開發功能就像這樣。在你到達Linus之前,有幾個級別的提交者。那些在樹底的人如何拉下頂部接受的變化? – noah 2010-11-12 16:16:28

+1

我不相信Linus改變了提交的提交,他們只是由他的副手合併。 – meagar 2010-11-12 16:21:36

回答

7

如果我記得沒錯,Linux管理的事情有點不同於你的建議,因爲大量開發者積極參與各種子系統。

每個主要的內核子系統都有一個「中尉」,負責協調開發該子系統的開發人員的提交。每個中尉都會爲他們的子開發者提供質量保證,並告訴Linus他們有什麼變化可以從他那裏拉動。 Linus是唯一提供訪問「主」回購權的人,然後逐個提交他們的更改。如果中尉喬和鮑勃發生衝突,他會告訴喬從鮑勃身上撤下,並負責合併,然後他會再次從喬身上撤下。

對於你的情況,我認爲你所描述的是理想的。一個公開的遠程回購,您的所有開發人員都可以進行推/拉操作,從而允許他們處理衝突和合並。除了合併它們之外,實際上沒有必要改變它們,這應該爲你完成。如果您需要更改代碼,您可以創建新的提交併將它們推送到公共git回購,以供開發人員下載。

我不知道是否有任何安全的方法來改變存在於幾個存儲庫中的提交。只要你這樣做,你的倉庫已經發生分歧,你不能在沒有jumping through hoops的情況下推/拉。