使用composer加载自定义git存储库

y2k*_*bug 3 git composer-php

我正在编写一个可用于未来项目的框架。我想将框架放到一个私人托管的git服务器上,并在以后的项目中用composer加载它。

我可以在进行git init时知道使用“ --bare”吗?我曾经创建过“裸露”的仓库,但作曲家说找不到这个包。我到处搜索,并认为这是由于“缺少composer.json”造成的。但是,如果没有“ --bare”,我什至无法将代码推送到服务器。我将框架“ git clone”到另一个位置,并使用composer加载该位置,仍然失败。

我已经尝试了以下两个版本,但都失败了:

"repositories": [
    {
        "type": "vcs",
        "url": "https://server/git/sdk/"
    }
]

"repositories": [
    {
        "type": "package",
        "package": {
            "name": "vendor/sdk",
            "version": "master",
            "source": {
                "url": "https://server/git/sdk/",
                "type": "git",
                "reference": "master"
            }
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

谢谢。

Jen*_*och 5

我正在参考有关如何从VCS加载程序包的官方文档:https : //getcomposer.org/doc/05-repositories.md#using-private-repositories

要要求私有项目B,您需要在composer.json公共项目A 的文件中有两件事:

  1. vcs使用服务器上专用存储库的URL 将存储库定义为类型
  2. 要求它

    {
        "name": "project A",    
        "description": "public project A requiring private project B",
        "require": {
            "vendor/my-private-repo": "dev-master"
        },
        "repositories": [
            {
                "type": "vcs",
                "url":  "git@your-server.com:vendor/my-private-repo.git"
            }
        ]
    }
    
    Run Code Online (Sandbox Code Playgroud)

然后运行Composer。它将私有项目B提取到项目A的供应商文件夹中。


我可以在进行git init时知道使用“ --bare”吗?我曾经创建过“裸露”的仓库,但作曲家说找不到这个包。我到处搜索,并认为这是由于“缺少composer.json”造成的。

git init --bare创建没有工作树的存储库。这意味着存储库不包含源文件的有效或已检出副本。只有仓库的git修订历史记录才存储在存储库的根文件夹中(而不是.git子文件夹中)。

我将框架“ git clone”到另一个位置,并使用composer加载该位置,仍然失败。

您不需要git clonegit init存储库来存储本地副本,只需使用Composer直接从私有服务器中获取即可。

我们有以下情况:

  • 具有A的项目A composer.json应该从私人仓库中获取项目B。
  • 我们省略了git,让Composer进行抓取。不要手动获取。
  • 并仅侧重composer.json于解决此问题(请参见上文)

旁注:repository您发布的第二个定义定义了package。这在https://getcomposer.org/doc/05-repositories.md#package-2 中进行了描述。您可以自由地将私有存储库作为一个软件包来使用,但是这里不需要这样做,因为上面的方法composer.json可以正常工作。