Home  >  Article  >  Backend Development  >  在Laravel中,如果同时有多个开发者,怎么进行包的更新?

在Laravel中,如果同时有多个开发者,怎么进行包的更新?

WBOY
WBOYOriginal
2016-06-06 20:12:45839browse

是这样的,如果其中一个人增加了一项依赖,并且是注册到了Provider中。此时其他人更新完代码后,执行composer update会出现错误。
我曾想吧vendor加入到git中。但是开发中有一些包是不需要放到生产环境的。
我想请教一下各位大侠,是怎么处理这个问题的。

---更新---
我遇到的问题是这样的。
假如有两个开发者,他们已经完成了项目的初始化。现在开发者A在本地添加了依赖:
composer require vendor/package
这个包是一个Laravel的扩展,需要注册一个ServiceProvider。所以开发者A就需要在config/app.php中添加这个Provider。之后是一系列的后继配置blabla~。OK,现在A可以提交代码,并push到远程分支了。
而后开发者C(别问我B哪去了)pull下了代码。现在他在执行的代码时发现缺少依赖。那现在他需要添加这个依赖。
我现在的方式是执行了
composer update vendor/package
因为Laravel在composer.json中注册了几个钩子,其中一个会在更新时执行。这个命令在初始化的时候,因为要加载ServiceProvider,而代码中A添加的Provider在依赖中并不存在。所以composer就happy的抛出异常退出了。
这就是我的问题。请问大家是怎么处理的

回复内容:

是这样的,如果其中一个人增加了一项依赖,并且是注册到了Provider中。此时其他人更新完代码后,执行composer update会出现错误。
我曾想吧vendor加入到git中。但是开发中有一些包是不需要放到生产环境的。
我想请教一下各位大侠,是怎么处理这个问题的。

---更新---
我遇到的问题是这样的。
假如有两个开发者,他们已经完成了项目的初始化。现在开发者A在本地添加了依赖:
composer require vendor/package
这个包是一个Laravel的扩展,需要注册一个ServiceProvider。所以开发者A就需要在config/app.php中添加这个Provider。之后是一系列的后继配置blabla~。OK,现在A可以提交代码,并push到远程分支了。
而后开发者C(别问我B哪去了)pull下了代码。现在他在执行的代码时发现缺少依赖。那现在他需要添加这个依赖。
我现在的方式是执行了
composer update vendor/package
因为Laravel在composer.json中注册了几个钩子,其中一个会在更新时执行。这个命令在初始化的时候,因为要加载ServiceProvider,而代码中A添加的Provider在依赖中并不存在。所以composer就happy的抛出异常退出了。
这就是我的问题。请问大家是怎么处理的

1、有人已经require包,就证明这个配置已经在 composer.json文件中了,对于你来说,你 pull 了代码,只需要 composer install 就可以了,完全不需要update

2、另外一种情况避免问题,就是有大于一个的开发者,那最好是确实谁是主导者,谁能决定一些什么事情。

首先,新的包要放到composer.json里面,然后只上传该文件到git里面。其他团员可以随时更新composer.json文件。

其次,如果有些包只是在开发环境而不是在线环境的话,你可以放需要的包到:

<code>"require-dev": {
    "codeception/codeception": "1.6.0.3"
}
//然后只安装开发环境所需要的服务包 这样你就可以随时掌握不同的服务包在不同的环境下面了
composer install --dev
</code>

你应该把执行composer update时出的错误贴上来,否则别人不知道你出的究竟是什么问题!

将 composer.json 加入 git 版本控管
vendor 包就不是问题了..

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn