composer需要尚未合并到分支的特定git提交

时间:2014-01-30 16:00:20

标签: git composer-php

在我的项目中,我需要使用composer的包。今天早上我知道有一个合并的拉请求一夜之间但是在一个代码类中有一个坏函数打破它。有人修复了错误并进行了提交,但尚未合并到master分支。

所以我更新composer.json并设置sha1,如下所示:

"require": {
    "vendor/package": "dev-master#d0d6b33897e1739c55a338fdd0a544bfe5a10721"
}

并运行composer update并获取

d0d6b33897e1739c55a338fdd0a544bfe5a10721 is gone (history was rewritten?), recovered by checking out 33e68f9cec94d52f40192c576d7441ea12852b99

我想在未合并的提交中做什么?原谅我的无知,如果这是愚蠢的 - 对作曲家来说相对较新。我可以手动删除代码,直到它被推,但我主要是出于好奇。

2 个答案:

答案 0 :(得分:1)

我猜(实际上并不知道)您不能包含此提交未启用的分支的提交。如果该提交未合并到master,则不能将其包含在其哈希中,同时指定您需要“dev-master”。

您应该指定修复程序所在的其他分支。如果尚未将该分支移动到Packagist / Composer已知的存储库中,则可能还必须包含实际提交者的其他存储库,以使Composer能够找到该分支并进行提交。

另一方面:为什么要打扰不稳定的主分支?您是否考虑过需要稳定的标记版本?生活变得那么容易了(而且我知道,由于我不理解的原因,一些存储库管理员会避免标记版本,从而使每个人的生活变得更加悲惨,但希望它能够满足他们的用例)。

答案 1 :(得分:0)

以下示例使用bitbucket示例,但您可以轻松地使用github

执行相同操作
{
    "name": "YOUR_VENDOR_NAME/YOUR_PROJECT_NAME",
    "description": "PPROJECT DESCRIPTION",
    "type": "project",
    "license": "proprietary",
    "authors": [{
      "name": "YOUR_NAME",
      "email": "YOUR_EMAIL"
    }],
    "minimum-stability": "stable",
    "repositories": [{
      "type": "package",
      "package": {
        "name": "YOUR_PACKAGE_VENDOR_NAME/YOUR_PACKAGE_NAME",
        "version": "0.0.1",
        "type": "library",
        "source": {
          "type": "git",
          "url": "git@bitbucket.org:BITBUCKET_USERNAME/REPOSITORY_SLUG.git",
          "reference": "COMMIT_HASH"
        }
      }
    }],
    "require": {
      "YOUR_PACKAGE_VENDOR_NAME/YOUR_PACKAGE_NAME": "0.0.1"
    }
}