1

我对 Laravel 4 和 Composer 如何与 SVN 一起工作感到非常沮丧。也许我忽略了一些东西。

我的工作流程包括在本地开发然后上传到 DEV 服务器,我们使用 beanstalk ( http://beanstalkapp.com/ ) 作为我们的在线版本控制和部署系统。当更新准备好进行测试时,我们将部署到临时服务器,然后通过一键部署最终部署到集群中的服务器。

然而,几乎我读过的每一篇文章都说要忽略供应商目录和其他一些文件。我不能那样做,这些文件需要提交才能部署到生产中!当我安装或更新当前供应商包时,问题就来了,composer 在安装包/依赖项时删除了整个目录,其中删除了 .svn 数据并弄乱了我的环境。

似乎唯一的方法是在更新作曲家之前删除供应商目录,然后再次添加供应商目录。我不喜欢这样做,我希望我能在更新期间看到哪些文件正在更新。

所以我的问题是:

1)我的设置做错了什么?

2)我能做些什么让 SVN 和 Composer/Laravel 一起玩得很好

4

1 回答 1

0

我也遇到过类似的情况。

我们的部署使得有必要提交供应商目录。实际上,这很好,因为与composer install锁定文件引导的新结果相比,结果应该没有什么不同。

最初,我编写了一个负责作曲家更新的脚本:

  • 删除/vendor
  • composer update
  • 然后递归遍历所有子目录并删除源存储库的任何剩余部分(归结为删除一些.git目录,因为我的依赖项都来自 GIT - 但.svn递归删除所有目录也是一样的)。
  • 之后将供应商目录添加到 SVN 存储库
  • 提交一切

如果脚本工作正常(我用过phing,这对于递归删除特别好),你只需调用它,等待一段时间,就完成了。

但这不会让你开心,总有一天你会真正调整部署的工作方式。我认为有两种可能的方法:要么创建一个可部署的工件(检查源代码,安装依赖项,将它们全部放在一个 TGZ 或 ZIP 中,移动到目标服务器,解压缩),要么在部署过程中使用一个钩子来安装部署时的依赖。Beanstalk 似乎在部署期间支持挂钩,因此您应该对此进行调查。

于 2013-10-15T19:16:35.160 回答