你如何管理项目中的第三方Git仓库?(例如Twig/Assetic/..)

6
我用PHP制作了一个个人轻量级框架,它满足了我的框架需求。我使用不同的第三方库,如SwiftMailer、Twig、Assetic、Facebook PHP api等。
你是怎样管理这些第三方库的源代码的呢?你将其作为子模块添加到你的项目中,并只需拉取最新版本吗?还是你只是将代码复制到你的项目目录中,然后自己进行更新?
大多数代码仓库的结构都是这样的:
- docs - src - tests
所以在我的框架目录中,它看起来像这样,并使用远程项目的供应商目录作为子模块:
- docs - src - vendor - Assetic(远程仓库的克隆) - src - ...
- tests
这种方式可行吗?或者你有什么建议?
在capistrano部署期间,所有子模块存储库都将从远程服务器上拉取。
编辑:我必须说,我将该框架作为子模块用于其他项目中。因此,该框架是一个项目的子模块,而该框架本身也有子模块。
谢谢!
2个回答

1

我通常使用一个vendor文件夹,可以是顶层的,也可以是在srclib下面,它包含子模块,并在拉取时使用--recurse-submodules选项,在git submodule updategit submodule status中使用--recursive。我认为capistrano可以很好地处理这种用例,但我不熟悉它,无法确定。


0

我每个项目都会单独管理。 每个项目文件夹都可能包含所有正确构建所需的文件-因此所有引用的文件都包含在“refs”目录中。在这种情况下,构建很容易:获取“src,refs和build”的最新版本,运行构建脚本。输出位于“bin”目录中。

“refs”文件夹占用了磁盘空间,但与管理具有修正版本(和分支)的跨项目引用相比,它要简单得多。

  • 第三方项目-A
  • 第三方项目-B
    • src // 源代码和资源
    • refs // 引用的二进制文件(正确版本)
    • build // 构建脚本
    • bin // 构建的二进制文件和相关文件
    • deploy // 用于部署的文件(setup.exe、setup.msi 等)
    • ... 其他文件夹 ...
  • 我的项目-A
  • 我的项目-B
    • src
    • refs
      • 第三方项目-B // 从第三方项目-B 中引用的文件
      • 我的项目-A // 从我的项目-A 中引用的文件
    • build
    • bin
    • deploy

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