【问题标题】:Avoid merging versioning files in GIT避免在 GIT 中合并版本控制文件
【发布时间】:2014-12-01 10:47:26
【问题描述】:
我使用 composer 来保存一个锁文件 (composer.lock) 来存储当前的库状态。每当我执行composer update 时,该文件都会被重写。后来 GIT 尝试在推/拉上合并它。
(我们总是会在不同的开发机器之间遇到冲突,应该忽略)
有没有办法将 composer.lock 文件保留在 GIT 中,但对其应用“强制覆盖”策略?
背景:到目前为止,我将 composer.lock 保存在 gitignore 文件中,但这意味着我必须在所有系统上重新运行 composer update(而不是 composer install)。这需要太多时间。
【问题讨论】:
标签:
git
composer-php
versioning
【解决方案1】:
我们在团队中管理此问题的方式是拥有一个“composer lock 分支”。我们的一位团队成员负责管理 composer 锁定文件,如果我们更改 composer.json、更新我们自己的依赖库或者我们只想刷新公共库,他会执行任何所需的更新。然后他会将这个锁文件提交到那个分支并推送。
当开发人员准备“选择加入”更新时,他们会从 composer-lock-branch 合并并在冲突解决期间简单地“选择他们的”。
composer-lock-branch 是我们的 json 和 lock 文件的规范参考。
这是对文件的任何更改都是神圣的唯一地方。
这是此分支上发生的唯一更改。
但一般来说,您应该准备好丢弃您的作曲家锁定文件,并随时从 composer.json 重新生成它。这是假设您已经正确设置了依赖项,并且没有遵循太多不断变化的 dev-x 分支。如果您将语义版本依赖项仅定位到错误修复,即 x.y.*(例如 1.3.*),那么更新过程不应破坏任何内容,并且锁变得不那么重要了。