在大型项目中使用Zend框架和Git

12

我在一个相当大的zf和git的项目中遇到了一些问题。该zf应用程序有约20个模块,目前所有内容都存储在单个git存储库中。因此,在你检出应用程序时,你会同时检出整套模块、CSS样式表、JS文件等。

我想做的是,像wordpress或drupal一样:你有你的核心应用程序,每个模块都有一个单独的git存储库,你在模块目录中检出它。检出后,您可以对其进行工作,然后进行提交。但是,使用Zend,您无法这样做,因为媒体文件(css、js、图像)以不同的方式存储在/public目录中(例如,每个模块可能在/public/_MODULE_NAME_/css中具有自己的css、js文件)。我正在/application/modules/中工作。

因此,问题是如何处理zend框架模块化应用程序和git?


3
你可以将静态资源(如CSS、JS等)放在你的模块目录中,然后将它们复制到public中作为构建任务,或者在public中创建符号链接。 - Phil
听起来像是我曾经遇到过的类似问题:https://dev59.com/GlnUa4cB1Zd3GeqPYDP- - eckes
在ZF2中,模块是完全独立的,它们可以作为子模块(完全独立的存储库)附加,但在具有给定结构的ZF1中,这是不可能的。 - bedeabza
2
我不了解Zend部分,但我认为git的子模块功能在这种情况下可能会很有用。http://git-scm.com/book/en/Git-Tools-Submodules - Richard
@AlexDicianu:开启了悬赏,希望解决你的问题也能解决我的问题... - eckes
这个答案可能适用于您:https://dev59.com/73I-5IYBdhLWcg3w6c-1#1618068 - Zak
1个回答

2

我通常会使用软链接来处理这个设置,将一个超级项目放在Web文件夹中,并从不同的文件夹中创建模块的符号链接:

* SuperProject/
  + application/
    + ModuleA --> ../../Modules/ModuleA/application
    + ModuleB --> ../../Modules/ModuleB/application
    + config/
    + views/
    + layouts/
  + public/
    + ModuleA --> ../../Modules/ModuleA/public
    + ModuleB --> ../../Modules/ModuleB/public
    + css/
    + js/
  + library/
+ Modules/
  * ModuleA/
    + application/
      + config/
      + views/
      + models/
    + public/
      + css/
      + js/
  * ModuleB/
    + application/
      + config/
      + views/
      + models/
    + public/
      + css/
      + js/

星号目录是代码库,SuperProject/public 是 HTTP 服务器的入口点(当然启用了符号链接跟随)。显然您不会将任何模块文件添加到 SuperProject 代码库中,而只在全局目录(例如 application/config/)中进行更改。最好通过 .git_ignore 文件忽略这些模块。由于此方法依赖符号链接,因此仅适用于类 Unix 系统。虽然不完美,但是它是最少麻烦的方法。


关于符号链接:在Win32上是否可以使用联接(http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx,http://en.wikipedia.org/wiki/Symbolic_link#NTFS_Junction_points)? - eckes
@eckes 这个可能有效,我还没有尝试过。但是从快速的研究来看,它似乎实现了与类Unix符号链接相同的功能。你有Windows系统可以测试吗? - Lars
只支持XP。而真正有趣的事情(NTFS符号链接,也支持文件,不仅限于文件夹,参见http://en.wikipedia.org/wiki/NTFS_symbolic_link)在那里无法工作,至少需要Vista。 - eckes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接