diff --git a/backend/tests/test_rc_backup_restore_scripts.py b/backend/tests/test_rc_backup_restore_scripts.py index 62340d85..9752eb21 100644 --- a/backend/tests/test_rc_backup_restore_scripts.py +++ b/backend/tests/test_rc_backup_restore_scripts.py @@ -45,6 +45,8 @@ def test_backup_binds_prepared_source_without_requiring_dot_git() -> None: optional_git_fallback = script.index('if command -v git >/dev/null 2>&1') docker_access = script.index("docker inspect -f '{{.State.Running}}'") assert controller_resolution < optional_git_fallback < docker_access + assert 'git -C "$ROOT" rev-parse --show-toplevel' in script + assert '"$(cd "$git_top" && pwd -P)" = "$(cd "$ROOT" && pwd -P)"' in script assert 'SOURCE_REVISION="$explicit_sha"' in script assert '"backup_tool_revision": ${SOURCE_REVISION@Q}' in script assert '"running_image_revision": ${RUNNING_IMAGE_REVISION@Q}' in script diff --git a/scripts/backup_release_state.sh b/scripts/backup_release_state.sh index 32d26aa3..f69ba993 100644 --- a/scripts/backup_release_state.sh +++ b/scripts/backup_release_state.sh @@ -70,7 +70,7 @@ done resolve_source_revision() { local controller_sha="" explicit_sha="${GEOINTEL_BUILD_SHA:-}" local gitea_sha="${GITEA_COMMIT_SHA:-}" github_sha="${GITHUB_SHA:-}" - local git_head="" git_dirty="false" source="" + local git_head="" git_top="" git_dirty="false" source="" if [ -n "$gitea_sha" ]; then if ! [[ "$gitea_sha" =~ ^[0-9A-Fa-f]{40}$ ]]; then @@ -115,6 +115,9 @@ resolve_source_revision() { fi if command -v git >/dev/null 2>&1 && git -C "$ROOT" rev-parse --git-dir >/dev/null 2>&1; then + git_top="$(git -C "$ROOT" rev-parse --show-toplevel 2>/dev/null || true)" + fi + if [ -n "$git_top" ] && [ "$(cd "$git_top" && pwd -P)" = "$(cd "$ROOT" && pwd -P)" ]; then git_head="$(git -C "$ROOT" rev-parse HEAD 2>/dev/null || true)" git_head="${git_head,,}" if ! [[ "$git_head" =~ ^[0-9a-f]{40}$ ]]; then