i';m在每次svn更新后都必须执行composer更新

i';m在每次svn更新后都必须执行composer更新,svn,laravel,composer-php,Svn,Laravel,Composer Php,当几个使用laravel框架在同一项目上工作的开发人员有不同的本地laravel/vendor/composer/*文件时,如何解决问题 假设我们有一个生产服务器,在那里我们不再运行composer(或者我们应该?)。要将所有文件投入生产,开发人员必须在本地执行composer更新,以便laravel动态创建/更改文件夹vendor/composer/中的文件。然后,开发人员将这些文件提交到生产环境中,并且可以正常工作 但是在我的同事提交后,我想更新我的svn。这意味着它还将更新动态创建的文件,

当几个使用laravel框架在同一项目上工作的开发人员有不同的本地
laravel/vendor/composer/*
文件时,如何解决问题

假设我们有一个生产服务器,在那里我们不再运行composer(或者我们应该?)。要将所有文件投入生产,开发人员必须在本地执行
composer更新
,以便laravel动态创建/更改文件夹
vendor/composer/
中的文件。然后,开发人员将这些文件提交到生产环境中,并且可以正常工作

但是在我的同事提交后,我想更新我的
svn
。这意味着它还将更新动态创建的文件,这将丢失例如我当前的工作更改。因此,我必须在本地实例上运行composer update self,以实现同事的更改,并包括我当前的(尚未提交的)更改


每次svn更新后,总是在本地主机上运行
composer update
,这是正常的好做法吗?

很多问题,但我想我理解您的问题所在

首先,确保没有对供应商目录版本进行控制。 composer.json和composer.lock都应处于版本控制之下

如果有人通过composer安装了一个新包,那么所有其他开发人员都应该在获得新代码后进行“composer安装”

在生产中,您总是运行“composer安装”,而不是“composer更新”

“Composer update”应该以可控的方式运行,因为它使用新版本更新所有包(根据Composer.json设置)

假设我们有一个生产服务器,在那里我们不再运行composer(或者我们应该?)

您应该在生产服务器上运行以下命令以部署新代码:

php artisan down
git pull origin master
composer install
php artisan migrate
php artisan up
版本控制中应该包含“composer.lock”,以便所有开发人员(和生产服务器)都使用相同版本的/vendor文件

在生产环境中运行composer是否存在安全风险

绝对不是——这是标准做法(假设您有composer.lock)。Composer.lock可确保服务器获得完全相同的文件。如果查看composer.lock内部,您将看到以下项

"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cde7a00d1410a17fb6d61b993cb017a78be1137c",

如果一个聪明的人要添加一个新版本的软件包,它将不会有相同的哈希zipball位置-因此您仍然会收到您期望的正确版本。

好的,在产品上运行composer是否存在安全风险?据我所知-1:有时通过纯http下载软件包。2:我必须始终手动检查下载的供应商软件包是否包含恶意软件(例如存储库本身可能已被破坏)。我宁愿先检查我的本地主机,然后将检查过的供应商包文件放在Production上。其次,我想知道这是否是laravel framework的正常良好做法,每次同事提交一个新的控制器类,我更新我的存储库时,我都必须运行(尽管不总是这样)
composer安装之后
?我认为这不应该被视为一种顺序风险。如果这样做,则需要手动上载供应商目录,但不应将其置于版本控制中。如果您总是安装composer,您将获得与本地相同的版本,因此您可以查看本地环境中的内容。thx以获取答案。您能就如何继续进行
subversion
提供建议吗?是否所有开发人员都必须在每次
svn更新后实际运行
composer install