由于当前分支的更改,作词家不会更新



我们将作曲家作为我们的依赖性注入框架,它将拉入我们创建的库,Foobar,效果很好。该库Foobar有14个版本v1.1.1->v1.1.14。一直到.12作曲家更新了应用程序。但是现在我们遇到了这个错误:

Update failed (Source directory /home/username/dev/git/appname/vendor/foorbar/library has unpushed changes on the current branch: 
Branch v1.1.14 could not be found on the origin remote and appears to be unpushed)

composer.json

{
  "name": "App",
  "description": "Foo Bar",
  "require": {
    "php": ">=5.3.3",
    "zendframework/zendframework": "2.2.",
    "foobarzf2lib/library": "v1.1."
  },
  "minimum-stability": "stable",
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "foobarzf2lib/library",
        "version": "v1.1.14",
        "source": {
          "url": "https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/foobarzf2lib",
          "type": "git",
          "reference": "test"
        },
        "autoload": {
          "psr-4": {
            "FooBar\" : "FooBar/"
          }
        }
      }
    }
  ]
}

更多要知道的事情:

  • 供应商在git中被忽略。
  • 尝试做$ composer.phar clearcache
  • 不必每次删除库。

删除供应商文件夹并重新安装软件包。

Branch v1.1.14 could not be found on the origin remote and appears to be unpushed)这意味着,无论您从何处拉动包装都没有v1.1.14。确保将V1.1.14推到包装提供商,一切都可以。

作曲家将本地存储库( vendor 文件夹中的一个)视为领先。每当作曲家认为它不再连接到适当的结帐(或差异)时,它拒绝更新(我认为这是好的,理智的)。

这似乎很麻烦,但这也许是为易用性付出的代价。作曲家实际上在处理更新时正在管理该Git Checkout(它配置了各种遥控器,然后是缓存,所有这些都没有其他设置)。

在我的情况下,我可以看到类似的错误(不是要问的确切错误消息,我会收到一个通知或某些文件,而没有任何直接更改遥控器发生在非forward上的任何直接更改),我解决了它以下方式(也许在缺少分支的情况下可以使用?但是,使用类似于以下的git命令来审查问题可能会带来更好的见解):

git -C <path> pull && composer update

可以工作,其中<path>是作曲家错误消息中给出的目录路径。如果没有,Git的更具体的错误消息希望能说更多。

如果您需要在作曲家继续之前解决版本冲突。当您在GIT中有合并冲突时,这是类似的,您不能在不清楚的情况下进行下一个提交,否则您将在存储库中使用合并冲突标记(并且不会编译)。

在感兴趣的情况下,我的git配置的一个方面是 pull.rebase=merges。从原则上讲,这是在拉动上重新恢复的(IIRC也许可以保留一些合并)。

作为替代方案 - 类似于删除全部供应商文件夹 - 仅删除报告的路径应起作用。由于这是git,存储库已经消失了,而且随着作曲家的关注,它不再是:

rm -rf -- <path> && composer update

<path>是(必须是)作曲家错误消息中的路径。请注意rm -rf,很容易到达 - 仅供参考。

(这类似于作曲家的报道,问题跟踪器中的分辨率)

相关内容

  • 没有找到相关文章

最新更新