代码之家  ›  专栏  ›  技术社区  ›  Leo Galleguillos

作曲家可以在标签之后但在未来版本之前按时间顺序获得提交吗?

  •  0
  • Leo Galleguillos  · 技术社区  · 5 年前

    我有一个图书馆 foo/foo-lib 哪一个 requires 来自GitHub的特定提交:

    {
        "name": "foo/foo-lib",
        "repositories": [
            {
                "type": "vcs",
                "url": "https://github.com/KnpLabs/Gaufrette.git"
            }
        ],
        "require": {
            "knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
        }
    }
    

    它工作得很好:

    $ composer update
    Loading composer repositories with package information
    Updating dependencies (including require-dev)                                 
      - Updating knplabs/gaufrette dev-master (2633721 => 2633721)
        Checking out 2633721877cae79ad461f3ca06f3f77fb4fce02e
    
    Generating autoload files
    

    但当我在其他项目中需要该库时:

    {
        "name": "bar/bar-app",
        "repositories": [
            {
                "type": "vcs",
                "url": "ssh://git.example.com/foo-lib"
            }
        ],
        "require-dev": {
            "foo/foo-lib": "dev-master"
        }
    }
    

    它产生依赖性错误:

    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - Installation request for foo/foo-lib dev-master -> satisfiable by foo/foo-lib[dev-master].
        - foo/foo-lib dev-master requires knplabs/gaufrette dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e -> no matching package found.
    

    所以我的问题是:如何正确 require 我的库中GitHub的特定提交,以便它在依赖包中可用?

    0 回复  |  直到 11 年前
        1
  •  185
  •   Chris    11 年前

    您必须明确要求在该哈希值处使用Gaufrette库,并使用 dev 标记,在您的库和应用程序中。这样的东西应该在应用程序中工作 composer.json :

    {
        "name": "bar/bar-app",
        "repositories": [
            {
                "type": "vcs",
                "url": "ssh://git.example.com/foo-lib"
            }
        ],
        "require-dev": {
            "foo/foo-lib": "dev-master",
            "knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
        }
    }
    

    the documentation :

    如果您的某个依赖项依赖于不稳定的包 您还需要明确要求它,以及它的充分性 稳定旗。

    文档还建议,您需要将Gaufrette的存储库包含在您的 bar/bar-app Composer文件,尽管在这种情况下听起来这不是必需的。我不知道为什么。

        2
  •  28
  •   powpow12    6 年前

    以下是您在命令行上的操作方法:

    composer update knplabs/gaufrette:dev-master#2633721 --with-dependencies
    

    你不必使用整个哈希值,一个七个字符长的哈希值似乎就是诀窍。如上所述,你的项目需要支持dev,如果还没有设置,它会抱怨的。此外,使用 --with-dependencies 获取您正在更新的依赖项。

        3
  •  2
  •   Gayan Kalhara    6 年前

    如果你通过分叉对Git仓库进行更改,请确保使用 包名实际上是在包自己的composer.json文件中定义的,因此即使我将包分叉到我自己的joshuapaling github帐户,并且包现在位于URL https://github.com/joshuapaling/Cake-Resque.git ,从作曲家的角度来看,这根本没有影响该包的名称。

    这是一个愚蠢的错误,但我是作曲家的新手,起初并不清楚!所以,我希望这能帮助其他有同样问题的人。