mborne / remote-git
一个轻量级的PHP客户端,提供了一种一致的方式来查找托管和自托管的git仓库(github, gitlab,...)
v0.7.0
2024-03-23 10:09 UTC
Requires
- php: >=8.1
- guzzlehttp/guzzle: ~7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.17.*
- pdepend/pdepend: 2.15.*
- php-coveralls/php-coveralls: ^2.5
- phpmd/phpmd: ^2.8
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9
README
描述
一个轻量级的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);
依赖关系
许可证
测试
- 配置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