0

我有一个托管在私有 git 存储库中的依赖项,并且正在使用 satis 进行包管理。我已将对 repo 主分支的提交标记为“1.0.0”,并在我希望使用该包的 composer.json 文件中指定

"require": {
  "package/name": "~1.0"
},
"repositories": [
{
  "type": "composer",
  "url": "http://myownsatisrepo"
},
"config": {
  "preferred-install": "dist"
}

并且正在运行命令composer install --prefer-dist

因此,我已经指定了一个稳定的包版本这一事实应该确保作曲家不会只是克隆 repo(包括一个我不想要的 .git 文件夹),而是下载一个包。install 命令的额外配置标志和参数应该做同样的事情。尽管如此,composer 只是克隆了这个包。

4

1 回答 1

2

如果 Composer 知道如何获取它,它只能下载分发 ZIP。否则(或者如果获取失败),它将克隆存储库。

当您使用某些知名的 Git 存储库托管程序(如 Github 和 Bitbucket)时,Composer 知道它们的 API 结构以及下载 ZIP 文件的位置。如果你正在使用其他东西,它不会。

作为最后的后备方案,您的 Satis 中的元数据理论上可以包括 ZIP 文件的下载 URL。Satis 允许您配置创建这些文件,但是您将拥有除 Composer 元数据之外的所有 ZIP 文件的托管容量。如果您不让 Satis 创建 ZIP,并且使用的存储库不提供 Composer 已知的下载功能,那么无论如何您将始终触发存储库的克隆。

请注意,一旦 Composer 以一种或另一种方式获得源代码,它将一直使用它,直到您删除整个供应商文件夹。特别是如果您克隆了存储库,如果 Composer 只是更新到最新的提交然后签出所需的提交,它会更快并且使用更少的流量。

于 2016-02-02T23:01:31.407 回答