Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deployment 如何使用composer支持更新项目?_Deployment_Composer Php_Githooks - Fatal编程技术网

Deployment 如何使用composer支持更新项目?

Deployment 如何使用composer支持更新项目?,deployment,composer-php,githooks,Deployment,Composer Php,Githooks,我希望这个问题能解释我想做什么。如果没有,我将尝试给出更详细的解释: 我目前正在将一个大项目从SVN迁移到Git。在这个项目中,所有依赖项都存储在不同的文件夹中,并提交给SVN repo。我已经学会了。但是,除了更新依赖关系,我该怎么做呢?我在另一个ressource中读到,您应该只对composer.lock文件进行版本控制。composer.json文件怎么样 以下是我想到的策略: 排除.gitignore文件中的供应商文件夹 将composer.json和composer.lock文件添加

我希望这个问题能解释我想做什么。如果没有,我将尝试给出更详细的解释:

我目前正在将一个大项目从SVN迁移到Git。在这个项目中,所有依赖项都存储在不同的文件夹中,并提交给SVN repo。我已经学会了。但是,除了更新依赖关系,我该怎么做呢?我在另一个ressource中读到,您应该只对composer.lock文件进行版本控制。composer.json文件怎么样

以下是我想到的策略:

排除.gitignore文件中的供应商文件夹 将composer.json和composer.lock文件添加到repo 添加composer_update.php文件以在post接收挂钩中使用它 当我们必须更新某些依赖项时,我们必须执行以下操作:

更新composer.json文件 在本地运行composer update以更新本地dev实例中的composer.lock文件或composer_update.php脚本 将更改推送到Stash/Bitbuckt/Github,然后通过post-receive钩子执行composer_update.php脚本
你会推荐这样的东西,还是有更好的方法?很抱歉,我对composer还是个新手。

您应该同时提交composer.json和composer.lock,因为这两个文件对于composer操作是必不可少的。我敢打赌,您误读了不提交的内容—从使用Composer运行创建的所有内容来看,您只提交锁文件,而没有提交其他内容

提交composer.json和composer.lock文件。 要在开发时更新依赖项,只需在终端中运行composer update。 要更新对生产的依赖关系,请在终端中运行composer安装。您可以将此命令添加到post接收挂钩。
composer_update.php脚本应该做什么?在Github上???由Stash/Bitbucket/Github abs触发的post接收钩子将使用composer_update.php文件,它将运行类似于shell_exec“composer update”的东西;这样您就不需要SSH到服务器并手动运行命令。有一个git_pull.phpscript在为git做类似的事情。我想Github上没有shell。而且,命令是错误的。你不想更新,你想安装。而且,您不想在存储库所在的服务器上安装。为什么要在部署期间使用部署脚本进行安装。然而Git并不是一个部署工具,我认为在这种情况下你对项目的理解是错误的。它不是一个提供composer支持的项目,而是一个使用composer加载依赖项的项目。这只是这个项目的代码放在一个Stash/Bitbucket/Github主机上。项目本身部署到生产Web服务器。我只是想知道,我的开发人员如何使用composer更新这个正在运行的生产网站中的组件。我想我理解正确了:如果您部署了,那么这是执行以下操作的最佳时机:1。从Git回购中获取代码。2.安装依赖项请注意,有一天您可能会拥有PHP/Composer以外的其他依赖项—只需考虑一些Javascript依赖项3。将结果放入生产服务器。您不会更新Composer依赖项,因为这可能会安装与您测试和QA使用的版本不同的版本。您不希望使用post接收钩子进行更新,因为这只适用于存储库所在的位置,而不应该是prod服务器。好的,正如我所想,这两个文件都可以。如何使用post-receive钩子完成更新过程?您不会在无人参与的情况下更新内容,您只会安装。见我对你问题的评论。