Merging a Pull Request
The process for merging in github pull requests (so that they can be tested locally before committing) has been scripted in the github-pr.sh
script.
Alternatively, if you are confident using git from within your IDE, consider the specific IDE setup guides Eclipse and IntelliJ. |
The script will merge the fork into a temporary branch, and then run a build. Once you are happy, you can commit.
Process and Usage
The overall process is as follows:
-
locate/raise corresponding JIRA ticket, eg CAUSEWAY-1162
-
checkout branch from which PR was forked (usually just 'master')
-
merge PR into temporary branch using the
github-pr.sh
script -
test the change locally (run the app, rebuild, manual regression tests etc)
-
if required, tidy up/refactor code as required
-
merge temporary branch into mainline, and commit
This screencast also shows the process.
Prerequisites
The script uses 'jq' to parse JSON. To install:
-
on Linux:
aptitude install jq
-
on MacOS:
brew install jq
-
on Windows:
Download exe from website
Syntax
The syntax is:
github-pr.sh -j 1162 -g 31 [-s] [-p CAUSEWAY]
where:
-
-j 1162
is the JIRA ticket number
-
-g 31
is the github PR issue number
-
-s
will optionally skip the build and auto-merge
-
-p CAUSEWAY
optionally overrids the JIRA project (defaults to 'CAUSEWAY')
Example transcript
The listing below shows the steps taken by the script:
$ sh github-pr.sh causeway 1162 31
Found JIRA ticket
Found github PR
branch_name_local: master
username : sebadiaz
repo_full_name : sebadiaz/causeway
repo_clone_url : https://github.com/sebadiaz/causeway.git
branch_name_fork : master
merging into: CAUSEWAY-1162_pr-31
Deleting branch 'CAUSEWAY-1162_pr-31'
Deleted branch CAUSEWAY-1162_pr-31 (was bd2e3c2).
Creating the branch CAUSEWAY-1162_pr-31
Switched to a new branch 'CAUSEWAY-1162_pr-31'
Pulling the changes from https://github.com/sebadiaz/causeway.git master
From https://github.com/sebadiaz/causeway
* branch master -> FETCH_HEAD
Auto-merging core/pom.xml
Merge made by the 'recursive' strategy.
core/pom.xml | 3 +-
.../apache/causeway/security/shiro/CausewayLdapRealm.java | 198 +++++++++++++++++++--
2 files changed, 186 insertions(+), 15 deletions(-)
Merged the PR; hit enter to build
The build now commences. Once done, the script continues:
If build successful and happy to merge, execute:
git checkout master && git merge --no-ff CAUSEWAY-1162_pr-31 && git branch -d CAUSEWAY-1162_pr-31
The screenshot belows shows the history we end up with:
This shows the fork being merged into the temporary branch ("CAUSEWAY-1162_pr-31"), then some further tidy-up, and finally the merging of the temporary branch into mainline.
Note that there is no rebasing in this model. This is intentional: when the merged branch is pushed, github will automatically close the original pull request.