2012-05-16 23 views
3

我們與嵌入式ARM Linux系統一起工作,並且有一些基於SBC的產品,並由它們控制自定義硬件。因此,我們需要開發定製的內核驅動程序,並且有時需要修改現有的驅動程自從我們開始使用Subversion以來,所選擇的策略是使用「供應商分支」來保留使用的vanilla內核,然後爲每個產品創建一個分支,在那裏我們將爲SBC應用所需的補丁並進行自己的修改,類似非常有什麼建議在https://stackoverflow.com/q/2312984/1007502如何鏡像私人gitolite服務器中的官方Linux內核樹?

值得慶幸的是,幾個月前,我們決定將我們的項目與git,所以我們建立了從SVN共享項目的開發團隊中,遷移的項目,因爲我們需要並獲得gitolite服務器用git更舒適。在Linux內核的特例中,我們認爲可以選擇使用我們的gitolite服務器作爲遠程開發項目,這很有趣,但我們希望能夠從官方樹中獲取更新的內核,並最終貢獻一些東西當它達到允許的狀態時返回。

在我自己的機器上,我可以看到如何克隆官方內核樹併爲我們的產品創建私有分支,根據需要在新內核上重新分配它們(如here);但我對如何將官方內核樹導入gitolite的方式感到迷惑,開發人員可以通過它來推送/從中取出官方內核存儲庫,同時也能夠將其與後者保持同步。

這是從我們的機器正式樹獲取更新,並推動他們回到我們的私人gitolite服務器或者是有一個更直接的方法的問題?

編輯:(澄清的問題)
的主要問題是:雖然我知道如何初始化一個空庫推未經跟蹤代碼到gitolite,我不知道該怎麼做的東西,我從克隆另一個git倉庫,比如官方的內核樹。

一旦我有它的克隆我的機器上,究竟是將其移動到專用服務器gitolite的程序?

那麼,它怎麼可能保持現在這樣的「私人」內核樹同步與官方的一個?

的想法是,開發人員只需推到私人樹,最終只發送補丁官方的樹,如果有的話。

回答

2

克隆的原始內核源代碼:

git clone $KERNEL_URL 

添加遠程爲您的私人gitolite庫,將其命名爲gitolite:

git remote add gitolite $GITOLITE_URL 

創建你的私有分支

git checkout -b our-branch 

把你的私人分支到您的私人gitolite存儲庫

git push gitolite our-branch 

大功告成。

這是從我們的機器上的官方樹中獲取更新並將其推回到我們的私人gitolite服務器或者是否有更直接的方法?

基本上就是這樣。

+0

感謝您的幫助@Daniel Baulig。你的程序是正確的,但我意識到我沒有強調真正的疑問是如何將官方樹導入gitolite並保持更新以供開發人員使用,而不是如何註冊新的遠程並推送到它。我編輯了這個問題,使其更清晰。不管怎麼說,還是要謝謝你! – Claudio

2

從我的理解,你有2個遙控器的興趣:

  • 主內核庫(比方說,一個在Github上)
  • 你gitolite庫

這其實是很簡單。您只需要在本地存儲庫(您可能已經擁有gitolite)中添加兩個遙控器,其中git remote add ...即可。然後,你需要從一個遠程獲取東西,將它們與你的代碼合併,如果你滿意,就把它推到另一個。這個過程是完全相同的從香草核心的更新和應用到您自己的遠程或其他方式...

...除了,你不能推到一個不是你的(當然)存儲庫。因此,當回饋到vanilla內核時,您需要發送pull請求並說服Linus或他的一個僕人接受您的請求。 (注意:Linus不接受github拉請求)

+0

感謝您的回答@Shahbaz。就像我之前對丹尼爾說過的那樣,我的主要麻煩是如何將gitolite移植到我在機器上克隆的官方樹上(我編輯了這個問題以指出這一點)。一旦它在服務器上「存在」,我不確定正確的方式是以何種方式讓服務器從官方樹中獲取更新,或者如果我必須從官方樹中提取到我的機器,然後將其推回私人服務器,這似乎是你說的。 – Claudio

+0

@Claudio,你肯定應該從官方的樹中取出_yourself_,並且在合併後只能推送到你的私人服務器,並確保沒有衝突。另一個解決方案可能甚至不可能,因爲私有存儲庫可能保留「裸」的git存儲庫。 – Shahbaz