我正在编写一个可用于我 future 项目的框架。 我想把这个框架放到一个私有(private)托管的 git 服务器上,并在我 future 的项目中用 composer 加载它。
我可以知道当我 git init 时,应该使用“--bare”吗? 我曾经创建“裸” repo ,但 Composer 说找不到包。我四处搜索,相信这是由于“缺少 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"
}
}
}
]
谢谢。
最佳答案
我正在引用有关如何从 VCS 加载包的官方文档: https://getcomposer.org/doc/05-repositories.md#using-private-repositories
要获取私有(private)项目 B,您需要在公共(public)项目 A 的 composer.json
文件中添加两样东西:
- 将存储库定义为
vcs
类型,并使用指向您服务器上私有(private)存储库的 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。它将私有(private)项目 B 提取到项目 A 的 vendor 文件夹中。
May I know when I git init, should "--bare" be used? I used to create "bare" repo, but composer said the package is not found. I have searched around, and believe it is due to "missing of composer.json".
git init --bare
创建一个没有工作树的仓库。这意味着存储库不包含源文件的工作副本或 checkout 副本。只有存储库的 git 修订历史记录存储在存储库的根文件夹中(而不是 .git 子文件夹中)。
I "git clone" the framework to another location, and load the location with composer, still failed.
您不需要 git clone
或 git init
存储库来存储本地副本,只需使用 Composer 直接从私有(private)服务器获取即可。
我们有以下情况:
- 带有
composer.json
的项目 A 应该从私有(private)仓库中获取项目 B。 - 我们将 git 排除在外,让 Composer 进行抓取。不要手动获取。
- 并且只关注
composer.json
方面来解决这个问题(见上文)
旁注:您发布的第二个repository
定义定义了一个package
。
这在 https://getcomposer.org/doc/05-repositories.md#package-2 中有描述。
您可以自由地将私有(private)仓库作为一个包来获取,但这里不需要它,因为上面的 composer.json
应该可以正常工作。
关于git - 使用 composer 加载自定义 git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37654703/