关于如何使用symfony2版本控制和编写器的建议

时间:2014-09-17 14:15:30

标签: php symfony svn composer-php vendor

我已经完成了Symfony2项目的一半。

我需要使用composer安装几个新的供应商包。

我已经拥有版本控制中的所有内容(减去日志,缓存和参数.yml)(包括供应商文件夹)。

问题在于使用composer update时,会删除更新后的供应商文件夹中的.svn文件夹。所以现在基本上不可能提交(给我一个工作副本错误)。

其他信息:我在本地工作并提交到开发服务器,然后批准了应用程序服务器。因此它必须是完美的(不能只是在提交后在dev / application服务器上运行php composer install或php composer update。)

我还尝试导出所有内容并将它们复制并粘贴回到repo中,但这也无效(索引页面在本地中断)。

4 个答案:

答案 0 :(得分:1)

关于供应商版本控制,最好的方法不是版本供应商。

版本所需的唯一内容是composer.jsoncomposer.lock。这可能会导致供应商出现问题,这些供应商没有稳定版本或者您不需要稳定版本的供应商(例如,具有特定提交的主服务器)。

作为一种解决方案,您应该创建自己的(私有)供应商存储库(假设您自己的包装商)。 Composer有一个工具,称为Satis。

https://github.com/composer/satis

所以我的建议是:

  1. 使用Satis创建一个私有存储库。您可以在satis.json中放置所需的每个包,无论何时需要更新供应商版本或添加新版本,您只需修改satisf.json并重建存储库。
  2. 在项目的composer.json中,您将新的私有存储库设置为唯一的存储库并设置选项:packagistfalse
  3. 现在,每次运行composer install时,它都只使用您的私人存储库,因此速度很快,您始终确保每个环境都具有相同的版本
  4. -

答案 1 :(得分:0)

两年前我的情况类似。

我学到的经验教训是从不来编辑供应商中的文件。起初我完全拒绝使用composer并手动克隆我需要的所有内容。后来,我决定分叉我需要编辑和引用我的forks的项目。

Composer支持私人GitHub回购 - 你不需要将它注册到Packagist才能工作。

答案 2 :(得分:0)

您不应将vendor目录保留在版本控制中。这是在Symfony Standard Edition中完成的方式,你应该遵循这一点。运行composer install命令应该是部署过程的一部分

答案 3 :(得分:0)

不建议在代码库中包含供应商软件包,因此如果您需要维护在本地计算机上使用的相同版本的软件包,最好的方法是将 composer.lock 保留在VCS并在其他环境中仅运行 composer install

此外,如果您希望prod部署是即时的,而不依赖于编写器进程,您可以在开发服务器上运行 composer install ,一旦验证,您就可以进行您的prod部署脚本从dev env。

复制vendor文件夹