你如何在项目中管理第三人称git存储库? (例如Twig / Assetic / ..)

时间:2011-06-27 08:45:29

标签: git data-structures project-management directory project

我在PHP中创建了一个个人轻量级框架,它符合我对框架的需求。 我正在使用不同的第三方库,如SwiftMailer,Twig,Assetic,Facebook PHP api,......

如何从第三方图书馆管理这些源代码? 你是否将它作为一个子模块添加到你的项目中,只需拉动以获得最新版本? 或者您只是将代码复制到项目目录中并自行进行更新?

大多数代码存储库的结构如下:

  • 文档
  • SRC
  • 测试

所以在我的框架目录中,它看起来像这样,我们供应商将其作为远程项目的子模块:

  • 文档
  • SRC
    • 供应商
      • 资产(远程回购的克隆)
      • SRC
      • ...
  • 测试

这是要走的路吗?或者您如何建议这样做? 在capistrano部署期间,将从远程服务器中提取所有子模块存储库。

编辑:我必须说我在其他项目中使用框架作为子模块。所以框架是项目中的子模块,框架本身也有子模块。

谢谢!

2 个答案:

答案 0 :(得分:1)

我通常使用vendor文件夹,无论是顶级文件夹还是srclib保存子模块,并在拉动时使用--recurse-submodules选项, --recursive git submodule updategit submodule status。我认为 capistrano可以很好地处理这个用例,但我对它的熟悉程度还不够。

答案 1 :(得分:0)

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

“refs”文件夹正在消耗磁盘大小,但它比使用更正版本(和分支)管理跨项目引用要简单得多。

  • 的3rdParty-项目-A
  • 的3rdParty-项目-B
    • src //源代码&资源
    • 以正确的版本
    • 引用//引用的二进制文件
    • 构建//构建脚本
    • bin //建造二进制文件&相关文件
    • 部署//用于部署的文件(setup.exe,setup.msi等等)
    • ......其他文件夹......
  • MyProject的-A
  • MyProject的-B
    • SRC
      • 3rdParty-Project-B //来自3rdParty-Project-B的引用文件
      • MyProject-A //来自MyProject-A的引用文件
    • 构建
    • 部署