如何让Laravel,Composer和SVN一起工作

时间:2013-10-15 16:14:17

标签: svn laravel-4 composer-php

我对Laravel 4和Composer如何使用SVN感到非常沮丧。也许有一些我忽略的东西。

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

然而,我读到的每篇文章都说忽略了供应商目录和其他一些文件。我不能这样做,需要提交这些文件才能部署到生产中!当我安装或更新当前的供应商软件包时,问题就出现了,当安装包删除整个目录时,它会删除整个目录,删除.svn数据并扰乱我的环境。

似乎唯一的方法是在更新composer之前删除vendor目录,然后再次添加vendor目录。我不喜欢这样做,我希望能看到更新过程中正在更新的文件。

所以我的问题是:

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

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

1 个答案:

答案 0 :(得分:0)

我一直处于类似情况。

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

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

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

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

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