Thread (24 messages) 24 messages, 2 authors, 2025-08-08
STALE332d

[PATCH 2/2] remote.c: remove BUG in show_push_unqualified_ref_name_error()

From: Denton Liu <hidden>
Date: 2025-08-04 09:43:09
Subsystem: the rest · Maintainer: Linus Torvalds

In the case where a non-existent oid is given as the <src> for a
refspec and the destination is unqualified, we end up hitting the BUG in
show_push_unqualified_ref_name_error().

This is because before hitting this advise message, the <src> is passed
through repo_get_oid() which, upon receiving a fully qualified oid,
doesn't actually check the existence of the object and just returns
found. This means that it's actually possible for the
odb_read_object_info() call to return not found under normal usage and
thus, it's not actually a bug.

Replace the BUG() with an advise() displaying a helpful message about
the oid possibly not existing.

Signed-off-by: Denton Liu <redacted>
---
 remote.c              | 5 +++--
 t/t5516-fetch-push.sh | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/remote.c b/remote.c
index e965f022f1..9fb76049d2 100644
--- a/remote.c
+++ b/remote.c
@@ -1218,8 +1218,9 @@ static void show_push_unqualified_ref_name_error(const char *dst_value,
 			 "'%s:refs/tags/%s'?"),
 		       matched_src_name, dst_value);
 	} else {
-		BUG("'%s' should be commit/tag/tree/blob, is '%d'",
-		    matched_src_name, type);
+		advise(_("The <src> part of the refspec is an oid that doesn't exist.\n"
+			 "Please ensure that the oid '%s' is correct."),
+		       matched_src_name);
 	}
 }
 
diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
index c2fcfeca92..e064ea7433 100755
--- a/t/t5516-fetch-push.sh
+++ b/t/t5516-fetch-push.sh
@@ -509,7 +509,7 @@ test_expect_success 'push ref expression with non-existent, incomplete dest' '
 
 '
 
-test_expect_failure 'push ref expression with non-existent oid src' '
+test_expect_success 'push ref expression with non-existent oid src' '
 
 	mk_test testrepo &&
 	test_must_fail git push testrepo $(test_oid 001):branch
-- 
2.50.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help