2012-09-04 61 views
5

在我們公司,我們有一個基礎軟件可以爲每個客戶定製。今天使用SVN,我們有這樣的設置:多個定製項目和Git的最佳實踐

/trunk 
/tags 
    … 
/branches 
    /client_project_x 
    /client_project_y 
    /client_project_z 

在git中組織這個最好的方法是什麼?每個項目都有一個遠程存儲庫,一個用於基本代碼,或者有一個遠程數據倉庫和多個分支機構?

如果我們在一個遠程倉庫中使用一個遠程倉庫,有一種方法可以從遠程倉庫克隆一個分支?

回答

2

從概念上講,一個存儲庫中的多個分支和多個存儲庫中的分支之間沒有區別。 DVCS的重點在於消除這種差異。你想根據需要訪問和控制任何給定分支的來考慮它。如果每個開發人員都能夠訪問每個客戶的代碼是很普遍的事情,那麼把它們放在一箇中央倉庫中會更容易。你可以選擇你想克隆或不克隆的分支,儘管克隆整個回購是最簡單的。如果您需要在不同分支機構擁有非常不同的訪問權限,最好爲它們創建單獨的回購權限。

換句話說,無論以何種方式進行設置,都可以使開發和測試團隊更輕鬆。

+0

如何挑選我想要克隆的分支? –

+0

Look [here](http:// stackoverflow。COM /問題/ 4811434/git的克隆僅此一個分支)。 –

1

單獨的項目應該位於不同的存儲庫中。

(這是作爲與git的簡單沒有優勢,很多潛在的缺點,以保持大量的不相關的 - 或者鬆散的聯繫 - 在無論是在一棵大樹或單獨的分支單個存儲庫中的項目。)

+0

有關如何以易於創建新遠程回購的方式管理多個自助託管回購的任何提示? –

+0

@MarcoPompei:'git init --bare'位於適當的可訪問位置是創建「中央」共享存儲庫的最簡單方法。 –

0

git的誕生是爲了讓分支機構/合併分支變得如此簡單,所以就像分支機構一樣爲新功能創建分支,測試功能,與子分組一起工作,而不影響公司的其他部分! Linux例如擁有數千個分支機構,並且它們在不斷增長!

看Linus Torvalds的this video,這將幫助你瞭解他在開發git時的「想法」值。

0

我用幾個回購:

的核心是在一個庫中,每個插件,每個客戶都有自己的倉庫:

  • modwork(核心)
  • modwork_foo(客戶端「FOO配置「)
  • modwork_app1(一個應用程序,它可以安裝好客戶端)

無核心中的單個文件在安裝或構建過程中被修改。每個客戶都有相同的核心。核心包含自定義方法的鉤子。

我不喜歡修改客戶端分支中的核心文件。如果你有超過5個客戶,我認爲這會變得困難。