将作曲家依赖关系保存到GIT

时间:2016-01-26 13:51:48

标签: php git zend-framework2 composer-php

我想知道是否将我的(ZF2)依赖项(由作曲家安装)添加到我的GIT存储库中。这是我与同事讨论如何处理供应商目录的讨论。我知道不鼓励将供应商添加到我的VCS,并且只提交composer.json和composer.lock,但我不完全理解为什么会这样。这意味着我必须使用composer来安装生产环境中的依赖项。

依靠外部资源来生产环境是不是有点危险?在我看来,只需将所有依赖项添加到我的VCS中,在开发环境中需要时更新它们以及当所有工作正常时,将更新推送到VC​​S也是更安全的。这意味着我们当然需要更多的磁盘空间,但我认为这不应该是选择安全性较低的解决方案的理由。

任何人都可以解释为什么让作曲家长期处理依赖关系会更好吗?

3 个答案:

答案 0 :(得分:3)

我使用了两种设置。

保留VCS中的所有依赖项会给git历史记录增加一些噪音,并且没有任何优势。

composer install足够安全,因为它可以获取确切的版本,并且在部署期间执行一次。如果它由于任何原因失败,它只是失败了构建,并可能表明主要问题,例如与网络。

如果您担心在构建期间外部存储库不可用,您可以始终使用satis来制作本地'所需第三方存储库的副本。

在构建过程中添加composer钩子也很常见。没有作曲家,你需要自己动手。

使用composer的最大优点是防止'快速修复'在没有正确分叉的第三方图书馆中。

答案 1 :(得分:3)

官方建议是commit your .composer.json and composer.lock,但not your vendor directory

  

我应该在供应商目录中提交依赖项吗?

     

一般建议是。应将供应商目录(或安装依赖项的任何位置)添加到.gitignore / svn:ignore / etc。

     

最佳做法是让所有开发人员使用Composer来安装依赖项。同样,构建服务器,CI,部署工具等应该适合于作为项目引导的一部分运行Composer。

     

虽然在某些环境中提交它可能很诱人,但它会导致一些问题:

     
      
  • 更新代码时,大型VCS存储库大小和差异。
  •   
  • 在您自己的VCS中复制所有依赖项的历史记录。
  •   
  • 将通过git安装的依赖项添加到git repo中会将它们显示为子模块。这是有问题的,因为它们不是真正的子模块,你会遇到问题。
  •   

如果您仍想提交供应商目录,同一页面会列出一些最佳做法。

答案 2 :(得分:0)

想象一下每次更新依赖项时的差异。

相关问题