如何打开 Homebrew Pull Request

以下命令由 Homebrew 贡献者使用,用于在 GitHub 上设置 Homebrew Git 仓库的分支,创建一个新分支,并为该分支中的更改创建一个 GitHub pull request(“PR”)。

您要进行的更改类型会影响您需要向 Homebrew 哪个主仓库发送 pull request。如果您想提交对 Homebrew 核心代码(brew 实现)的更改,您应该在 Homebrew/brew 上打开一个 pull request。如果您想提交对公式的更改,您应该在 homebrew/core tap 上打开一个 pull request,而对于 cask,您应该在 homebrew/cask tap 或其他 官方 tap 上打开 pull request,具体取决于公式类型。

提交现有公式的新版本

  1. 使用 brew bump-formula-pr 使用单个命令完成所有操作(即分叉、提交、推送)。运行 brew bump-formula-pr --help 以了解更多信息。

提交现有 cask 的新版本

  1. 使用 brew bump-cask-pr 使用单个命令完成所有操作(即分叉、提交、推送)。运行 brew bump-cask-pr --help 以了解更多信息。

设置您自己的 Homebrew 仓库分支

核心 brew 代码 pull request

  1. 在 GitHub 上分叉 Homebrew/brew 仓库.
    • 这将创建一个您可以推送到的个人远程仓库。这是必需的,因为只有 Homebrew 维护者才有权推送访问主仓库。
  2. 更改到包含 Homebrew 安装的目录

    cd "$(brew --repository)"
    
  3. 将您可推送的分叉仓库添加为新的远程仓库

    git remote add <YOUR_USERNAME> https://github.com/<YOUR_USERNAME>/brew.git
    
    • <YOUR_USERNAME> 是您的 GitHub 用户名,而不是您的本地计算机用户名。
  1. 在 GitHub 上分叉 Homebrew/homebrew-core 仓库.
    • 这将创建一个您可以推送到的个人远程仓库。这是必需的,因为只有 Homebrew 维护者才有权推送访问主仓库。
  2. tap(下载核心 Homebrew 公式的本地克隆)仓库

    brew tap --force homebrew/core
    
  3. 更改到包含 Homebrew 公式的目录

    cd "$(brew --repository homebrew/core)"
    
  4. 将您可推送的分叉仓库添加为新的远程仓库

    git remote add <YOUR_USERNAME> https://github.com/<YOUR_USERNAME>/homebrew-core.git
    
    • <YOUR_USERNAME> 是您的 GitHub 用户名,而不是您的本地计算机用户名。
  1. 在 GitHub 上 Fork Homebrew/homebrew-cask 仓库.
    • 这将创建一个您可以推送到的个人远程仓库。这是必需的,因为只有 Homebrew 维护者才有权推送访问主仓库。
  2. Tap(下载仓库的本地克隆)核心 Homebrew casks 的仓库

    brew tap --force homebrew/cask
    
  3. 切换到包含 Homebrew casks 的目录

    cd "$(brew --repository homebrew/cask)"
    
  4. 将您可推送的分叉仓库添加为新的远程仓库

    git remote add <YOUR_USERNAME> https://github.com/<YOUR_USERNAME>/homebrew-cask.git
    
    • <YOUR_USERNAME> 是您的 GitHub 用户名,而不是您的本地计算机用户名。

从新分支创建您的 Pull 请求

要在新分支上进行更改并提交以供审核,请按照以下步骤创建 GitHub Pull 请求

  1. 检出 master 分支

    git checkout master
    
  2. 检索 master 分支的新更改

    brew update
    
  3. 从最新的 master 分支创建一个新分支

    git checkout -b <YOUR_BRANCH_NAME> origin/master
    
  4. 进行您的更改。对于公式或 casks,请使用 brew edit 或您最喜欢的文本编辑器,遵循 公式 CookbookCask Cookbook 中的所有准则。
    • 如果公式中有一个 bottle do 块,请不要移除或更改它;当我们合并您的 PR 时,我们会更新它。
  5. 通过运行以下命令测试您的更改,并确保它们全部通过且没有问题。对于已更改的公式和 casks,请确保在安装已更改的公式/cask 后执行 brew audit 步骤。

    brew tests
    HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <CHANGED_FORMULA|CHANGED_CASK>
    brew test <CHANGED_FORMULA|CHANGED_CASK>
    brew audit --strict --online <CHANGED_FORMULA|CHANGED_CASK>
    
  6. 为每个已更改的公式进行单独的提交,使用 git addgit commit。每个公式的提交都必须进行压缩。
    • 请注意,我们对简单版本更新所需的提交消息格式为 “<FORMULA_NAME> <NEW_VERSION>”,例如 “source-highlight 3.1.8”。
  7. 将您新提交的分支上传到您的 fork

    git push --set-upstream <YOUR_USERNAME> <YOUR_BRANCH_NAME>
    
  8. 转到相关仓库(例如 https://github.com/Homebrew/brewhttps://github.com/Homebrew/homebrew-core 等),并创建一个 Pull 请求,请求审核并合并您推送的分支中的提交。解释为什么需要进行更改,如果修复的是错误,则说明如何重现该错误。确保您已完成新 PR 中出现的清单中的每一步。
  9. 等待 Homebrew 维护者的反馈或合并。我们通常会在几天内回复所有 PR,但根据维护者的工作量,可能需要长达一周的时间。

谢谢!

后续跟进

妥善回应反馈

  1. 对于您不理解的任何内容,请寻求澄清,对于您不知道如何操作的任何内容,请寻求帮助。
  2. 如果您已提供所有请求的更改/信息,并且在一周后尚未合并,请在您的拉取请求中发布评论。如果您遇到困难并且需要帮助,请在您的拉取请求中发布评论。
    • 公关上的需要响应标签表示 Homebrew 维护者需要您响应之前的评论。
  3. 除非另有要求,否则请在拉取请求中保持讨论(即不要私下给维护者发送电子邮件)。
  4. 不要在已关闭的拉取请求中继续讨论。
  5. 不要与 Homebrew 维护者争论。您可能会不同意,但除非他们改变主意,否则请实施他们要求的内容。最终,他们控制 Homebrew 中包含的内容,因为他们必须支持所做的任何更改。

根据反馈进行更改

  1. 再次签出您的分支

    git checkout <YOUR_BRANCH_NAME>
    
  2. 进行任何请求的更改,并使用git addgit commit提交它们。
  3. 将新提交压缩到每个公式中

    git rebase --interactive origin/master
    
    • 如果您正在为单个公式处理公关,git commit --amend是一种在进行过程中保持提交压缩的便捷方式。
  4. 推送到您的远程分支和拉取请求

    git push --force
    

一旦所有反馈得到解决,并且是我们想要包含的更改(我们包含大多数更改),那么我们将把您的更改添加到 Homebrew。请注意,由于我们合并贡献的方式,公关状态可能会显示为“已关闭”而不是“已合并”。不用担心:您仍然会在实际合并的提交中获得作者荣誉。

干得好,您现在是 Homebrew 的贡献者了!

Fork me on GitHub