有没有办法发现所有具有特定存储库 Foo / Bar 作为依赖项的公共GitHub存储库?
我对PHP上下文感兴趣(因此主要与 Composer 相关)。
我想知道是否有一些特定于Composer(可能依赖 Packagist ?)或一些通用解决方案。
答案 0 :(得分:1)
鉴于您的具体要求,我过去采用的一种方法是使用Google's GitHub Data for BigQuery。
例如,此查询将返回其中包含composer.lock
个Foo/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
依赖于库baz
且baz
取决于Foo/Bar
,您是将其视为2个家属还是只有1个具有传递依赖关系?如果Fred
和baz
都提交了composer.lock
文件,则此查询会将其计为2。
尽管如此,它还是对图书馆使用范围有所了解的起点。