fix(transation): fix ignores on force

This commit is contained in:
zawz 2022-01-28 10:57:15 +01:00
parent e1a8457409
commit 8865f53ce4
4 changed files with 23 additions and 5 deletions

View file

@ -29,6 +29,10 @@ local_full_list() {
find . -mindepth 1 ! -regex "^./$syncdir\$" ! -regex "^./$syncdir/.*" | sed 's|^./||g' | grep -vE "$ignores" | sort
}
local_file_list() {
find . -mindepth 1 ! -type d ! -regex "^./$syncdir\$" ! -regex "^./$syncdir/.*" | sed 's|^./||g' | grep -vE "$ignores" | sort
}
server_full_list() {
ssh_exec '#LXSH_PARSE_MINIFY
set -e
@ -37,6 +41,14 @@ server_full_list() {
' "$rdir" "$syncdir" "$ignores" | sort
}
server_file_list() {
ssh_exec '#LXSH_PARSE_MINIFY
set -e
cd "$1"
find . -mindepth 1 ! -type d ! -regex "^./$2\$" ! -regex "^./$2/.*" | sed "s|^./||g" | grep -vE "$3"
' "$rdir" "$syncdir" "$ignores" | sort
}
server_both_list() {
ssh_exec '#LXSH_PARSE_MINIFY
set -e

View file

@ -2,6 +2,8 @@
set -e
[ "$DEBUG" = true ] && set -x
%include config.sh options.sh *.sh
arg=$1

View file

@ -27,9 +27,11 @@ sync()
local_full_list > "$tdir/local_full"
local_hash_list > "$tdir/local_hash"
server_both_list | tee >(
head -z -n1 | tr -d '\0' | sort > "$tdir/server_full"
) | tail -z -n1 | sort > "$tdir/server_hash"
server_hash_list > "$tdir/server_hash"
server_full_list > "$tdir/server_full"
#server_both_list | tee >(
# head -z -n1 | tr -d '\0' | sort > "$tdir/server_full"
#) | tail -z -n1 | sort > "$tdir/server_hash"
# get changed on both sides
local_newer=$( list_diff "$tdir/local_hash" "$@") || { rm -rf "$tdir" ; unlock_all ; return 1; }

View file

@ -70,10 +70,11 @@ delete_local() {
forcepull()
{
local ret=0
get_ignores
get_server || return $?
init_local || return $?
init_server || { unlock_local ; return $?; }
rsync $rsync_opts -r --delete -e ssh "$raddr:$rdir" "$(pwd)/." || ret=$?
server_file_list | rsync $rsync_opts --files-from=- --delete -e ssh "$raddr:$rdir" "$PWD/." || ret=$?
unlock_all
write_lists
return $ret
@ -82,10 +83,11 @@ forcepull()
forcepush()
{
local ret=0
get_ignores
get_server || return $?
init_local || return $?
init_server || { unlock_local ; return $?; }
rsync $rsync_opts -r --delete -e ssh "$(pwd)/." "$raddr:$rdir" || ret=$?
local_file_list | rsync $rsync_opts --files-from=- --delete -e ssh "$PWD/." "$raddr:$rdir" || ret=$?
unlock_all
write_lists
return $ret