我正在使用,就像我的项目中的作曲家一样。
与往常一样,我在git中跟踪composer.lock文件。 首先,因为,一位前首席开发人员告诉我。 其次,因为获得所有相同的依赖关系才是真正的实践。并且可以在生产中轻松安装它们。
无论如何,我实际上正在使用一些库。它需要symfony / process。 问题是,在生产服务器上,由于PHP版本(5.4.44),我只能拥有symfony / process的v2.8.6。
但是在大多数开发人员中,我们有PHP5.6或PHP7。 所以我们可以使用symfony / process v3.0.6(laste stable release)。
所以在composer.json中,我把require symfony / process = 2.8.6
所以我们都有这个版本。这是有效的,任何问题。
我仍然有一个一直困扰着我的问题。 在某种程度上,我会将版本> = 2.8.6放在composer.json中,因此对于dev我们可以使用v3.0.6,并且在生产中使用兼容版本。
但在这种情况下,我们将始终与composer.lock文件(devs和production之间)发生冲突。 所以,我们再也无法追踪了它。 但是,我仍然喜欢获得最新的稳定发布。有些日子,我们会将生产服务器更新为PHP 5.6。 所以,使用symfony / process到最新的稳定版本。
所以在这种情况下,我应该停止跟踪composer.lock吗? 我们可以获得最新版本,并且更容易迁移到PHP5.6吗?
或者这仍然是跟踪composer.lock文件的好主意。
谢谢,
答案 0 :(得分:2)
使用两个分支,一个用于开发,另一个用于生产或使用自己的composer.lock释放。保持从开发到生产的持续合并,每天或每几个小时或任何其他适当的间隔。从dev分支生产并将.lock修改为2.8.6。后来从开发到生产的合并将不会引起冲突。开发人员不应该从本地开发人员转到远程生产分支。
如果您认为2个分支不方便,您可以将2 .lock添加到回购的某个适当位置。例如,3.x.x应该是它,而在另一个文件夹中是2.x.x.在生产环境中,您可以复制2.x.x版本以替换3.x.x.这可以通过预运行脚本或post-checkout
挂钩来完成。