diff options
| author | Xiao Pan <gky44px1999@gmail.com> | 2024-04-17 05:10:54 -0700 | 
|---|---|---|
| committer | Xiao Pan <gky44px1999@gmail.com> | 2024-04-17 05:10:54 -0700 | 
| commit | 32757507e5e33512ed8ad6da1fd4bd909efd5b6a (patch) | |
| tree | 4dd096d276514aae44e16ec9adb9f59ff99fc3da /sh/ccp | |
| parent | 0838449ac6f67c1609f0b6068b42d4ca8047fbb1 (diff) | |
new ccp script cfg cherry pick helper
Diffstat (limited to 'sh/ccp')
| -rwxr-xr-x | sh/ccp | 62 | 
1 files changed, 62 insertions, 0 deletions
| @@ -0,0 +1,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' | 
