deploy: never --delete into the phone's tree
It is not a git repo, it gets edited on the device, and this path had no snapshot while the local compose path has had one all along. Now it snapshots to ~/souveraine-surfaces/.quickshell-previous, copies by checksum, and only reports phone-only files instead of destroying them.
This commit is contained in:
parent
49635fb005
commit
8a4eebbdd4
1 changed files with 42 additions and 2 deletions
|
|
@ -18,7 +18,10 @@
|
||||||
# deploy.sh -u remove the souveraine config dir (ii untouched)
|
# deploy.sh -u remove the souveraine config dir (ii untouched)
|
||||||
# deploy.sh --legacy-clean remove the OLD overlay symlinks from ii and
|
# deploy.sh --legacy-clean remove the OLD overlay symlinks from ii and
|
||||||
# restore its .upstream backups (one-time migration)
|
# restore its .upstream backups (one-time migration)
|
||||||
# deploy.sh --phone rsync this surface to the phone and deploy there
|
# deploy.sh --phone copy this surface to the phone and deploy there.
|
||||||
|
# NEVER deletes on the device: it snapshots the phone's
|
||||||
|
# tree first, copies by checksum, and only *reports*
|
||||||
|
# files that exist solely on the phone.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
SRC="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SRC="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
@ -246,7 +249,44 @@ if [[ "${1:-}" == "--phone" ]]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
"${ssh_i[@]}" "$PHONE_USB" "mkdir -p ~/$PHONE_DEST"
|
"${ssh_i[@]}" "$PHONE_USB" "mkdir -p ~/$PHONE_DEST"
|
||||||
rsync -a --delete -e "ssh -F /dev/null -i $HOME/.ssh/ani" "$SRC/" "$PHONE_USB:$PHONE_DEST/"
|
|
||||||
|
# NEVER --delete into the phone's tree.
|
||||||
|
#
|
||||||
|
# `~/souveraine-surfaces` on the device is not a git repo — nothing there has
|
||||||
|
# history — and files get edited directly on the phone. This path used to be
|
||||||
|
# `rsync -a --delete` with no snapshot, so an on-device edit was destroyed
|
||||||
|
# with no record that it had existed. It cost real work more than once, and
|
||||||
|
# it is the root of both the ~900-file ii drift and the stevia pkgrels that
|
||||||
|
# only ever existed on the phone.
|
||||||
|
#
|
||||||
|
# Note the asymmetry that made it survive: the LOCAL compose path below
|
||||||
|
# snapshots to .ii-previous/.souveraine-previous before it switches
|
||||||
|
# anything. Only the phone — the one machine that is a daily driver and has
|
||||||
|
# no history — was handled without one.
|
||||||
|
#
|
||||||
|
# So: snapshot first, copy without deleting, and REPORT what a --delete
|
||||||
|
# would have taken. Divergence becomes visible instead of being silently
|
||||||
|
# resolved in the laptop's favour.
|
||||||
|
PHONE_SNAPSHOT="souveraine-surfaces/.quickshell-previous"
|
||||||
|
if ! "${ssh_i[@]}" "$PHONE_USB" \
|
||||||
|
"mkdir -p ~/$PHONE_SNAPSHOT && rsync -a --delete ~/$PHONE_DEST/ ~/$PHONE_SNAPSHOT/"; then
|
||||||
|
echo "ERROR: could not snapshot the phone's surface tree — refusing to write to it" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "phone tree snapshotted to ~/$PHONE_SNAPSHOT"
|
||||||
|
|
||||||
|
# What a --delete would have destroyed. Listed, never removed.
|
||||||
|
phone_only="$(rsync -ain --delete -e "ssh -F /dev/null -i $HOME/.ssh/ani" \
|
||||||
|
"$SRC/" "$PHONE_USB:$PHONE_DEST/" 2>/dev/null | sed -n 's/^deleting //p')"
|
||||||
|
if [[ -n "$phone_only" ]]; then
|
||||||
|
echo "phone-only files LEFT IN PLACE (a --delete would have destroyed these):" >&2
|
||||||
|
printf '%s\n' "$phone_only" | sed 's/^/ /' >&2
|
||||||
|
echo " → if any of that is work you want, copy it back into the repo now." >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Checksum, not timestamp. Plain -a reports files that differ only in mtime
|
||||||
|
# from earlier hand copies, which lies about what is actually changing.
|
||||||
|
rsync -ac -e "ssh -F /dev/null -i $HOME/.ssh/ani" "$SRC/" "$PHONE_USB:$PHONE_DEST/"
|
||||||
printf '%s\n' "$deployed_revision" \
|
printf '%s\n' "$deployed_revision" \
|
||||||
| "${ssh_i[@]}" "$PHONE_USB" "cat > ~/$PHONE_DEST/DEPLOYED-REVISION"
|
| "${ssh_i[@]}" "$PHONE_USB" "cat > ~/$PHONE_DEST/DEPLOYED-REVISION"
|
||||||
"${ssh_i[@]}" "$PHONE_USB" "bash ~/$PHONE_DEST/deploy.sh"
|
"${ssh_i[@]}" "$PHONE_USB" "bash ~/$PHONE_DEST/deploy.sh"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue