webiny / github-subtree-tool
一个基于提供的父仓库自动更新只读github仓库的工具。
Requires
- php: >=5.5.9
- knplabs/github-api: ~1.4
- wp-cli/php-cli-tools: 0.10.*
This package is not auto-updated.
Last update: 2024-09-14 16:55:35 UTC
README
此工具用于半自动管理依赖于提供的父仓库的只读git仓库。
安装
composer --global require webiny/github-subtree-tool
运行工具
只需从终端运行以下命令,然后按照流程操作
$ cd vendor/webiny/github-subtree-tool/
$ php cli.php
需求
配置
GIT_ACC
- 持有仓库的github账户名称
- 示例:Webiny(指https://github.com/Webiny)
GIT_REPO
- 你的
master
仓库的名称 - 示例:Framework(指https://github.com/Webiny/Framework)
GIT_USER
- 你的github用户名
- 应该有对GIT_REPO的写访问权限
GIT_PASS
- GIT_ACC的github密码
GIT_SUBTREE
- 子树组件所在的路径,位于
master
仓库内 - 示例:src/Webiny/Components
结构和仓库名称
最重要的要求之一是组件仓库名称与父仓库中的GIT_SUBTREE路径上的名称相匹配。
例如:https://github.com/Webiny/Framework/tree/master/src/Webiny/Component/**Annotations** 匹配:https://github.com/Webiny/**Annotations**
工具背后的故事
以我们的Webiny Framework为例。
Framework 仓库包含多个组件,如Storage
、Entity
、Mailer
等。
这些组件位于Framework
仓库内的src/Webiny/Component
下。
但这些组件也有自己的github仓库
这是因为这是一个模块化框架,意味着你可以使用任何组件而不必使用整个框架。而如今,安装PHP组件的最佳方式是通过composer,这意味着你需要为每个组件有一个单独的仓库。
我们总是在Framework
仓库内进行开发,这意味着随着时间的推移,我们需要将更改同步到组件仓库中,包括创建分支、发布和更新composer.json文件。
我们创建了此工具来自动化这项工作。
工作原理
它首先从你的父仓库检出指定的分支,在我们的例子中是Framework
仓库。
然后,它检查该仓库中包含哪些组件,在定义的路径下,在我们的例子中是src/Webiny/Components
。
之后,它会检出组件分支并将父仓库的更改复制过来。
最后,它在组件仓库和父仓库上创建所需的分支或标签。可选地,它还可以更新composer.json文件
安全性
此工具与你的github仓库进行通信,所以请确保你了解你在做什么。
为了安全起见,工具将在过程的最后要求你确认是否要推送所有更改。在此确认之前,不会对仓库进行任何更改。
错误和改进
只需在问题下报告它们,或者更好的是,发送一个pull request :)