further work on git auto save

This commit is contained in:
2021-05-03 14:37:49 +02:00
parent a5a41b11e8
commit 3996045f93
6 changed files with 92 additions and 68 deletions
+82 -61
View File
@@ -4,100 +4,121 @@ function is_git {
# check if current folder is git repository
git_check_command=$(git -C $1 rev-parse > /dev/null 2>&1)
if [[ $? != 0 ]]; then
return 0
fi
if [[ $? != 0 ]]; then
return 0
fi
return 1
return 1
}
function get_current_branch {
echo $(git branch | grep "*" | awk '{print $NF}')
echo $(git branch | grep "*" | awk '{print $NF}')
}
function auto_save_git {
function git_auto_save {
if [[ $(is_git ".") -ne 0 ]]; then
echo "Current dir is not a git repository."
return 1
fi
if [[ $(is_git ".") -ne 0 ]]; then
echo "Current dir is not a git repository."
return 1
fi
current_branch_name=get_current_branch
current_branch_name=$(get_current_branch)
timestamp=`date +%Y_%m_%d_%H_%M_%S`
new_branch_name="git_auto_save/$HOST/$timestamp"
# check if there is unsaved work
changes=`git status --ignore-submodules=dirty | grep -E 'modified|deleted|new'`
if [[ ! $changes ]]; then
echo "No changes found."
return
fi
timestamp=`date +%Y_%m_%d_%H_%M_%S`
new_branch_name="git_auto_save/$HOST/$timestamp"
# check if there is unsaved work
changes=`git status --ignore-submodules=dirty | grep -E 'modified|deleted|new'`
if [[ ! $changes ]]; then
echo "No changes found."
return
fi
# stash changes
git stash
# stash changes
git stash
# create new branch
git checkout -b $new_branch_name
git push origin $new_branch_name
# create new branch
git checkout -b $new_branch_name
git push origin $new_branch_name
# apply stashed changes
git stash apply
# apply stashed changes
git stash apply
# add changed files
git add -u
# add changed files
git add -u
# commit changes
git commit -m "git autosave from $timestamp"
# commit changes
git commit -m "git autosave from $timestamp"
# push changes
git push --set-upstream origin $new_branch_name
# push changes
git push --set-upstream origin $new_branch_name
# move back to initial branch
git checkout $current_branch_name
# move back to initial branch
git checkout $current_branch_name
}
function remove_auto_save {
if [[ $(is_git ".") -ne 0 ]]; then
echo "Current dir is not a git repository."
return 1
fi
if [[ $(is_git ".") -ne 0 ]]; then
echo "Current dir is not a git repository."
return 1
fi
if [[ $1 ]]; then
auto_save_branch=$1
else
auto_save_branch=`git branch | grep "git_auto_save" | head -1 | awk '{print $FN}'`
fi
if [[ ! $auto_save_branch ]]; then
echo "No auto save branch found."
return
fi
if [[ ! $auto_save_branch ]]; then
echo "No auto-save branch found."
return 1
fi
auto_save_branch=${auto_save_branch:2}
current_branch=$(get_current_branch)
auto_save_branch=${auto_save_branch:2}
current_branch=$(get_current_branch)
# if on autosave branch, move to master
if [[ $current_branch == $auto_save_branch ]]; then
echo "Currently on autosave path, moving to Master"
git checkout master
fi
# if on autosave branch, move to master
if [[ $current_branch == $auto_save_branch ]]; then
echo "Currently on autosave path, moving to Master"
git checkout master
fi
# remove local branch
git branch -d $auto_save_branch
# remove local branch
git branch -d $auto_save_branch
# remove remote branch
git push origin --delete $auto_save_branch
# remove remote branch
git push origin --delete $auto_save_branch
return 0
}
function remove_all_auto_saves {
if [[ $(is_git ".") -ne 0 ]]; then
echo "Current dir is not a git repository."
return 1
fi
if [[ $1 != "y" ]]; then
echo "Please confirm with 'y'"
return
fi
# remove all auto save branches
if [[ $(is_git ".") -ne 0 ]]; then
echo "Current dir is not a git repository."
return 1
while [[ 1 ]]; do
if ! remove_auto_save; then
break
fi
echo "Auto-Save removed."
done
echo "All auto-saves removed."
}
function load_last_auto_save {
echo ""
}
@@ -121,8 +121,8 @@ padding = 0
; Number of spaces to add before/after each module
; Individual side values can be defined using:
; module-margin-{left,right}
module-margin-left = 5
module-margin-right = 5
module-margin-left = 2
module-margin-right = 2
; Fonts are defined using <font-name>;<vertical-offset>
; Font names are specified using a fontconfig pattern.
@@ -165,7 +165,7 @@ modules-center = title
modules-right = pulseaudio mic_status network battery date
; The separator will be inserted between the output of each module
separator =
separator = |
; This value is used to add extra spacing between elements
; @deprecated: This parameter will be removed in an upcoming version