4.6 KiB
How To Open a Homebrew Pull Request (and get it merged)
The following commands are used by Homebrew's contributors to setup a fork of Homebrew's Git repository on GitHub, create a new branch and create a GitHub pull request of the changes in that branch.
Depending on the change you want to make, you need to send the pull request to the corresponding repository. If you want to submit a change in Homebrew core code, you should open the pull request at Homebrew/brew. If you want to submit a change for a formula, you could open the pull request at Homebrew core tap or any other official taps based the formula type.
Set up your own fork of the Homebrew repository
Core code related pull request
- Change to the directory containing your Homebrew installation with
cd $(brew --repository)
- Fork the Homebrew/brew repository on GitHub. This creates a pushable, personal remote repository. This is needed as only Homebrew maintainers have push access to the main repository.
- Add the pushable forked repository with
git remote add YOUR_USERNAME https://github.com/YOUR_USERNAME/brew.git
Formulae related pull request
- Change to the directory containing Homebrew formulae with
cd $(brew --repository homebrew/core)
- Fork the Homebrew/homebrew-core repository on GitHub. This creates a pushable, personal remote repository. This is needed as only Homebrew maintainers have push access to the main repository.
- Add the pushable forked repository with
git remote add YOUR_USERNAME https://github.com/YOUR_USERNAME/homebrew-core.git
Create your Pull Request from a new branch
To make a new branch and submit it for review:
- Checkout the
master
branch withgit checkout master
- Retrieve new changes to the
master
branch withbrew update
(which callsgit pull
) - Create a new branch from the latest
master
branch withgit checkout -b YOUR_BRANCH_NAME origin/master
- Make your changes to any Homebrew formula with
brew edit
(following all the requirements in the Formula Cookbook). Runbrew audit ANY_CHANGED_FORMULA
,brew tests
andbrew install ANY_CHANGED_FORMULA && brew test ANY_CHANGED_FORMULA
and ensure all of these pass without issue. If there's abottle do
block in the formula: don't remove it; we'll update it when we pull it. - Make a separate commit for each changed formula with
git add
andgit commit
. - Upload your new commits to the branch to your fork with
git push --set-upstream YOUR_USERNAME YOUR_BRANCH_NAME
- Go to https://github.com/Homebrew/homebrew-core and create a pull request to request review and merge of commits in your pushed branch. Make sure you explain why the change is needed and, if fixing a bug, how to reproduce the bug. Please note that the preferred commit message format for simple version updates is "FORMULA_NAME NEW_VERSION", e.g. "
source-highlight 3.1.8
".devel
version bumps should have the commit message marked with addtional(devel)
suffix like "nginx 1.9.1 (devel)
". Await feedback or a merge from Homebrew's maintainers.
Following up
To respond well to feedback:
- Ask for clarification of anything you don't understand and 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.
- 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:
- Checkout 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 the fork's remote branch and the pull request with
git push --force
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 it will not show up as "Merged" because of the way we include contributions.
Well done, you are now a Homebrew contributor!