From 5d51a9595e46fa2106fc8d036f0de92ab248fa91 Mon Sep 17 00:00:00 2001 From: qiuzhiqian Date: Mon, 8 Sep 2025 17:29:23 +0800 Subject: [PATCH] refs: Failed to delete remote refs --- src/libostree/ostree-repo-refs.c | 6 +++++- tests/test-refs.sh | 21 ++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/libostree/ostree-repo-refs.c b/src/libostree/ostree-repo-refs.c index 548a1fcbb3..46580dfb47 100644 --- a/src/libostree/ostree-repo-refs.c +++ b/src/libostree/ostree-repo-refs.c @@ -49,7 +49,11 @@ add_ref_to_set (const char *remote, const char *collection_id, int base_fd, cons g_string_append (refname, remote); g_string_append_c (refname, ':'); } - g_string_append (refname, path); + /* Strip leading ./ for remote refs */ + if (remote && g_str_has_prefix (path, "./")) + g_string_append (refname, path + 2); + else + g_string_append (refname, path); g_hash_table_insert (refs, g_string_free (g_steal_pointer (&refname), FALSE), contents); } else diff --git a/tests/test-refs.sh b/tests/test-refs.sh index 53b36f6bbc..d66f7a1e10 100755 --- a/tests/test-refs.sh +++ b/tests/test-refs.sh @@ -23,7 +23,7 @@ set -euo pipefail setup_fake_remote_repo1 "archive" -echo '1..7' +echo '1..8' cd ${test_tmpdir} mkdir repo @@ -228,3 +228,22 @@ if ${CMD_PREFIX} ostree --repo=repo refs -A --create foobar nonexistent 2>err.tx fi assert_file_has_content_literal err.txt 'Cannot create alias to non-existent ref' echo "ok ref no broken alias" + +# Create commits for origin2 remote branches +${CMD_PREFIX} ostree --repo=repo commit --branch=origin2:remote1 -m "test origin2 remote1" --tree=dir=tree +${CMD_PREFIX} ostree --repo=repo commit --branch=origin2:remote2 -m "test origin2 remote2" --tree=dir=tree + +# Verify the refs exist +${CMD_PREFIX} ostree --repo=repo refs > refs.txt +assert_file_has_content refs.txt "origin2:remote1" +assert_file_has_content refs.txt "origin2:remote2" + +# Delete all origin2 remote refs +${CMD_PREFIX} ostree --repo=repo refs --delete origin2: + +# Verify the refs are deleted +${CMD_PREFIX} ostree --repo=repo refs > refs.txt +assert_not_file_has_content refs.txt "origin2:remote1" +assert_not_file_has_content refs.txt "origin2:remote2" + +echo "ok delete remote refs"