Git:维护由多个目录组成的第三方模块

时间:2011-08-05 09:55:18

标签: git plugins module directory

我正在努力的公司正在使用可以通过模块扩展的第三方Web应用程序(PHP / MySQL)。我们需要跟踪我们自己的更改到核心应用程序和其他模块,跟踪安装的模块,同时保持轻松的能力将应用程序及其模块更新为最新的供应商版本

目前我们正在使用一个包含所有内容的git存储库。为了保持可更新性,我们使用供应商分支策略。这适用于主应用程序,但当多个模块进入舞台时很快就会变得混乱。

然而,我无法找到一种用git管理这样一个项目的可行方法,特别是因为git的子模块和git的子树合并似乎都需要一个子项目包含在一个目录中。但是对于我见过的大多数Web应用程序来说都不是这样,因为它具有以下目录结构:

app/
  `-code/
      `-path/to/plugin/code
  `--i18n/
      `-path/to/plugin/i18n
  `--assets/
      `-path/to/plugin/assets

所以有人知道在不牺牲太多可用性的情况下如何解决这个问题(作为子模块做恕我直言)

更新

还请考虑我使用的是Windows Vista和symlinks don't seem to work with Git for Windows

1 个答案:

答案 0 :(得分:2)

如果您的环境支持符号链接,我建议使用子模块方法,并结合软链接以获得正确的目录结构。

通过这种方式,您可以从以下方面获益:


来自评论:

  

基本上你有两个目录结构:

  • 直接来自git checkout及其子模块目录。
  • 一个,手动创建以符合预期结构,其中包含“ln -s”(或mklink for Windows Vista/Seven)命令,用于将第一个结构中的正确目录链接到第二个结构中的预期位置。

OP raphinesse个对象:

  

能够只是克隆存储库并拥有运行应用程序所需的结构,真的很棒   每次有人克隆存储库时,必须在一个单独的目录中使用符号链接重新创建整个层次结构对我来说似乎很多工作。

我回复:

  

它可以是repo本身中包含的脚本,用户将执行该脚本以生成正确的目录结构。在这种情况下,一键式解决方案。

OP raphinesse同意:

  

是的,我刚考虑添加一个初始化和更新子模块的脚本,以及在主存储库的工作目录中设置相关链接“post-checkout”(如果UAC-Prompt没有生成任何麻烦)。当然,以这种方式设置的符号链接必须包含在.gitignore文件中。