【问题标题】:How to make composer update only files in composer.lock/json and not pull new versions如何让作曲家只更新 composer.lock/json 中的文件而不拉取新版本
【发布时间】:2015-04-02 11:24:10
【问题描述】:

我们将 composer.json/composer.lock 保存在我们的存储库中,并使用 composer 来更新依赖项。我们有一个用于结帐后的 gitook 来进行作曲家更新。如果我们的依赖项或依赖项依赖项之一有新版本,它将下载更新并更改 composer.lock

问题是我不想要这个,因为我将有两个开发人员提交锁定文件,并且会有不必要的冲突。

我希望作曲家更新是一个手动过程,使用特定版本提交作曲家.lock,并且仅根据作曲家.lock 中的更改进行作曲家更新。但我不知道该怎么做(也许我是误会了——而且它不是那样工作的......)

有没有办法做到这一点,或者有其他方法可以解决这个问题?

【问题讨论】:

    标签: php git composer-php


    【解决方案1】:

    我找到了(几乎)这样做的方法。 https://gist.github.com/yehosef/8ffbab1f2dbbef22b757

    #!/bin/bash
    OLD=`md5 -q composer.lock.old`
    NEW=`md5 -q composer.lock`
    if [ "$NEW" != "$OLD" ]
    then
      php composer.phar  update
    fi
    cat composer.lock > composer.lock.old
    

    我在结帐后的 git 挂钩中运行它。我提交 composer.lock 和 .gitignore composer.lock.old。当我想进行更新时,我会使用 composer update 手动进行更新,然后提交 composer.lock。

    问题在于,这并没有直接将版本与 composer.lock 中的内容匹配 - 只是让我无法一直进行作曲家更新。

    强制 composer 只加载 composer.lock 中的特定版本会更好。

    【讨论】:

      【解决方案2】:

      将您的挂钩更改为composer install,它将在结帐时从锁定文件中读取。然后还添加一个post-merge 钩子来做同样的事情,这样如果有人对composer.lock 进行更改,合并的版本将根据需要自动安装和/或更新。

      一般规则是install 使用.lock(如果存在),update 总是只使用.json

      【讨论】:

        猜你喜欢
        • 2013-01-13
        • 1970-01-01
        • 2020-01-16
        • 2022-10-09
        • 2016-04-30
        • 2014-05-01
        • 2019-03-06
        • 1970-01-01
        • 2013-03-20
        相关资源
        最近更新 更多