joachim-n / dorgflow
为 drupal.org 补丁自动化的 git 工作流程。
Requires
Requires (Dev)
- phpunit/phpunit: >=6.0
- symfony/var-dumper: >=2.8
This package is not auto-updated.
Last update: 2024-09-20 20:16:11 UTC
README
Dorgflow 是一套命令,可简化你在 drupal.org 问题补丁上的工作。使用 Dorgflow,您无需下载和应用补丁,创建补丁和 interdiff 也变得更简单。Dorgflow 无法处理的是将文件重新发布到问题以供审查。
安装
使用 Composer 安装依赖项
$ composer install --no-dev
(--no-dev 选项排除测试所需的包。)
然后执行以下操作之一
- 将文件 dorgflow 链接到您的路径中的一个文件夹。
- 将此存储库的根文件夹设置为您的路径。
可选:针对由 composer 驱动的 Drupal 项目
如果您打算在 composer 驱动的 Drupal 项目的上下文中使用 Dorgflow,例如,您想为预览和生产服务器使用特定模块的 8.x-3.1 版本,您可能会遇到麻烦设置由 dorgflow 控制的 drupal.org 贡献环境。对于那些人,有一个 composer 插件可以帮助您管理这些环境:https://packagist.org.cn/packages/lakedrops/dorgflow
使用方法
开始处理一个问题
从本地 git 克隆的干净且最新的发布分支开始,例如 8.3.x(对于核心)或 8.x-1.x(对于 contrib)。我们将称此为 主分支。
要开始处理一个问题,只需这样做
$ dorgflow https://www.drupal.org/node/12345
您也可以直接给出问题编号。并且从您复制的 URL 中也可以有锚点链接,因此 https://www.drupal.org/node/12345#new。
这将为您创建一个新的 git 分支来工作。如果该问题上有补丁,它也会下载它们并创建提交。所以您将得到如下内容
* (12345-fix-bug) Patch from Drupal.org. Comment: 4; file: 12345-4.fix-bug.patch; fid 99999. Automatic commit by dorgflow.
* Patch from Drupal.org. Comment: 2; file: 12345-1.fix-bug.permissions-author.patch; fid 88888. Automatic commit by dorgflow.
/
* (8.3.x) Issue 11111 by whoever.
* Issue 22222 by whoever.
分支名称由问题编号和标题组成:12345-fix-bug。您可以更改此分支名称,只要您保持问题编号和连字符前缀。
每次自动补丁提交都会为您提供
- 添加文件时评论的索引编号,
- 评论的 URL,
- 补丁文件名,
- 补丁文件的实体 ID。
现在您可以为问题开始自己的修复工作了!
处理一个问题
像往常一样将您的作品提交到功能分支。您可以提交尽可能多的提交,无论您想要什么信息。
您可以通过这样做来查看您到目前为止的工作
$ dorgflow diff
这只是一个对 master 分支执行 git diff 的简写。
为了提醒您的功能分支和主分支,请这样做
$ dorgflow status
更新您的功能分支
如果 drupal.org 上的问题有新的补丁,请这样做
$ dorgflow update
这将为您分支上的新补丁创建提交。
如果功能分支的顶部有您自己的提交,这些提交尚未作为补丁发布,则将它们移动到单独的分支。
这种情况
* My commit.
* (12345-fix-bug) Patch 2 from Drupal.org.
* Patch 1 from Drupal.org.
/
* (8.3.x) Issue 11111 by whoever.
* Issue 22222 by whoever.
变为这种情况
* (12345-fix-bug) Patch 3 from Drupal.org.
| * (12345-fix-bug-forked-TIMESTAMP) My commit.
|/
* Patch 2 from Drupal.org.
* Patch 1 from Drupal.org.
/
* (8.3.x) Issue 11111 by whoever.
* Issue 22222 by whoever.
然后,您应手动将分叉分支合并回功能分支以保留您的作品。
提交您的作品
当您准备好制作补丁时,只需这样做
$ dorgflow
这将创建一个具有系统文件名的补丁,以及一个 interdiff 文件。然后您可以将这些文件上传到 drupal.org 的问题节点。
从git日志中输出的提交消息,可以是分支开始以来的,或者是最后一个补丁(如果有的话)。您可以将其复制粘贴到drupal.org上的评论中,以解释您的更改。
提交补丁(仅维护者)
如果一个问题被设置为RTBC,并且相应的功能分支已更新到最新的补丁,您可以将更改应用到主分支并准备好提交
$ dorgflow apply
这会将git放回主分支,并执行 squash merge 以将功能分支的所有更改应用和暂存。
现在您只需要执行 git commit,使用问题节点信用和提交部分建议的命令。
清理
当您完成对这个分支的所有操作后,您可以执行以下操作
$ dorgflow cleanup
这会切换到主分支,并删除功能分支。
或者,您可以使用以下命令清理所有已提交的功能分支:
$ dorgflow purge
这将检查所有名称形式为 'ISSUE-描述' 的分支,并删除那些在提交信息中存在该问题编号的主分支提交。