6.1 KiB
How To Open a Homebrew Pull Request (and get it merged)
The following commands are used by Homebrew contributors to set up a fork of Homebrew's Git repository on GitHub, create a new branch and create a GitHub pull request ("PR") of the changes in that branch.
Depending on the change you want to make, you need to send the pull request to the appropriate one of Homebrew's main repositories. If you want to submit a change to Homebrew core code (the brew
implementation), you should open the pull request on Homebrew/brew. If you want to submit a change for a formula, you should open the pull request on the homebrew/core
tap or another official tap, based on the formula type.
Set up your own fork of the Homebrew repository
Core brew
code related pull request
- This creates a personal remote repository that you can push to. This is needed because only Homebrew maintainers have push access to the main repositories.
- Change to the directory containing your Homebrew installation with
cd $(brew --repository)
. - Add your pushable forked repository with
git remote add <YOUR_USERNAME> https://github.com/<YOUR_USERNAME>/brew.git
.
<YOUR_USERNAME>
is your GitHub username, not your local machine username.
Formulae related pull request
- This creates a personal remote repository that you can push to. This is needed because only Homebrew maintainers have push access to the main repositories.
- Change to the directory containing Homebrew formulae with
cd $(brew --repository homebrew/core)
. - Add your pushable forked repository with
git remote add <YOUR_USERNAME> https://github.com/<YOUR_USERNAME>/homebrew-core.git
<YOUR_USERNAME>
is your GitHub username, not your local machine username.
For formulae in central taps other than homebrew/core
, such as homebrew/science
or homebrew/games
, substitute that tap's name for homebrew/core
in each step, and alter the GitHub repository URLs as necessary.
Create your pull request from a new branch
To make a new branch and submit it for review, create a GitHub pull request with the following steps:
- Check out the
master
branch withgit checkout master
. - Retrieve new changes to the
master
branch withbrew update
. - Create a new branch from the latest
master
branch withgit checkout -b <YOUR_BRANCH_NAME> origin/master
. - Make your changes. For formulae, use
brew edit
or your favorite text editor, following all the guidelines in the Formula Cookbook.
- If there's a
bottle do
block in the formula: don't remove or change it; we'll update it when we pull your PR.
- Test your changes by doing the following, and ensure they all pass without issue. For changed formulae, make sure you do the
brew audit
step while your changed formula is installed. brew tests
brew install --build-from-source <CHANGED_FORMULA>
brew test <CHANGED_FORMULA>
brew audit --strict <CHANGED_FORMULA>
- Make a separate commit for each changed formula with
git add
andgit commit
. - Upload your new commits to the branch on your fork with
git push --set-upstream <YOUR_USERNAME> <YOUR_BRANCH_NAME>
. - Go to the relevant repository (e.g. https://github.com/Homebrew/brew, https://github.com/Homebrew/homebrew-core, etc.) and create a pull request to request review and merging of the commits in your pushed branch. Explain why the change is needed and, if fixing a bug, how to reproduce the bug. Make sure you have done each step in the checklist that appears in your new PR.
- Please note that our preferred commit message format for simple version updates is "
<FORMULA_NAME> <NEW_VERSION>
", e.g. "source-highlight 3.1.8
".devel
version updates should have the commit message suffixed with(devel)
, e.g. "nginx 1.9.1 (devel)
". If updating both stable anddevel
, the format should be a concatenation of these two forms, e.g. "x264 r2699, r2705 (devel)
".
- Await feedback or a merge from Homebrew's maintainers. We typically respond to all PRs within a couple days, but it may take up to a week, depending on the maintainers' workload.
- Thank you!
Following up
To respond well to feedback:
- Ask for clarification of anything you don't understand and for help with anything you don't know how to do.
- Post a comment on your pull request if you've provided all the requested changes/information and it hasn't been merged after a week. Post a comment on your pull request if you're stuck and need help.
- A
needs response
label on a PR means that the Homebrew maintainers need you to respond to previous comments.
- Keep discussion in the pull request unless requested otherwise (i.e. do not email maintainers privately).
- Do not continue discussion in closed pull requests.
- Do not argue with Homebrew maintainers. You may disagree but unless they change their mind, please implement what they request. Ultimately they control what is included in Homebrew, as they have to support any changes that are made.
To make changes based on feedback:
- Check out your branch again with
git checkout <YOUR_BRANCH_NAME>
. - Make any requested changes and commit them with
git add
andgit commit
. - Squash new commits into one commit per formula with
git rebase --interactive origin/master
. - Push to your remote fork's branch and the pull request with
git push --force
.
If you are working on a PR for a single formula, git commit --amend
is a convenient way of keeping your commits squashed as you go.
Once all feedback has been addressed and if it's a change we want to include (we include most changes), then we'll add your commit to Homebrew. Note that the PR status may show up as "Closed" instead of "Merged" because of the way we merge contributions. Don't worry: you will still get author credit in the actual merged commit.
Well done, you are now a Homebrew contributor!