From b641ac35b4db0414898445e50111cec117879a00 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Mon, 4 May 2026 01:12:20 -0300 Subject: [PATCH] fix: keep server RC matrix from mutating checkout --- Cargo.lock | 6 ++--- client/Cargo.toml | 2 +- common/Cargo.toml | 2 +- .../manual/run_server_to_rc_mode_matrix.sh | 24 ++++++++++++++----- server/Cargo.toml | 2 +- .../client_manual_sync_script_contract.rs | 3 +++ 6 files changed, 27 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3f5f41b..74a834a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1652,7 +1652,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "lesavka_client" -version = "0.19.12" +version = "0.19.13" dependencies = [ "anyhow", "async-stream", @@ -1686,7 +1686,7 @@ dependencies = [ [[package]] name = "lesavka_common" -version = "0.19.12" +version = "0.19.13" dependencies = [ "anyhow", "base64", @@ -1698,7 +1698,7 @@ dependencies = [ [[package]] name = "lesavka_server" -version = "0.19.12" +version = "0.19.13" dependencies = [ "anyhow", "base64", diff --git a/client/Cargo.toml b/client/Cargo.toml index b04d774..4e27fdc 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -4,7 +4,7 @@ path = "src/main.rs" [package] name = "lesavka_client" -version = "0.19.12" +version = "0.19.13" edition = "2024" [dependencies] diff --git a/common/Cargo.toml b/common/Cargo.toml index 302e09d..924e3e5 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lesavka_common" -version = "0.19.12" +version = "0.19.13" edition = "2024" build = "build.rs" diff --git a/scripts/manual/run_server_to_rc_mode_matrix.sh b/scripts/manual/run_server_to_rc_mode_matrix.sh index 2d1733b..0508d23 100755 --- a/scripts/manual/run_server_to_rc_mode_matrix.sh +++ b/scripts/manual/run_server_to_rc_mode_matrix.sh @@ -24,6 +24,7 @@ LESAVKA_SERVER_RC_DEFAULT_VIDEO_DELAY_US=${LESAVKA_SERVER_RC_DEFAULT_VIDEO_DELAY LESAVKA_SERVER_RC_MODE_DELAYS_US=${LESAVKA_SERVER_RC_MODE_DELAYS_US:-640x480@20=170000,1280x720@30=170000,1920x1080@20=170000,1920x1080@30=170000} LESAVKA_SERVER_RC_RECONFIGURE=${LESAVKA_SERVER_RC_RECONFIGURE:-0} LESAVKA_SERVER_RC_RECONFIGURE_REF=${LESAVKA_SERVER_RC_RECONFIGURE_REF:-master} +LESAVKA_SERVER_RC_RECONFIGURE_UPDATE=${LESAVKA_SERVER_RC_RECONFIGURE_UPDATE:-0} LESAVKA_SERVER_RC_RECONFIGURE_COMMAND=${LESAVKA_SERVER_RC_RECONFIGURE_COMMAND:-} LESAVKA_SERVER_RC_CONTINUE_ON_FAIL=${LESAVKA_SERVER_RC_CONTINUE_ON_FAIL:-1} @@ -108,15 +109,17 @@ reconfigure_server_mode() { ssh ${SSH_OPTS} "${LESAVKA_SERVER_HOST}" bash -s -- \ "${LESAVKA_SERVER_REPO}" \ "${LESAVKA_SERVER_RC_RECONFIGURE_REF}" \ + "${LESAVKA_SERVER_RC_RECONFIGURE_UPDATE}" \ "${width}" \ "${height}" \ "${fps}" <<'REMOTE_RECONFIGURE' set -euo pipefail repo=$1 ref=$2 -width=$3 -height=$4 -fps=$5 +update_checkout=$3 +width=$4 +height=$5 +fps=$6 if [[ "${repo}" == "auto" ]]; then for candidate in \ "${HOME}/Development/lesavka" \ @@ -140,9 +143,18 @@ if [[ "${repo}" == "auto" || ! -f "${repo}/scripts/install/server.sh" ]]; then fi printf ' ↪ using server repo: %s\n' "${repo}" cd "${repo}" -git fetch --all --prune -git checkout "${ref}" -git pull --ff-only +if [[ "${update_checkout}" != "0" ]]; then + if [[ -n "$(git status --porcelain)" ]]; then + printf 'server checkout has local changes; refusing to update it for the mode matrix.\n' >&2 + printf 'Run with LESAVKA_SERVER_RC_RECONFIGURE_UPDATE=0, or clean/update the checkout intentionally.\n' >&2 + exit 66 + fi + git fetch --all --prune + git checkout "${ref}" + git pull --ff-only +else + printf ' ↪ leaving server checkout untouched; set LESAVKA_SERVER_RC_RECONFIGURE_UPDATE=1 to update it first\n' +fi sudo env \ LESAVKA_REF="${ref}" \ LESAVKA_INSTALL_UVC_CODEC=mjpeg \ diff --git a/server/Cargo.toml b/server/Cargo.toml index 94c7d37..c914a71 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -10,7 +10,7 @@ bench = false [package] name = "lesavka_server" -version = "0.19.12" +version = "0.19.13" edition = "2024" autobins = false diff --git a/testing/tests/client_manual_sync_script_contract.rs b/testing/tests/client_manual_sync_script_contract.rs index 83bc3ed..3fbc2e7 100644 --- a/testing/tests/client_manual_sync_script_contract.rs +++ b/testing/tests/client_manual_sync_script_contract.rs @@ -191,10 +191,13 @@ fn server_rc_mode_matrix_validates_advertised_uvc_profiles() { "LESAVKA_SERVER_RC_DEFAULT_VIDEO_DELAY_US=${LESAVKA_SERVER_RC_DEFAULT_VIDEO_DELAY_US:-170000}", "LESAVKA_SERVER_RC_MODE_DELAYS_US=${LESAVKA_SERVER_RC_MODE_DELAYS_US:-640x480@20=170000,1280x720@30=170000,1920x1080@20=170000,1920x1080@30=170000}", "LESAVKA_SERVER_RC_RECONFIGURE=${LESAVKA_SERVER_RC_RECONFIGURE:-0}", + "LESAVKA_SERVER_RC_RECONFIGURE_UPDATE=${LESAVKA_SERVER_RC_RECONFIGURE_UPDATE:-0}", "could not find a Lesavka checkout on this server host", "Set LESAVKA_SERVER_REPO=/path/to/lesavka", "/home/theia/Development/lesavka", "using server repo:", + "server checkout has local changes; refusing to update it for the mode matrix", + "leaving server checkout untouched", "LESAVKA_SERVER_RC_FRESHNESS_MAX_AGE_MS=${LESAVKA_SERVER_RC_FRESHNESS_MAX_AGE_MS:-350}", "LESAVKA_SERVER_RC_MAX_VIDEO_HICCUPS=${LESAVKA_SERVER_RC_MAX_VIDEO_HICCUPS:-0}", "LESAVKA_SERVER_RC_MAX_AUDIO_HICCUPS=${LESAVKA_SERVER_RC_MAX_AUDIO_HICCUPS:-0}",