使用git和submodule,什么是好的文件夹结构?

时间:2011-03-28 15:49:56

标签: php git phpunit project-organization

我将git与子模块一起使用,而且我很难弄清楚如何组织我的文件。 我用PHP开发,并使用单元测试。所以现在,我将这个组织用于每个模块:

  • 的src /
  • 测试/

这似乎是个好主意,但问题是当我对项目执行“git submodule add”时,我会有这样的路径: 项目/模块/新闻/ SRC / index.php的

src /文件夹确实存在问题。

我应该简单地将所有文件放在模块根目录中,并在源代码中混合使用测试/文件夹吗?对我来说听起来很糟糕。你在做什么?

编辑:由于自动加载,src / Folder存在问题。我不应该把“src”放在我所有的班级名字中......

3 个答案:

答案 0 :(得分:4)

只要自动加载器能以某种方式找到您的文件,您的文件夹布局就无关紧要了。如果使用PEAR约定将类名映射到其源文件,则可以将src目录添加到包含路径或堆叠第二个自动加载器。然后你不必将src添加到类名。

PEAR约定的替代方法是使用文件和类之间的静态映射。有a tool that can automatically generate such an autoloader for you at GitHub

静态自动加载器方法也用于PHP Project Wizard。该工具将创建src和测试文件夹,包括your phpunit configbuild file to connect your project with Jenkins CI。这是一个方便的包。

至于包含子模块,请考虑将它们放入lib或ext文件夹中。可以在phpdox project at GitHub中找到该外观的示例。请务必查看main bootstrap file以了解如何包含各种自动加载器。

答案 1 :(得分:3)

我遇到这个问题时所做的是创建一个名为vendors的文件夹,并将所有子模块放入其中。然后我使用相对路径将目录符号链接到我在代码中我想要的位置。您可以将符号链接提交到git,当其他人拉出存储库时,它们仍然可以工作。当然,这只适用于使用基于* nix的操作系统。

例如:

modules/
vendor/module1/src/

可以像这样符号链接(来自modules目录):

ln -s ../vendor/module1/src module1

不确定这是否能解决您的问题。

答案 2 :(得分:0)

我不会在单独的模块中进行测试。将它保存在同一个存储库中。