列出依赖于特定GitHub存储库/库/依赖项的所有存储库

时间:2018-01-16 12:22:03

标签: php github version-control composer-php repository

有没有办法发现所有具有特定存储库 Foo / Bar 作为依赖项的公共GitHub存储库?

我对PHP上下文感兴趣(因此主要与 Composer 相关)。

我想知道是否有一些特定于Composer(可能依赖 Packagist ?)或一些通用解决方案。

1 个答案:

答案 0 :(得分:1)

鉴于您的具体要求,我过去采用的一种方法是使用Google's GitHub Data for BigQuery

例如,此查询将返回其中包含composer.lockFoo/Bar文件的所有存储库。

SELECT f.repo_name
FROM [bigquery-public-data:github_repos.files] f
JOIN [bigquery-public-data:github_repos.contents] c
  ON f.id = c.id
WHERE f.path = 'composer.lock'
  AND c.content LIKE '%"name": "Foo/Bar"%'

现在这有一些问题,例如:

  • 有些软件包不会提交composer.lock,因此您还可以检查composer.json中的直接依赖项,但这不会给您100%的结果

  • 根据包名Foo/Bar的唯一性,此字符串有可能出现在锁定文件的其他位置。您可能想要调整查询。

  • 这些查询需要时间才能运行。

  • Google并未为其免费计划提供大量带宽配额,因此您可能会发现自己每月只能运行一些免费查询。在运行全尺寸数据集之前,请确保对较小的样本数据集进行查询。

  • 如果应用Fred依赖于库bazbaz取决于Foo/Bar,您是将其视为2个家属还是只有1个具有传递依赖关系?如果Fredbaz都提交了composer.lock文件,则此查询会将其计为2。

尽管如此,它还是对图书馆使用范围有所了解的起点。