From 65608596d5887f10e6d2147679a975a7c3532ef4 Mon Sep 17 00:00:00 2001 From: Zetok Zalbavar Date: Tue, 22 Mar 2016 14:12:13 +0000 Subject: [PATCH] chore(merge-script): add a way to add optional merge message This allows to close related to PR issues when PR submitter forgets to include that in commit message, or add some other additional info. E.g. `./merge-pr.sh 3033 'Fu fu fu. :3'` would result in: ``` Merge pull request #3033 Fu fu fu. :3 sudden6 (1): update friend activity on groupchat events fixes #2848 ``` --- merge-pr.sh | 49 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/merge-pr.sh b/merge-pr.sh index d64ce05f6..30b53d384 100755 --- a/merge-pr.sh +++ b/merge-pr.sh @@ -21,34 +21,57 @@ # Requires SSH key that github accepts and GPG set to sign merge commits. # usage: -# ./$script $pr_number +# ./$script $pr_number $optional_message +# +# +# $pr_number – number of the PR as shown on GH +# $optional_message – message that is going to be put in merge commit, +# before the appended shortlog. +# PR=$1 +# make sure to add newlines to the message, otherwise merge message +# will not look well +if [[ ! -z $2 ]] +then + OPT_MSG=" +$2 +" +fi + + # FIXME: ↓ #[[ ${PR} =~ "^[:digit:]+$" ]] || echo "Not a PR number!" && exit 1 # list remotes, and if there's no tux3 one, add it -if ! git remote | grep original +if ! git remote | grep original > /dev/null then git remote add original git@github.com:tux3/qTox.git fi +# print the message only if the merge was successful +after_merge_msg() { + echo "" + echo "PR #$PR was merged into «merge$PR» branch." + echo "To compare with master:" + echo "git diff master..merge$PR" + echo "" + echo "To push that to master on github:" + echo "git checkout master && git merge --ff merge$PR && git push original master" + echo "" + echo "After pushing to master, delete branches:" + echo "" + echo "git branch -d {merge,}$PR" +} + + git fetch original && \ git checkout master && \ git rebase original/master master && \ git fetch original pull/$PR/head:$PR && \ git checkout master -b merge$PR && \ git merge --no-ff -S $PR -m "Merge pull request #$PR - +$OPT_MSG $(git shortlog master..$PR)" && \ -echo "" -echo "PR #$PR was merged into «merge$PR» branch." -echo "To compare with master:" -echo "git diff master..merge$PR" -echo "" -echo "To push that to master on github:" -echo "git checkout master && git merge --ff merge$PR && git push original master" -echo "" -echo "After pushing to master, delete branches:" -echo "git branch -d {merge,}$PR" +after_merge_msg