【问题标题】:loading a custom git repository with composer使用 Composer 加载自定义 git 存储库
【发布时间】:2016-10-05 21:36:33
【问题描述】:

我正在编写一个可用于我未来项目的框架。 我想把框架放到一个私人托管的 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"
            }
        }
    }
]

谢谢。

【问题讨论】:

    标签: git composer-php


    【解决方案1】:

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

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

    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"
              }
          ]
      }
      

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


    我可以知道当我 git init 时,应该使用“--bare”吗?我曾经创建“裸”回购,但作曲家说找不到包。我四处搜寻,并相信这是由于“缺少 composer.json”。

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

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

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

    我们有以下情况:

    • 带有composer.json 的项目 A 应该从私有仓库中获取项目 B。
    • 我们将 git 排除在外,让 Composer 进行获取。不要手动提取。
    • 并只关注composer.json 方面来解决此问题(见上文)

    旁注:您发布的第二个repository 定义定义了package。 这在https://getcomposer.org/doc/05-repositories.md#package-2 中有描述 您可以免费将私有 repo 打包,但这里不需要,因为上面的composer.json应该可以正常工作。

    【讨论】:

    • "options": { "ssh2": { "username": "dummy", "privkey_file": "" } }
    • 我需要一个钥匙才能进入主机。我在 Windows 上使用 Netbeans。我应该如何定义密钥文件路径?还需要公钥文件吗?我可以知道如何在 URL git@your-server.com:vendor/my-private-repo.git 中指定端口吗?谢谢!
    • 好的,我搞定了。我使用 Jens 提到的配置,但是用 SSH 替换 url。我在“C:\Users\yourname\.ssh\”中放置了一个带有 SSH 密钥路径的“config”。现在一切正常。 FYR 这就是“配置”的样子:nerderati.com/2011/03/17/…
    猜你喜欢
    • 2014-03-07
    • 2013-11-03
    • 2020-03-14
    • 2015-03-19
    • 2019-11-06
    • 2013-11-08
    • 2023-03-16
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多