blob: c30734c7847c285b274b8865226e2e3fbb20001c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#!/bin/sh
# Cfg git Cherry Pick interactive helper
ssh pp 'gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type nothing'
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
for branch in $(git branch | awk '{print ($1=="*")?$2:$1}'); do
if [ "$branch" != master ]; then
echo "sshing to server $branch..."
# note need \$ else it will run cfg on current computer instead of remote server
ssh -t "$branch" "[ \"\$(cfg -l rev-list origin/$branch..HEAD)\" ] && cfg -l push"
fi
git checkout "$branch"
git pull
done
git checkout master
< "$XDG_DATA_HOME/mydata/cfgl_cherry_picked" read -r picked
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'
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
fi
done
cp "$XDG_DATA_HOME/mydata/cfgl_cherry_picked" "$XDG_DATA_HOME/mydata/cfgl_cherry_picked.bak"
git checkout master
git rev-parse HEAD > "$XDG_DATA_HOME/mydata/cfgl_cherry_picked"
# !/master/ to not ssh to master
for branch in $(git branch | awk '!/master/{print ($1=="*")?$2:$1}'); do
git checkout "$branch"
git push
echo "sshing to server $branch..."
ssh -t "$branch" 'cfg -l pull; cfg -lM; cfg -l status'
done
ssh pp 'gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type suspend'
|