github.com/imran-kn/cilium-fork@v1.6.9/contrib/backporting/cherry-pick (about) 1 #!/bin/bash 2 set -e 3 4 source $(dirname $(readlink -ne $BASH_SOURCE))/common.sh 5 6 cherry_pick () { 7 CID=$1 8 BRANCHES=`git branch -q -r --contains $CID $REM/master 2> /dev/null` 9 if ! echo ${BRANCHES} | grep -q ".*$REM/master.*"; then 10 echo "Commit $CID not in $REM/master!" 11 exit 1 12 fi 13 TMPF=`mktemp cp.XXXXXX` 14 FROM=`git show --pretty=email $CID | head -n 2 | grep "From: "` 15 FULL_ID=`git show $CID | head -n 1 | cut -f 2 -d ' '` 16 git format-patch -1 $FULL_ID --stdout | sed '/^$/Q' > $TMPF 17 echo "" >> $TMPF 18 echo "[ upstream commit $FULL_ID ]" >> $TMPF 19 git format-patch -1 $FULL_ID --stdout | sed -n '/^$/,$p' >> $TMPF 20 echo "Applying: $(git log -1 --oneline $FULL_ID)" 21 git am --quiet -3 --signoff $TMPF 22 rm $TMPF 23 } 24 25 main () { 26 REM="$(get_remote)" 27 for CID in "$@"; do 28 cherry_pick "$CID" 29 done 30 } 31 32 if [ $# -lt 1 ]; then 33 echo "Usage: $0 <commit-id> [commit-id ...]" 34 exit 1 35 fi 36 37 main "$@"