mborne/remote-git

一个轻量级的PHP客户端,提供了一种一致的方式来查找托管和自托管的git仓库(github, gitlab,...)

v0.7.0 2024-03-23 10:09 UTC

This package is auto-updated.

Last update: 2024-09-23 11:17:43 UTC


README

CI Coverage Status

描述

一个轻量级的PHP客户端,提供对托管和自托管的git仓库(github, gitlab, gogs 和 gitea)的一致访问。

用例

注意,这里优先考虑一组小型功能,而不是丰富的API集成,以便允许对远程托管服务进行同质访问。

原始开发是在 mborne/satis-gitlab 仓库中实现的,以 生成一个引用git仓库的配置文件

此模块也用于 mborne/git-manager,以 备份和分析git仓库(例如,以下文件存在:README.md, LICENSE,...)

功能

  • 通过以下方式从多个GIT托管服务中列出仓库
    • 用户名
    • 组织/组
  • 从仓库中获取原始文件
  • 应用自定义过滤器
    • 项目包含指定的文件(RequiredFileFilter
    • 项目是composer项目(ComposerProjectFilter
    • 项目名称不匹配指定的正则表达式(IgnoreRegexpFilter

需求

支持的GIT托管服务

用法

创建一个客户端

// configure client
$clientOptions = new ClientOptions();
$clientOptions
    ->setUrl('https://github.com')
    ->setToken($token)
;

// create client
$client = ClientFactory::createClient(
    $clientOptions,
    new NullLogger()
);

按用户名或组织/组过滤

$options = new FindOptions();
// Use '_me_' on github to include private repositories
$options->setUsers(array('mborne'));
$options->setOrganizations(array('symfony','FriendsOfSymfony'));
$projects = $client->find($options);

根据composer.json进行过滤

$options = new FindOptions();
$options->setUsers(array('mborne'));
$filter = new ComposerProjectFilter($client);
$filter->setType('library');
$options->setFilter($filter);
$projects = $client->find($options);

组合过滤器

$options = new FindOptions();
$options->setUsers(array('mborne'));

$filterCollection = new FilterCollection();

// filter according to composer.json
$composerFilter = new ComposerProjectFilter($client);
$composerFilter->setType('library');
$filterCollection->addFilter($composerFilter);

// filter according to README.md
$filterCollection->addFilter(new RequiredFileFilter(
    $client,
    'README.md'
));

$options->setFilter($filterCollection);
$projects = $client->find($options);

依赖关系

许可证

MIT

测试

  • 配置github.com和gitlab.com API的访问令牌(可选)
# see https://github.com/settings/tokens
export GITHUB_TOKEN=AnyGithubToken
# see https://gitlab.com/-/profile/personal_access_tokens
export GITLAB_TOKEN=AnyGitlabToken
  • 安装依赖项并运行测试
make test
# Alternative :
# composer install
# vendor/bin/phpunit -c phpunit.xml.dist

注意,会生成一个HTML覆盖率报告,位于 output/coverage/index.html