From 1f685039c21f7279a21adb6830512f94a0dab4d1 Mon Sep 17 00:00:00 2001 From: Shane Date: Mon, 26 Jan 2026 06:33:52 +0000 Subject: [PATCH] try this #2 --- git-remote-gcrypt | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/git-remote-gcrypt b/git-remote-gcrypt index 5ea56f0..ae9564d 100755 --- a/git-remote-gcrypt +++ b/git-remote-gcrypt @@ -1539,12 +1539,29 @@ get_remote_file_list() echo_info "Debug: Found refs: $refs" for ref in $refs; do echo_info "Debug: Checking ref $ref" - ref_files=$(git -c core.quotePath=false ls-tree -r --name-only "$ref") + # Verify object exists and is valid + if ! git cat-file -e "$ref"; then + echo_info "Debug: Ref $ref points to missing object!" + continue + fi + + local ls_stderr="" + ls_stderr=$(mktemp) + ref_files=$(git -c core.quotePath=false ls-tree -r --name-only "$ref" 2>"$ls_stderr") || { + echo_info "Debug: ls-tree failed for $ref:" + cat "$ls_stderr" >&2 + rm -f "$ls_stderr" + continue + } + rm -f "$ls_stderr" + if isnonnull "$ref_files"; then # Map refs/gcrypt/list-files/BRANCH -> refs/heads/BRANCH local real_ref="refs/heads/${ref#refs/gcrypt/list-files/}" Global_Dirty_Refs="$Global_Dirty_Refs$real_ref " all_files="$all_files$ref_files$Newline" + else + echo_info "Debug: Ref $ref is empty (no files found)." fi done -- 2.52.0