我正在编写一个可用于我未来项目的框架。我想把这个框架放在一个私人托管的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
文件中有两件事:
- 将存储库定义为类型
vcs
,其中包含服务器上专用存储库的URL -
要求
{ "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 clone
或git init
存储库来存储本地副本,只需使用Composer直接从专用服务器获取即可。
我们有以下情况:
- 具有
composer.json
的项目A应该从私有回购中获取项目B - 我们把git排除在外,让Composer来做抓取。不要手动提取
- 并仅关注的
composer.json
方面来解决此问题(见上文)
旁注:您发布的第二个repository
定义定义了package
。这在中进行了描述https://getcomposer.org/doc/05-repositories.md#package-2您可以免费要求将私人回购作为一个包,但这里不需要,因为上面的composer.json
应该可以正常工作。