summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsh/ccp28
1 files changed, 9 insertions, 19 deletions
diff --git a/sh/ccp b/sh/ccp
index f0ba485..db48317 100755
--- a/sh/ccp
+++ b/sh/ccp
@@ -7,7 +7,7 @@ cd "$HOME/programs/config_local_arch" || exit 1
# https://www.shellcheck.net/wiki/SC2095
# ssh may swallow stdin, use read need file descriptor workaround or ssh disable stdin
-# I choose to use for ... in ... alternative instead
+# so I choose to use for instead of `... | while read ...`
for branch in $(git branch | awk '{print ($1=="*")?$2:$1}'); do
if [ "$branch" != master ]; then
echo "sshing to server $branch..."
@@ -23,28 +23,18 @@ done
git checkout master
for commit in $(git rev-list --reverse "$picked..HEAD"); do
git show "$commit"
- printf 'Enter branch name to cherry pick this commit: (a for all, enter to skip)\n'
+ printf 'Enter branch names to cherry pick this commit:
+(a for all, space to seperate multiple branches, enter to skip)\n'
read -r branch_pick
if [ "$branch_pick" = a ]; then
# !/master/ to not cherry pick to master branch
- git branch | awk '!/master/{print ($1=="*")?$2:$1}' | while read -r branch; do
- git checkout "$branch"
- git cherry-pick "$commit"
- git status
- # wait to check if git status if good or need manual intervention
- #echo 'Enter to continue.'
- # place holder var a because POSIX read no var is undefined
- #read a
- done
- elif [ "$branch_pick" ]; then
- while [ "$branch_pick" ]; do
- git checkout "$branch_pick"
- git cherry-pick "$commit"
- git status
- echo 'Enter branch name to cherry pick this commit: (enter to skip)'
- read -r branch_pick
- done
+ branch_pick="$(git branch | awk '!/master/{print ($1=="*")?$2:$1}')"
fi
+ for branch in $branch_pick; do
+ git checkout "$branch"
+ git cherry-pick "$commit"
+ git status
+ done
done
cp "$XDG_DATA_HOME/mydata/cfgl_cherry_picked" "$XDG_DATA_HOME/mydata/cfgl_cherry_picked.bak"