2014-01-21 33 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