The branch master has been updated via 4a5441d5602435cd801aeee4add5908cfc86acab (commit) via 522710ebddbc2b17ad949174c3b30900be36e79c (commit) via fb3ea4fea8a625bbf36516d0e329bf4790a12641 (commit) via f6ecc7fef076779d1dde76fc6c7e4719aa685cb6 (commit) via b92201c5a37ae8ef57298899464fc6c9eac0e70a (commit) via e2c1ff33aaa776b465f23989107e2a72d3d2804f (commit) from 3189d5753970fa290365b02acb535ea5ef09e995 (commit)
- Log ----------------------------------------------------------------- commit 4a5441d5602435cd801aeee4add5908cfc86acab Author: Dr. David von Oheimb <david.von.ohe...@siemens.com> Date: Mon Oct 25 10:01:19 2021 +0200 pick-to-branch: Further improve user guidance on commit id Reviewed-by: Paul Dale <pa...@openssl.org> Reviewed-by: Tomas Mraz <to...@openssl.org> (Merged from https://github.com/openssl/tools/pull/95) commit 522710ebddbc2b17ad949174c3b30900be36e79c Author: Dr. David von Oheimb <david.von.ohe...@siemens.com> Date: Mon Oct 25 09:47:18 2021 +0200 pick-to-branch: Fix behavior on failed cherry-pick Reviewed-by: Paul Dale <pa...@openssl.org> Reviewed-by: Tomas Mraz <to...@openssl.org> (Merged from https://github.com/openssl/tools/pull/95) commit fb3ea4fea8a625bbf36516d0e329bf4790a12641 Author: Dr. David von Oheimb <david.von.ohe...@siemens.com> Date: Mon Oct 25 09:36:51 2021 +0200 pick-to-branch: Improve diagnostics on bad target branch Reviewed-by: Paul Dale <pa...@openssl.org> Reviewed-by: Tomas Mraz <to...@openssl.org> (Merged from https://github.com/openssl/tools/pull/95) commit f6ecc7fef076779d1dde76fc6c7e4719aa685cb6 Author: Dr. David von Oheimb <david.von.ohe...@siemens.com> Date: Sat Oct 23 13:10:41 2021 +0200 pick-to-branch: Fix the case that commit id is derived from HEAD of master Reviewed-by: Paul Dale <pa...@openssl.org> Reviewed-by: Tomas Mraz <to...@openssl.org> (Merged from https://github.com/openssl/tools/pull/95) commit b92201c5a37ae8ef57298899464fc6c9eac0e70a Author: Dr. David von Oheimb <david.von.ohe...@siemens.com> Date: Sat Oct 23 12:49:30 2021 +0200 pick-to-branch: Preserve current branch and its state if it is not the target Reviewed-by: Paul Dale <pa...@openssl.org> Reviewed-by: Tomas Mraz <to...@openssl.org> (Merged from https://github.com/openssl/tools/pull/95) commit e2c1ff33aaa776b465f23989107e2a72d3d2804f Author: Dr. David von Oheimb <david.von.ohe...@siemens.com> Date: Sat Oct 23 12:32:35 2021 +0200 pick-to-branch: Improve user guidance Reviewed-by: Paul Dale <pa...@openssl.org> Reviewed-by: Tomas Mraz <to...@openssl.org> (Merged from https://github.com/openssl/tools/pull/95) ----------------------------------------------------------------------- Summary of changes: review-tools/pick-to-branch | 61 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/review-tools/pick-to-branch b/review-tools/pick-to-branch index c446763..6513a36 100755 --- a/review-tools/pick-to-branch +++ b/review-tools/pick-to-branch @@ -1,6 +1,15 @@ #! /bin/bash -# If one arg, intuit commit id from master +function usage { + echo "Usage: pick-to-branch [<id>] <branch> + Cherry-pick a commit on the given release target branch. + If this is not the current branch, the current branch and its state are preserved. + + The commit can be given in the form of a branch name. + If no <id> arg is given, intuit commit id from master. + The <branch> arg must match a release branch or start with 'm' for master. + A release branch may be given simply as 102, 110, 111, 30, 31." +} case $# in 2) @@ -8,11 +17,11 @@ case $# in b=$2 ;; 1) - id=`git branch -v | awk '$2=="master" { print $3; }'` + id=`git branch -v | awk '$1=="master" { print $2; }'` b=$1 ;; *) - echo "Usage $0 [commitid] branch" + usage exit 1 ;; esac @@ -31,22 +40,27 @@ case $b in *3*0*) branch=openssl-3.0 ;; +*3*1*) + branch=openssl-3.1 + ;; m*) branch=master ;; *) - echo Unknown branch + echo Unknown release target branch \'$b\' exit 1 ;; esac -echo "id is $id" -echo "branch is $branch" -echo "Are these correct?" +echo "Commit to chery-pick is:" +git show $id | head -n 5 +echo +echo "Target branch is: $branch" +echo "Are both of these correct?" while true do - echo -n "Enter 'yes' to continue or 'no' to abort: " + echo -n "Enter 'y'/'yes' to continue or 'n'/'no' to abort: " read x x="`echo $x | tr A-Z a-z`" if [ "$x" = "y" -o "$x" = "yes" -o "$x" = "n" -o "$x" = "no" ] @@ -60,13 +74,34 @@ then exit 1 fi -git checkout --quiet master || exit 1 -git checkout $branch || exit 1 -git cherry-pick -e -x $id + +ORIG_REF=`git rev-parse --abbrev-ref HEAD` # usually this will be 'master' +if [ "$branch" != "$ORIG_REF" ]; then + STASH_OUT=`git stash` +fi + +function cleanup { + rv=$? + echo # make sure to enter new line, needed, e.g., after Ctrl-C + [ $rv -ne 0 ] && echo -e "pick-to-branch failed" + if [ "$branch" != "$ORIG_REF" ]; then + echo Returning to previous branch $ORIG_REF + git checkout -q $ORIG_REF + if [ "$STASH_OUT" != "No local changes to save" ]; then + git stash pop -q # restore original state, pruning any leftover commits added locally + fi + fi +} +set -o errexit +trap 'cleanup' EXIT + +git checkout --quiet master +git checkout $branch +git cherry-pick -e -x $id || (git cherry-pick --abort; exit 1) while true do - echo -n "Enter 'yes' to push or 'no' to abort: " + echo -n "Enter 'y'/'yes' to push or 'n'/'no' to abort: " read x x="`echo $x | tr A-Z a-z`" if [ "$x" = "y" -o "$x" = "yes" -o "$x" = "n" -o "$x" = "no" ] @@ -79,5 +114,3 @@ if [ "$x" = "y" -o "$x" = "yes" ] then git push fi - -git checkout master