Advertisement
cmptrwz

Cherry Picker

Mar 30th, 2012
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 0.93 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. if [ "$1" == "-s" ]; then
  4.     SIGN="-s"
  5.     shift
  6. else
  7.     SIGN=""
  8. fi
  9.  
  10. START=${1:-'FAIL'}
  11. END=${2:-'CHERRY'}
  12. if [ "$START" == 'FAIL' ]; then
  13.     echo "NEED SOURCE BRANCH"
  14.     exit 1;
  15. fi
  16. if [ "$START" == 'CONTINUE' ]; then
  17.     COMMITS=`cat ~/.git-cherrypick-resume-commits`
  18.     SIGN=`cat ~/.git-cherrypick-resume-sign`
  19. elif [ "$END" == 'CHERRY' ]; then
  20.     COMMITS=`git cherry HEAD $START | grep ^+ | cut -f2 -d' '`
  21. else
  22.     COMMITS=`git log --pretty=oneline --reverse $START...$END | cut -f1 -d' '`
  23. fi
  24. if [ "$SIGN" != "-s" ]; then
  25.     SIGN=''
  26. fi
  27. for commit in $COMMITS
  28. do
  29.     COMMITS=`echo $COMMITS | sed -e "s/.*$commit\s*//"`
  30.     git cherry-pick $SIGN $commit
  31.     if [ $? -ne 0 ]; then
  32.         echo $COMMITS > ~/.git-cherrypick-resume-commits
  33.         echo "$SIGN" > ~/.git-cherrypick-resume-sign
  34.         exit 1
  35.     fi
  36. done
  37. rm -f ~/.git-cherrypick-resume-commits ~/.git-cherrypick-resume-sign
  38. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement