我很難找出如何改變我的心態git,並遇到以下問題。我有這種情況,我們有一個共享引擎和多個使用引擎的項目。內部開發團隊和第二方團隊可能在使用共享引擎的項目上工作,並且希望在開發過程中儘可能多地使用共享引擎的HEAD,直到出貨前幾周纔會共享引擎將被標記並分支,然後項目將使用該分支。項目團隊一次只能在一個項目中工作,但可能會在調試過程中對共享引擎進行更改或添加功能。當他們提交這些更改時,我們的構建系統會運行以查找可能在提交時引入的任何問題。如何讓我的svn:externals策略適應git子模塊?
我(想我)想用一個新的項目/新公司使用這個模型。在SVN,結構是這樣的: shared_engine
project_in_dev-+
+- svn:external shared_engine:head
project_about_to_ship-+
+-svn:external shared_engine_rev1_branch
這工作得非常好:
- 項目開發商可以做一個命令檢查所有的依存關係,他們將需要
- 項目開發商可以輕鬆實現發動機工作並承諾共享引擎
- 我們可以輕鬆地修改或更改項目正在使用的共享引擎與外部和修訂 次
- 引擎更新,很容易獲得與
確定你的日常「從根項目更新」,現在我已經搬到混帳,和子模塊似乎是應對外部代碼的新途徑,但它好像我失去了一些功能。
- 這是一個多步驟的過程,以實際獲得項目的所有依賴關係。項目開發人員必須做一個git clone然後一個git子模塊init/git submodule update --recursive
- 這是更新根項目和子模塊的多步驟過程,因此如果其他開發人員對根項目進行了更改,匹配的子模塊的變化,你沒有立即得到匹配的代碼,可能會非常困惑
- 該子模塊被鎖定到一個特定的提交,如果你對子模塊進行更改,你將無法讓它與共享引擎的頭部
- 我無法控制項目開發人員簽出的共享引擎的修訂版本,但沒有說明要更新的內容
所以我的問題如下:
- 首先,是關於子模塊的上述假設是否正確?這似乎是基於我讀過的,但我不是100%確定,因爲我仍然在搞清楚git
- 如果我的假設是正確的,我是否正確地處理了這個問題?在使用git時,我需要重新調整思路嗎?換句話說,是否有另一種方法來做我想要做的事情,需要以不同的方式思考過程?
- 假設我沒有吹頭兩個,子模塊不會做我想要的,會怎樣?我閱讀了有關子樹合併的內容,但這些看起來並不完全正確,因爲看起來我無法將對共享代碼所做的更改恢復到存儲庫中。
非常感謝您的幫助和耐心。如果不是很明顯,我對git很陌生,我喜歡它,並且想擁抱它,但是我仍然有一些概念誤解,因爲我可能因爲使用中央回購多年而被腦損壞。我想學習!另外,我一整天都在忙碌着,看着各種博客帖子,stackoverflow問題等,但我仍然沒有得到它,我顯然需要它爲我的情況一步一步拼寫出來。我沒有同事問過這個問題,西雅圖地區的任何用戶羣可能會有一些git大師? :)
只是說明一下,git 1.7添加了稀疏結帳,它解決了我的一些問題。最大的問題是,讓開發人員在同一個庫分支上工作的最大問題仍然沒有完全解決。謝謝你的回答,他們確實給了我想要在哪裏看,但我不能標記爲真正回答,但我是upvoting :) – 2011-06-17 19:26:21