2014-01-21 37 views
1

我正在開發一個web軟件有其結構設置這樣的插件:如何用git管理這個項目結構?

root 
--index.php 
--js/ 
----addon1/ 
------file.js 
----addon2/ 
--css/ 
----addon1/ 
------style.css 
----addon2/ 
--library/ 
----addon1/ 
------file.php 
----addon2/ 
------file.php 

我想爲每個插件的存儲庫,但與目前的結構它似乎並不可能。例如,addon1的主要代碼塊位於/ library/addon1 /,該插件的公共資產位於/ js/addon1 /。但是,如果我在/ library/addon1 /上設置addon1的存儲庫,則無法跟蹤js和css文件夾以外的文件。將存儲庫放在一個層面意味着我無法跟蹤每個插件。不幸的是,我沒有靈活性來移動文件夾。

我查看了子模塊,但我不確定那是我需要的。沒有「主要」或核心存儲庫,因爲我不需要跟蹤主要軟件,只有我自己創建的個人插件。

有什麼辦法可以設置它嗎?

忘記了我不需要任何太複雜的東西,因爲我只在本地使用這些存儲庫並且不需要與任何人共享它們。

+0

爲什麼你覺得你需要爲每個插件分別存儲庫。是否有理由不能將所有這些代碼放在一個存儲庫中。 Git通常意味着在一個存儲庫中包含整個項目。 – Glenn

+0

@Glenn每個插件都有自己的功能,並且更容易管理不同版本的每個插件。 Addon1可能在版本1.2.1,而addon2可能在版本1.1.0。實際上我現在擁有一個倉庫中的所有東西,而且有點亂。當您只想查看某個插件的最近更改時,查看歷史記錄也無濟於事。 – user3221437

回答

0

一個簡單的架構就是將每個插件的開發放在一個分支上。

然後可以從其他插件自主開發每個插件。由於依賴關係需要來自不同插件的更新代碼,因此使用git merge(如果需要,使用cherry-pick)可以輕鬆地將這些功能帶入正確的分支。然後,當你準備發佈一個「stable」版本時,每個addon分支的「stable」提交可以合併到release/trunk/master/stable(你可以選擇這個名字)分支。這樣,每個插件可以處於不同的開發階段,但是代碼版本仍然可以在不阻礙任何插件的開發的情況下進行組裝。

所有在同一個存儲庫!

+0

我想我在很久以前就嘗試過這種方法,並遇到了一些問題。我現在看到的問題是,當我檢查插件的分支時,我看不到其他插件的開發,除非我每次進行更改時都會合並所有內容。或者我錯過了什麼? – user3221437

+0

分支的想法是,您正在其他地方獨立開發一項功能。但是,如果您確實需要相互依賴性,則可以將所需的分支直接合併到編輯分支中。例如,如果我正在使用widget1,並且需要更新的widget2版本,我可以直接將widget2分支合併到widget1中。然後,當我以後將所有東西都合併到master中時,如果我在widget1分支中編輯widget2的一部分,與在widget2中推進它的方式不同,那麼只會有衝突。 – Glenn

+0

也許這只是我,但我希望能夠看到所有最新的變化。如果我像你說的那樣合併,每當我做出改變時,我都需要這樣做,這很麻煩。我也可以同時在多達10個分支上工作,並且在所有合併中可能會變得很難看。我猜這種結構對於git並不適用。 – user3221437