All of lore.kernel.org
 help / color / mirror / Atom feed
From: shejialuo <shejialuo@gmail.com>
To: git@vger.kernel.org
Cc: Patrick Steinhardt <ps@pks.im>,
	Karthik Nayak <karthik.188@gmail.com>,
	Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v5 9/9] ref: add symlink ref content check for files backend
Date: Sun, 29 Sep 2024 15:17:36 +0800	[thread overview]
Message-ID: <Zvj_EELQdMsN7j2w@ArchLinux> (raw)
In-Reply-To: <Zvj-DgHqtC30KjJe@ArchLinux>

We have already introduced "files_fsck_symref_target". We should reuse
this function to handle the symrefs which use legacy symbolic links. We
should not check the trailing garbage for symbolic refs. Add a new
parameter "symbolic_link" to disable some checks which should only be
executed for textual symrefs.

We firstly use the "strbuf_add_real_path" to resolve the symlink and
get the absolute path as the "ref_content" which the symlink ref points
to. Then we can use the absolute "abs_gitdir" of the "gitdir" and then
combine "ref_content" and "abs_gitdir" to extract the relative path
"referent". If "ref_content" is outside of "gitdir", we just use the
"ref_content" as the "referent". Thus, we can reuse
"files_fsck_symref_target" function to seamlessly check the symlink
refs.

Because we consider deprecating writing the symbolic links. We first
need to asses whether symbolic links may still be used. So, add a new
fsck message "symlinkRef(INFO)" to tell the user be aware of this
information.

Mentored-by: Patrick Steinhardt <ps@pks.im>
Mentored-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: shejialuo <shejialuo@gmail.com>
---
 Documentation/fsck-msgids.txt |  6 +++++
 fsck.h                        |  1 +
 refs/files-backend.c          | 43 ++++++++++++++++++++++++++++-----
 t/t0602-reffiles-fsck.sh      | 45 +++++++++++++++++++++++++++++++++++
 4 files changed, 89 insertions(+), 6 deletions(-)

diff --git a/Documentation/fsck-msgids.txt b/Documentation/fsck-msgids.txt
index 223974057d..ffe9d6a2f6 100644
--- a/Documentation/fsck-msgids.txt
+++ b/Documentation/fsck-msgids.txt
@@ -184,6 +184,12 @@
 `nullSha1`::
 	(WARN) Tree contains entries pointing to a null sha1.
 
+`symlinkRef`::
+	(INFO) A symbolic link is used as a symref.  Report to the
+	git@vger.kernel.org mailing list if you see this error, as we
+	are assessing the feasibility of dropping the support to drop
+	creating symblinks as symrefs.
+
 `treeNotSorted`::
 	(ERROR) A tree is not properly sorted.
 
diff --git a/fsck.h b/fsck.h
index 5ecee0fda5..f1da5c8a77 100644
--- a/fsck.h
+++ b/fsck.h
@@ -87,6 +87,7 @@ enum fsck_msg_type {
 	FUNC(MAILMAP_SYMLINK, INFO) \
 	FUNC(BAD_TAG_NAME, INFO) \
 	FUNC(MISSING_TAGGER_ENTRY, INFO) \
+	FUNC(SYMLINK_REF, INFO) \
 	FUNC(UNOFFICIAL_FORMATTED_REF, INFO) \
 	/* ignored (elevated when requested) */ \
 	FUNC(EXTRA_HEADER_ENTRY, IGNORE)
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 1182bca108..5a5327a146 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -1,6 +1,7 @@
 #define USE_THE_REPOSITORY_VARIABLE
 
 #include "../git-compat-util.h"
+#include "../abspath.h"
 #include "../config.h"
 #include "../copy.h"
 #include "../environment.h"
@@ -3510,15 +3511,18 @@ typedef int (*files_fsck_refs_fn)(struct ref_store *ref_store,
 
 static int files_fsck_symref_target(struct fsck_options *o,
 				    struct fsck_ref_report *report,
-				    struct strbuf *referent)
+				    struct strbuf *referent,
+				    unsigned int symbolic_link)
 {
 	char orig_last_byte;
 	size_t orig_len;
 	int ret = 0;
 
-	orig_len = referent->len;
-	orig_last_byte = referent->buf[orig_len - 1];
-	strbuf_rtrim(referent);
+	if (!symbolic_link) {
+		orig_len = referent->len;
+		orig_last_byte = referent->buf[orig_len - 1];
+		strbuf_rtrim(referent);
+	}
 
 	if (!starts_with(referent->buf, "refs/") &&
 	    !starts_with(referent->buf, "worktrees/")) {
@@ -3535,6 +3539,9 @@ static int files_fsck_symref_target(struct fsck_options *o,
 		goto out;
 	}
 
+	if (symbolic_link)
+		goto out;
+
 
 	if (referent->len == orig_len ||
 	    (referent->len < orig_len && orig_last_byte != '\n')) {
@@ -3559,6 +3566,7 @@ static int files_fsck_refs_content(struct ref_store *ref_store,
 				   struct dir_iterator *iter)
 {
 	struct strbuf ref_content = STRBUF_INIT;
+	struct strbuf abs_gitdir = STRBUF_INIT;
 	struct strbuf referent = STRBUF_INIT;
 	struct strbuf refname = STRBUF_INIT;
 	struct fsck_ref_report report = { 0 };
@@ -3571,8 +3579,30 @@ static int files_fsck_refs_content(struct ref_store *ref_store,
 	strbuf_addf(&refname, "%s/%s", refs_check_dir, iter->relative_path);
 	report.path = refname.buf;
 
-	if (S_ISLNK(iter->st.st_mode))
+	if (S_ISLNK(iter->st.st_mode)) {
+		const char* relative_referent_path = NULL;
+
+		ret = fsck_report_ref(o, &report,
+				      FSCK_MSG_SYMLINK_REF,
+				      "use deprecated symbolic link for symref");
+
+		strbuf_add_absolute_path(&abs_gitdir, ref_store->gitdir);
+		strbuf_normalize_path(&abs_gitdir);
+		if (!is_dir_sep(abs_gitdir.buf[abs_gitdir.len - 1]))
+			strbuf_addch(&abs_gitdir, '/');
+
+		strbuf_add_real_path(&ref_content, iter->path.buf);
+		skip_prefix(ref_content.buf, abs_gitdir.buf,
+			    &relative_referent_path);
+
+		if (relative_referent_path)
+			strbuf_addstr(&referent, relative_referent_path);
+		else
+			strbuf_addbuf(&referent, &ref_content);
+
+		ret += files_fsck_symref_target(o, &report, &referent, 1);
 		goto cleanup;
+	}
 
 	if (strbuf_read_file(&ref_content, iter->path.buf, 0) < 0) {
 		ret = fsck_report_ref(o, &report,
@@ -3605,7 +3635,7 @@ static int files_fsck_refs_content(struct ref_store *ref_store,
 			goto cleanup;
 		}
 	} else {
-		ret = files_fsck_symref_target(o, &report, &referent);
+		ret = files_fsck_symref_target(o, &report, &referent, 0);
 		goto cleanup;
 	}
 
@@ -3613,6 +3643,7 @@ static int files_fsck_refs_content(struct ref_store *ref_store,
 	strbuf_release(&refname);
 	strbuf_release(&ref_content);
 	strbuf_release(&referent);
+	strbuf_release(&abs_gitdir);
 	return ret;
 }
 
diff --git a/t/t0602-reffiles-fsck.sh b/t/t0602-reffiles-fsck.sh
index 97bbcd3f13..be4c064b3c 100755
--- a/t/t0602-reffiles-fsck.sh
+++ b/t/t0602-reffiles-fsck.sh
@@ -486,4 +486,49 @@ test_expect_success 'all textual symref checks should work with worktrees' '
 	rm $worktree2_refdir_prefix/branch-garbage
 '
 
+test_expect_success SYMLINKS 'symlink symref content should be checked (individual)' '
+	test_when_finished "rm -rf repo" &&
+	git init repo &&
+	branch_dir_prefix=.git/refs/heads &&
+	tag_dir_prefix=.git/refs/tags &&
+	cd repo &&
+	test_commit default &&
+	mkdir -p "$branch_dir_prefix/a/b" &&
+
+	ln -sf ./main $branch_dir_prefix/branch-symbolic-good &&
+	git refs verify 2>err &&
+	cat >expect <<-EOF &&
+	warning: refs/heads/branch-symbolic-good: symlinkRef: use deprecated symbolic link for symref
+	EOF
+	rm $branch_dir_prefix/branch-symbolic-good &&
+	test_cmp expect err &&
+
+	ln -sf ../../logs/branch-escape $branch_dir_prefix/branch-symbolic &&
+	git refs verify 2>err &&
+	cat >expect <<-EOF &&
+	warning: refs/heads/branch-symbolic: symlinkRef: use deprecated symbolic link for symref
+	warning: refs/heads/branch-symbolic: escapeReferent: referent '\''logs/branch-escape'\'' is outside of refs/ or worktrees/
+	EOF
+	rm $branch_dir_prefix/branch-symbolic &&
+	test_cmp expect err &&
+
+	ln -sf ./"branch   space" $branch_dir_prefix/branch-symbolic-bad &&
+	test_must_fail git refs verify 2>err &&
+	cat >expect <<-EOF &&
+	warning: refs/heads/branch-symbolic-bad: symlinkRef: use deprecated symbolic link for symref
+	error: refs/heads/branch-symbolic-bad: badReferent: points to invalid refname '\''refs/heads/branch   space'\''
+	EOF
+	rm $branch_dir_prefix/branch-symbolic-bad &&
+	test_cmp expect err &&
+
+	ln -sf ./".tag" $tag_dir_prefix/tag-symbolic-1 &&
+	test_must_fail git refs verify 2>err &&
+	cat >expect <<-EOF &&
+	warning: refs/tags/tag-symbolic-1: symlinkRef: use deprecated symbolic link for symref
+	error: refs/tags/tag-symbolic-1: badReferent: points to invalid refname '\''refs/tags/.tag'\''
+	EOF
+	rm $tag_dir_prefix/tag-symbolic-1 &&
+	test_cmp expect err
+'
+
 test_done
-- 
2.46.2


  parent reply	other threads:[~2024-09-29  7:17 UTC|newest]

Thread overview: 209+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-13 14:18 [RFC] Implement ref content consistency check shejialuo
2024-08-15 10:19 ` karthik nayak
2024-08-15 13:37   ` shejialuo
2024-08-16  9:06     ` Patrick Steinhardt
2024-08-16 16:39       ` Junio C Hamano
2024-08-18 15:00 ` [PATCH v1 0/4] add ref content check for files backend shejialuo
2024-08-18 15:01   ` [PATCH v1 1/4] fsck: introduce "FSCK_REF_REPORT_DEFAULT" macro shejialuo
2024-08-20 16:25     ` Junio C Hamano
2024-08-21 12:49       ` shejialuo
2024-08-18 15:01   ` [PATCH v1 2/4] ref: add regular ref content check for files backend shejialuo
2024-08-20 16:49     ` Junio C Hamano
2024-08-21 14:21       ` shejialuo
2024-08-22  8:46       ` Patrick Steinhardt
2024-08-22 16:13         ` Junio C Hamano
2024-08-22 16:17           ` Junio C Hamano
2024-08-23  7:21             ` Patrick Steinhardt
2024-08-23 11:30               ` shejialuo
2024-08-22  8:48     ` Patrick Steinhardt
2024-08-22 12:06       ` shejialuo
2024-08-18 15:01   ` [PATCH v1 3/4] ref: add symbolic " shejialuo
2024-08-22  8:53     ` Patrick Steinhardt
2024-08-22 12:42       ` shejialuo
2024-08-23  5:36         ` Patrick Steinhardt
2024-08-23 11:37           ` shejialuo
2024-08-18 15:02   ` [PATCH v1 4/4] ref: add symlink ref consistency " shejialuo
2024-08-27 16:04   ` [PATCH v2 0/4] add ref content " shejialuo
2024-08-27 16:07     ` [PATCH v2 1/4] ref: initialize "fsck_ref_report" with zero shejialuo
2024-08-27 17:49       ` Junio C Hamano
2024-08-27 16:07     ` [PATCH v2 2/4] ref: add regular ref content check for files backend shejialuo
2024-08-27 16:19       ` shejialuo
2024-08-27 18:21       ` Junio C Hamano
2024-08-28 12:50         ` Patrick Steinhardt
2024-08-28 16:32           ` Junio C Hamano
2024-08-29 10:19             ` Patrick Steinhardt
2024-08-28 14:31         ` shejialuo
2024-08-28 16:45           ` Junio C Hamano
2024-08-28 12:50       ` Patrick Steinhardt
2024-08-28 14:41         ` shejialuo
2024-08-28 15:30         ` Junio C Hamano
2024-08-27 16:08     ` [PATCH v2 3/4] ref: add symbolic " shejialuo
2024-08-27 19:19       ` Junio C Hamano
2024-08-28 15:26         ` shejialuo
2024-08-28 12:50       ` Patrick Steinhardt
2024-08-28 15:36         ` shejialuo
2024-08-28 15:41         ` Junio C Hamano
2024-08-29 10:11           ` Patrick Steinhardt
2024-08-27 16:08     ` [PATCH v2 4/4] ref: add symlink ref " shejialuo
2024-08-28 18:42     ` [PATCH] SQUASH??? remove unused parameters Junio C Hamano
2024-08-28 21:28     ` [PATCH v2 0/4] add ref content check for files backend Junio C Hamano
2024-08-29  4:02       ` Jeff King
2024-08-29  4:59         ` Junio C Hamano
2024-08-29  7:00           ` Patrick Steinhardt
2024-08-29 15:07             ` Junio C Hamano
2024-08-29 19:48             ` Jeff King
2024-08-29 15:48           ` shejialuo
2024-08-29 16:12             ` Junio C Hamano
2024-08-29 15:00         ` [PATCH 8/6] CodingGuidelines: also mention MAYBE_UNUSED Junio C Hamano
2024-08-29 17:52           ` Jeff King
2024-08-29 18:06             ` Junio C Hamano
2024-08-29 18:18               ` [PATCH v2] " Junio C Hamano
2024-08-29 18:27                 ` [PATCH 9/6] git-compat-util: guard definition of MAYBE_UNUSED with __GNUC__ Junio C Hamano
2024-08-29 19:45                   ` Jeff King
2024-08-29 20:19                     ` Junio C Hamano
2024-08-29 19:40                 ` [PATCH v2] CodingGuidelines: also mention MAYBE_UNUSED Jeff King
2024-09-03 12:18     ` [PATCH v3 0/4] add ref content check for files backend shejialuo
2024-09-03 12:20       ` [PATCH v3 1/4] ref: initialize "fsck_ref_report" with zero shejialuo
2024-09-03 12:20       ` [PATCH v3 2/4] ref: add regular ref content check for files backend shejialuo
2024-09-09 15:04         ` Patrick Steinhardt
2024-09-10  7:42           ` shejialuo
2024-09-10 16:07         ` karthik nayak
2024-09-13 10:25           ` shejialuo
2024-09-03 12:20       ` [PATCH v3 3/4] ref: add symref " shejialuo
2024-09-09 15:04         ` Patrick Steinhardt
2024-09-10  8:02           ` shejialuo
2024-09-10 22:19         ` karthik nayak
2024-09-12  4:00           ` shejialuo
2024-09-03 12:21       ` [PATCH v3 4/4] ref: add symlink ref " shejialuo
2024-09-09 15:04         ` Patrick Steinhardt
2024-09-10  8:28           ` shejialuo
2024-09-13 17:14       ` [PATCH v4 0/5] add " shejialuo
2024-09-13 17:17         ` [PATCH v4 1/5] ref: initialize "fsck_ref_report" with zero shejialuo
2024-09-18 16:41           ` Junio C Hamano
2024-09-13 17:17         ` [PATCH v4 2/5] ref: port git-fsck(1) regular refs check for files backend shejialuo
2024-09-18 18:59           ` Junio C Hamano
2024-09-22 14:58             ` shejialuo
2024-09-13 17:17         ` [PATCH v4 3/5] ref: add more strict checks for regular refs shejialuo
2024-09-18 19:39           ` Junio C Hamano
2024-09-22 15:06             ` shejialuo
2024-09-22 16:48               ` Junio C Hamano
2024-09-13 17:18         ` [PATCH v4 4/5] ref: add symref content check for files backend shejialuo
2024-09-18 20:19           ` Junio C Hamano
2024-09-22 15:53             ` shejialuo
2024-09-22 16:55               ` Junio C Hamano
2024-09-13 17:18         ` [PATCH v4 5/5] ref: add symlink ref " shejialuo
2024-09-18 23:02           ` Junio C Hamano
2024-09-18 16:49         ` [PATCH v4 0/5] add " Junio C Hamano
2024-09-29  7:13         ` [PATCH v5 0/9] " shejialuo
2024-09-29  7:15           ` [PATCH v5 1/9] ref: initialize "fsck_ref_report" with zero shejialuo
2024-10-08  7:29             ` Karthik Nayak
2024-09-29  7:15           ` [PATCH v5 2/9] builtin/refs: support multiple worktrees check for refs shejialuo
2024-10-07  6:58             ` Patrick Steinhardt
2024-10-07  8:42               ` shejialuo
2024-10-07  9:16                 ` Patrick Steinhardt
2024-10-07 12:06                   ` shejialuo
2024-09-29  7:15           ` [PATCH v5 3/9] ref: port git-fsck(1) regular refs check for files backend shejialuo
2024-10-07  6:58             ` Patrick Steinhardt
2024-10-07  8:42               ` shejialuo
2024-10-07  9:18                 ` Patrick Steinhardt
2024-10-07 12:08                   ` shejialuo
2024-10-08  7:43             ` Karthik Nayak
2024-10-08 12:24               ` shejialuo
2024-10-08 17:44                 ` Junio C Hamano
2024-10-09  8:05                   ` Patrick Steinhardt
2024-10-09 11:59                     ` shejialuo
2024-10-10  6:52                       ` Patrick Steinhardt
2024-10-10 16:00                         ` Junio C Hamano
2024-10-09 11:55                   ` shejialuo
2024-09-29  7:16           ` [PATCH v5 4/9] ref: add more strict checks for regular refs shejialuo
2024-10-07  6:58             ` Patrick Steinhardt
2024-10-07  8:44               ` shejialuo
2024-10-07  9:25                 ` Patrick Steinhardt
2024-10-07 12:19                   ` shejialuo
2024-09-29  7:16           ` [PATCH v5 5/9] ref: add basic symref content check for files backend shejialuo
2024-10-08  7:58             ` Karthik Nayak
2024-10-08 12:18               ` shejialuo
2024-09-29  7:16           ` [PATCH v5 6/9] ref: add escape check for the referent of symref shejialuo
2024-10-07  6:58             ` Patrick Steinhardt
2024-10-07  8:44               ` shejialuo
2024-10-07  9:26                 ` Patrick Steinhardt
2024-09-29  7:17           ` [PATCH v5 7/9] ref: enhance escape situation for worktrees shejialuo
2024-10-07  6:58             ` Patrick Steinhardt
2024-10-07  8:45               ` shejialuo
2024-09-29  7:17           ` [PATCH v5 8/9] t0602: add ref content checks " shejialuo
2024-10-07  6:58             ` Patrick Steinhardt
2024-10-07  8:45               ` shejialuo
2024-09-29  7:17           ` shejialuo [this message]
2024-10-07  6:58             ` [PATCH v5 9/9] ref: add symlink ref content check for files backend Patrick Steinhardt
2024-10-07  8:45               ` shejialuo
2024-09-30 18:57           ` [PATCH v5 0/9] add " Junio C Hamano
2024-10-01  3:40             ` shejialuo
2024-10-07 12:49           ` shejialuo
2024-10-21 13:32           ` [PATCH v6 " shejialuo
2024-10-21 13:34             ` [PATCH v6 1/9] ref: initialize "fsck_ref_report" with zero shejialuo
2024-10-21 13:34             ` [PATCH v6 2/9] ref: check the full refname instead of basename shejialuo
2024-10-21 15:38               ` karthik nayak
2024-10-22 11:42                 ` shejialuo
2024-11-05  7:11               ` Patrick Steinhardt
2024-11-06 12:37                 ` shejialuo
2024-10-21 13:34             ` [PATCH v6 3/9] ref: initialize target name outside of check functions shejialuo
2024-10-21 15:49               ` karthik nayak
2024-11-05  7:11               ` Patrick Steinhardt
2024-11-06 12:32                 ` shejialuo
2024-11-06 13:14                   ` Patrick Steinhardt
2024-10-21 13:34             ` [PATCH v6 4/9] ref: support multiple worktrees check for refs shejialuo
2024-10-21 15:56               ` karthik nayak
2024-10-22 11:44                 ` shejialuo
2024-11-05  7:11               ` Patrick Steinhardt
2024-11-05 12:52                 ` shejialuo
2024-11-06  6:34                   ` Patrick Steinhardt
2024-11-06 12:20                     ` shejialuo
2024-10-21 13:34             ` [PATCH v6 5/9] ref: port git-fsck(1) regular refs check for files backend shejialuo
2024-11-05  7:11               ` Patrick Steinhardt
2024-10-21 13:34             ` [PATCH v6 6/9] ref: add more strict checks for regular refs shejialuo
2024-10-21 13:35             ` [PATCH v6 7/9] ref: add basic symref content check for files backend shejialuo
2024-10-21 13:35             ` [PATCH v6 8/9] ref: check whether the target of the symref is a ref shejialuo
2024-10-21 13:35             ` [PATCH v6 9/9] ref: add symlink ref content check for files backend shejialuo
2024-10-21 16:09             ` [PATCH v6 0/9] add " Taylor Blau
2024-10-22 11:41               ` shejialuo
2024-10-21 16:18             ` Taylor Blau
2024-11-10 12:07             ` [PATCH v7 " shejialuo
2024-11-10 12:09               ` [PATCH v7 1/9] ref: initialize "fsck_ref_report" with zero shejialuo
2024-11-10 12:09               ` [PATCH v7 2/9] ref: check the full refname instead of basename shejialuo
2024-11-10 12:09               ` [PATCH v7 3/9] ref: initialize ref name outside of check functions shejialuo
2024-11-10 12:09               ` [PATCH v7 4/9] ref: support multiple worktrees check for refs shejialuo
2024-11-10 12:09               ` [PATCH v7 5/9] ref: port git-fsck(1) regular refs check for files backend shejialuo
2024-11-13  7:36                 ` Patrick Steinhardt
2024-11-14 12:09                   ` shejialuo
2024-11-10 12:10               ` [PATCH v7 6/9] ref: add more strict checks for regular refs shejialuo
2024-11-10 12:10               ` [PATCH v7 7/9] ref: add basic symref content check for files backend shejialuo
2024-11-10 12:10               ` [PATCH v7 8/9] ref: check whether the target of the symref is a ref shejialuo
2024-11-10 12:10               ` [PATCH v7 9/9] ref: add symlink ref content check for files backend shejialuo
2024-11-13  7:36                 ` Patrick Steinhardt
2024-11-14 12:18                   ` shejialuo
2024-11-13  7:36               ` [PATCH v7 0/9] add " Patrick Steinhardt
2024-11-14 16:51               ` [PATCH v8 " shejialuo
2024-11-14 16:53                 ` [PATCH v8 1/9] ref: initialize "fsck_ref_report" with zero shejialuo
2024-11-14 16:54                 ` [PATCH v8 2/9] ref: check the full refname instead of basename shejialuo
2024-11-14 16:54                 ` [PATCH v8 3/9] ref: initialize ref name outside of check functions shejialuo
2024-11-14 16:54                 ` [PATCH v8 4/9] ref: support multiple worktrees check for refs shejialuo
2024-11-14 16:54                 ` [PATCH v8 5/9] ref: port git-fsck(1) regular refs check for files backend shejialuo
2024-11-15  7:11                   ` Patrick Steinhardt
2024-11-15 11:08                     ` shejialuo
2024-11-14 16:54                 ` [PATCH v8 6/9] ref: add more strict checks for regular refs shejialuo
2024-11-14 16:54                 ` [PATCH v8 7/9] ref: add basic symref content check for files backend shejialuo
2024-11-14 16:54                 ` [PATCH v8 8/9] ref: check whether the target of the symref is a ref shejialuo
2024-11-14 16:55                 ` [PATCH v8 9/9] ref: add symlink ref content check for files backend shejialuo
2024-11-15 11:10                 ` [PATCH v8 0/9] add " shejialuo
2024-11-20 11:47                 ` [PATCH v9 " shejialuo
2024-11-20 11:51                   ` [PATCH v9 1/9] ref: initialize "fsck_ref_report" with zero shejialuo
2024-11-20 11:51                   ` [PATCH v9 2/9] ref: check the full refname instead of basename shejialuo
2024-11-20 11:51                   ` [PATCH v9 3/9] ref: initialize ref name outside of check functions shejialuo
2024-11-20 11:51                   ` [PATCH v9 4/9] ref: support multiple worktrees check for refs shejialuo
2024-11-20 11:51                   ` [PATCH v9 5/9] ref: port git-fsck(1) regular refs check for files backend shejialuo
2024-11-20 11:51                   ` [PATCH v9 6/9] ref: add more strict checks for regular refs shejialuo
2024-11-20 11:52                   ` [PATCH v9 7/9] ref: add basic symref content check for files backend shejialuo
2024-11-20 11:52                   ` [PATCH v9 8/9] ref: check whether the target of the symref is a ref shejialuo
2024-11-20 11:52                   ` [PATCH v9 9/9] ref: add symlink ref content check for files backend shejialuo
2024-11-20 14:26                   ` [PATCH v9 0/9] add " Patrick Steinhardt
2024-11-20 23:21                     ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zvj_EELQdMsN7j2w@ArchLinux \
    --to=shejialuo@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=karthik.188@gmail.com \
    --cc=ps@pks.im \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.