git-sync: Add sanity check before remote pull
Added check to fetch remote updates before actually pulling in remote changes. This may help somewhat with the modification of files when they are simultaneously open in vim, though I am not entirely sure. Needs further investigation.
This commit is contained in:
parent
8b223673fd
commit
0b43d717d3
1 changed files with 21 additions and 3 deletions
|
@ -19,13 +19,16 @@ set_target() {
|
||||||
DIR="${GS_TARGETDIR:-$1}"
|
DIR="${GS_TARGETDIR:-$1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
commit() {
|
pull() {
|
||||||
|
msg "Pulling upstream changes into $DIR"
|
||||||
run_git pull --ff-only --ff
|
run_git pull --ff-only --ff
|
||||||
|
}
|
||||||
|
|
||||||
|
commit() {
|
||||||
msg "Committing changes to $DIR"
|
msg "Committing changes to $DIR"
|
||||||
run_git add .
|
run_git add .
|
||||||
# shellcheck disable=2039
|
# shellcheck disable=2039
|
||||||
run_git commit --no-gpg-sign -m "Git sync: $(date +%F_%R) from ${HOSTNAME:-"$HOST"}"
|
run_git commit --no-gpg-sign -m "Git sync: $(date +%F_%R) from ${HOSTNAME:-"${HOST:-undefined}"}"
|
||||||
}
|
}
|
||||||
|
|
||||||
push() {
|
push() {
|
||||||
|
@ -38,7 +41,7 @@ should_commit() {
|
||||||
msg "No changes to commit in $DIR" 2
|
msg "No changes to commit in $DIR" 2
|
||||||
false
|
false
|
||||||
else
|
else
|
||||||
msg "Found changes to commit in $DIR"
|
msg "Found changes to commit in $DIR" 2
|
||||||
true
|
true
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -51,12 +54,23 @@ should_push() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
should_pull() {
|
||||||
|
run_git fetch
|
||||||
|
# shellcheck disable=1083
|
||||||
|
if [ "$(run_git rev-parse HEAD)" = "$(run_git rev-parse @{u})" ]; then
|
||||||
|
false
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
run_git() {
|
run_git() {
|
||||||
git -C "$DIR" "$@"
|
git -C "$DIR" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
# echos its first argument
|
# echos its first argument
|
||||||
# verbosity level optionally set through second argument
|
# verbosity level optionally set through second argument
|
||||||
|
# default verbosity 1 (info), can be set to 2 (debug), or 0 (error)
|
||||||
msg() {
|
msg() {
|
||||||
lvl=${2:-1}
|
lvl=${2:-1}
|
||||||
[ "$lvl" -gt "$VERBOSITY" ] && return 0
|
[ "$lvl" -gt "$VERBOSITY" ] && return 0
|
||||||
|
@ -67,6 +81,10 @@ msg() {
|
||||||
watch_changes() {
|
watch_changes() {
|
||||||
no_change_cycle=0
|
no_change_cycle=0
|
||||||
while true; do
|
while true; do
|
||||||
|
if should_pull; then
|
||||||
|
pull
|
||||||
|
fi
|
||||||
|
|
||||||
if should_commit; then
|
if should_commit; then
|
||||||
commit
|
commit
|
||||||
no_change_cycle=0
|
no_change_cycle=0
|
||||||
|
|
Loading…
Reference in a new issue