git.vger.kernel.org archive mirror
 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 v9 6/9] ref: add more strict checks for regular refs
Date: Wed, 20 Nov 2024 19:51:49 +0800	[thread overview]
Message-ID: <Zz3NVRoP4JTQxTve@ArchLinux> (raw)
In-Reply-To: <Zz3MON9_9DGD6nsy@ArchLinux>

We have already used "parse_loose_ref_contents" function to check
whether the ref content is valid in files backend. However, by
using "parse_loose_ref_contents", we allow the ref's content to end with
garbage or without a newline.

Even though we never create such loose refs ourselves, we have accepted
such loose refs. So, it is entirely possible that some third-party tools
may rely on such loose refs being valid. We should not report an error
fsck message at current. We should notify the users about such
"curiously formatted" loose refs so that adequate care is taken before
we decide to tighten the rules in the future.

And it's not suitable either to report a warn fsck message to the user.
We don't yet want the "--strict" flag that controls this bit to end up
generating errors for such weirdly-formatted reference contents, as we
first want to assess whether this retroactive tightening will cause
issues for any tools out there. It may cause compatibility issues which
may break the repository. So, we add the following two fsck infos to
represent the situation where the ref content ends without newline or
has trailing garbages:

1. refMissingNewline(INFO): A loose ref that does not end with
   newline(LF).
2. trailingRefContent(INFO): A loose ref has trailing content.

It might appear that we can't provide the user with any warnings by
using FSCK_INFO. However, in "fsck.c::fsck_vreport", we will convert
FSCK_INFO to FSCK_WARN and we can still warn the user about these
situations when using "git refs verify" without introducing
compatibility issues.

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 | 14 +++++++++
 fsck.h                        |  2 ++
 refs.c                        |  2 +-
 refs/files-backend.c          | 26 ++++++++++++++--
 refs/refs-internal.h          |  2 +-
 t/t0602-reffiles-fsck.sh      | 57 +++++++++++++++++++++++++++++++++--
 6 files changed, 96 insertions(+), 7 deletions(-)

diff --git a/Documentation/fsck-msgids.txt b/Documentation/fsck-msgids.txt
index 22c385ea22..6db0eaa84a 100644
--- a/Documentation/fsck-msgids.txt
+++ b/Documentation/fsck-msgids.txt
@@ -173,6 +173,20 @@
 `nullSha1`::
 	(WARN) Tree contains entries pointing to a null sha1.
 
+`refMissingNewline`::
+	(INFO) A loose ref that does not end with newline(LF). As
+	valid implementations of Git never created such a loose ref
+	file, it may become an error in the future. Report to the
+	git@vger.kernel.org mailing list if you see this error, as
+	we need to know what tools created such a file.
+
+`trailingRefContent`::
+	(INFO) A loose ref has trailing content. As valid implementations
+	of Git never created such a loose ref file, it may become an
+	error in the future. Report to the git@vger.kernel.org mailing
+	list if you see this error, as we need to know what tools
+	created such a file.
+
 `treeNotSorted`::
 	(ERROR) A tree is not properly sorted.
 
diff --git a/fsck.h b/fsck.h
index 0d99a87911..b85072df57 100644
--- a/fsck.h
+++ b/fsck.h
@@ -85,6 +85,8 @@ enum fsck_msg_type {
 	FUNC(MAILMAP_SYMLINK, INFO) \
 	FUNC(BAD_TAG_NAME, INFO) \
 	FUNC(MISSING_TAGGER_ENTRY, INFO) \
+	FUNC(REF_MISSING_NEWLINE, INFO) \
+	FUNC(TRAILING_REF_CONTENT, INFO) \
 	/* ignored (elevated when requested) */ \
 	FUNC(EXTRA_HEADER_ENTRY, IGNORE)
 
diff --git a/refs.c b/refs.c
index 395a17273c..f88b32a633 100644
--- a/refs.c
+++ b/refs.c
@@ -1789,7 +1789,7 @@ static int refs_read_special_head(struct ref_store *ref_store,
 	}
 
 	result = parse_loose_ref_contents(ref_store->repo->hash_algo, content.buf,
-					  oid, referent, type, failure_errno);
+					  oid, referent, type, NULL, failure_errno);
 
 done:
 	strbuf_release(&full_path);
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 9f300a7d3c..3d4d612420 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -569,7 +569,7 @@ static int read_ref_internal(struct ref_store *ref_store, const char *refname,
 	buf = sb_contents.buf;
 
 	ret = parse_loose_ref_contents(ref_store->repo->hash_algo, buf,
-				       oid, referent, type, &myerr);
+				       oid, referent, type, NULL, &myerr);
 
 out:
 	if (ret && !myerr)
@@ -606,7 +606,7 @@ static int files_read_symbolic_ref(struct ref_store *ref_store, const char *refn
 int parse_loose_ref_contents(const struct git_hash_algo *algop,
 			     const char *buf, struct object_id *oid,
 			     struct strbuf *referent, unsigned int *type,
-			     int *failure_errno)
+			     const char **trailing, int *failure_errno)
 {
 	const char *p;
 	if (skip_prefix(buf, "ref:", &buf)) {
@@ -628,6 +628,10 @@ int parse_loose_ref_contents(const struct git_hash_algo *algop,
 		*failure_errno = EINVAL;
 		return -1;
 	}
+
+	if (trailing)
+		*trailing = p;
+
 	return 0;
 }
 
@@ -3513,6 +3517,7 @@ static int files_fsck_refs_content(struct ref_store *ref_store,
 	struct strbuf ref_content = STRBUF_INIT;
 	struct strbuf referent = STRBUF_INIT;
 	struct fsck_ref_report report = { 0 };
+	const char *trailing = NULL;
 	unsigned int type = 0;
 	int failure_errno = 0;
 	struct object_id oid;
@@ -3537,7 +3542,7 @@ static int files_fsck_refs_content(struct ref_store *ref_store,
 
 	if (parse_loose_ref_contents(ref_store->repo->hash_algo,
 				     ref_content.buf, &oid, &referent,
-				     &type, &failure_errno)) {
+				     &type, &trailing, &failure_errno)) {
 		strbuf_rtrim(&ref_content);
 		ret = fsck_report_ref(o, &report,
 				      FSCK_MSG_BAD_REF_CONTENT,
@@ -3545,6 +3550,21 @@ static int files_fsck_refs_content(struct ref_store *ref_store,
 		goto cleanup;
 	}
 
+	if (!(type & REF_ISSYMREF)) {
+		if (!*trailing) {
+			ret = fsck_report_ref(o, &report,
+					      FSCK_MSG_REF_MISSING_NEWLINE,
+					      "misses LF at the end");
+			goto cleanup;
+		}
+		if (*trailing != '\n' || *(trailing + 1)) {
+			ret = fsck_report_ref(o, &report,
+					      FSCK_MSG_TRAILING_REF_CONTENT,
+					      "has trailing garbage: '%s'", trailing);
+			goto cleanup;
+		}
+	}
+
 cleanup:
 	strbuf_release(&ref_content);
 	strbuf_release(&referent);
diff --git a/refs/refs-internal.h b/refs/refs-internal.h
index 037d7991cd..125f1fe735 100644
--- a/refs/refs-internal.h
+++ b/refs/refs-internal.h
@@ -716,7 +716,7 @@ struct ref_store {
 int parse_loose_ref_contents(const struct git_hash_algo *algop,
 			     const char *buf, struct object_id *oid,
 			     struct strbuf *referent, unsigned int *type,
-			     int *failure_errno);
+			     const char **trailing, int *failure_errno);
 
 /*
  * Fill in the generic part of refs and add it to our collection of
diff --git a/t/t0602-reffiles-fsck.sh b/t/t0602-reffiles-fsck.sh
index 162370077b..33e7a390ad 100755
--- a/t/t0602-reffiles-fsck.sh
+++ b/t/t0602-reffiles-fsck.sh
@@ -189,7 +189,48 @@ test_expect_success 'regular ref content should be checked (individual)' '
 		EOF
 		rm $branch_dir_prefix/a/b/branch-bad &&
 		test_cmp expect err || return 1
-	done
+	done &&
+
+	printf "%s" "$(git rev-parse main)" >$branch_dir_prefix/branch-no-newline &&
+	git refs verify 2>err &&
+	cat >expect <<-EOF &&
+	warning: refs/heads/branch-no-newline: refMissingNewline: misses LF at the end
+	EOF
+	rm $branch_dir_prefix/branch-no-newline &&
+	test_cmp expect err &&
+
+	for trailing_content in " garbage" "    more garbage"
+	do
+		printf "%s" "$(git rev-parse main)$trailing_content" >$branch_dir_prefix/branch-garbage &&
+		git refs verify 2>err &&
+		cat >expect <<-EOF &&
+		warning: refs/heads/branch-garbage: trailingRefContent: has trailing garbage: '\''$trailing_content'\''
+		EOF
+		rm $branch_dir_prefix/branch-garbage &&
+		test_cmp expect err || return 1
+	done &&
+
+	printf "%s\n\n\n" "$(git rev-parse main)" >$branch_dir_prefix/branch-garbage-special &&
+	git refs verify 2>err &&
+	cat >expect <<-EOF &&
+	warning: refs/heads/branch-garbage-special: trailingRefContent: has trailing garbage: '\''
+
+
+	'\''
+	EOF
+	rm $branch_dir_prefix/branch-garbage-special &&
+	test_cmp expect err &&
+
+	printf "%s\n\n\n  garbage" "$(git rev-parse main)" >$branch_dir_prefix/branch-garbage-special &&
+	git refs verify 2>err &&
+	cat >expect <<-EOF &&
+	warning: refs/heads/branch-garbage-special: trailingRefContent: has trailing garbage: '\''
+
+
+	  garbage'\''
+	EOF
+	rm $branch_dir_prefix/branch-garbage-special &&
+	test_cmp expect err
 '
 
 test_expect_success 'regular ref content should be checked (aggregate)' '
@@ -207,12 +248,16 @@ test_expect_success 'regular ref content should be checked (aggregate)' '
 	printf "%s" $bad_content_1 >$tag_dir_prefix/tag-bad-1 &&
 	printf "%s" $bad_content_2 >$tag_dir_prefix/tag-bad-2 &&
 	printf "%s" $bad_content_3 >$branch_dir_prefix/a/b/branch-bad &&
+	printf "%s" "$(git rev-parse main)" >$branch_dir_prefix/branch-no-newline &&
+	printf "%s garbage" "$(git rev-parse main)" >$branch_dir_prefix/branch-garbage &&
 
 	test_must_fail git refs verify 2>err &&
 	cat >expect <<-EOF &&
 	error: refs/heads/a/b/branch-bad: badRefContent: $bad_content_3
 	error: refs/tags/tag-bad-1: badRefContent: $bad_content_1
 	error: refs/tags/tag-bad-2: badRefContent: $bad_content_2
+	warning: refs/heads/branch-garbage: trailingRefContent: has trailing garbage: '\'' garbage'\''
+	warning: refs/heads/branch-no-newline: refMissingNewline: misses LF at the end
 	EOF
 	sort err >sorted_err &&
 	test_cmp expect sorted_err
@@ -260,7 +305,15 @@ test_expect_success 'ref content checks should work with worktrees' '
 		EOF
 		rm $worktree2_refdir_prefix/bad-branch-2 &&
 		test_cmp expect err || return 1
-	done
+	done &&
+
+	printf "%s" "$(git rev-parse HEAD)" >$worktree1_refdir_prefix/branch-no-newline &&
+	git refs verify 2>err &&
+	cat >expect <<-EOF &&
+	warning: worktrees/worktree-1/refs/worktree/branch-no-newline: refMissingNewline: misses LF at the end
+	EOF
+	rm $worktree1_refdir_prefix/branch-no-newline &&
+	test_cmp expect err
 '
 
 test_done
-- 
2.47.0


  parent reply	other threads:[~2024-11-20 11:51 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           ` [PATCH v5 9/9] ref: add symlink ref content check for files backend shejialuo
2024-10-07  6:58             ` 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                   ` shejialuo [this message]
2024-11-20 11:52                   ` [PATCH v9 7/9] ref: add basic symref content " 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=Zz3NVRoP4JTQxTve@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).