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



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

我可以知道当我调用init时,应该使用"--bare"吗?我曾经创建过"裸"repo,但composer说找不到这个包。我到处找过,相信是因为"composer.json丢失"。然而,如果没有"--bare",我甚至无法将代码推送到服务器。我将框架"git克隆"到另一个位置,并用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"
}
}
}
]

谢谢。

我正在参考关于如何从VCS加载包的官方文档:https://getcomposer.org/doc/05-repositories.md#using-专用存储库

要需要私有项目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的供应商文件夹中。


我可以知道我在初始化时应该使用"--bare"吗?我曾经创建过"裸"repo,但composer说找不到这个包。我到处找过,相信是因为"composer.json丢失"。

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

I将框架"git克隆"到另一个位置,并用composer加载该位置,仍然失败。

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

我们有以下情况:

  • 具有composer.json的项目A应该从私有回购中获取项目B
  • 我们把git排除在外,让Composer来做抓取。不要手动提取
  • 并仅关注的composer.json方面来解决此问题(见上文)

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

相关内容

  • 没有找到相关文章

最新更新