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>,
Eric Sunshine <sunshine@sunshineco.com>
Subject: [GSoC][PATCH v3 0/7] ref consistency check infra setup
Date: Tue, 18 Jun 2024 16:14:00 +0800 [thread overview]
Message-ID: <ZnFByMI1lWUDSxLd@ArchLinux> (raw)
In-Reply-To: <20240612085349.710785-1-shejialuo@gmail.com>
This is the third version. Mainly focuses on the following problems:
1. Add "escape" check for symrefs and symbolic links.
2. Resolve the reviews.
3. Fix some errors in version 2.
shejialuo (7):
fsck: add refs check interfaces to interface with fsck error levels
refs: set up ref consistency check infrastructure
builtin/refs: add verify subcommand
builtin/fsck: add `git-refs verify` child process
files-backend: add unified interface for refs scanning
fsck: add ref name check for files backend
fsck: add ref content check for files backend
Documentation/fsck-msgids.txt | 12 ++
Documentation/git-refs.txt | 13 ++
builtin/fsck.c | 17 +++
builtin/refs.c | 45 ++++++
fsck.c | 69 +++++++++
fsck.h | 49 ++++++-
refs.c | 7 +-
refs.h | 8 ++
refs/debug.c | 11 ++
refs/files-backend.c | 255 +++++++++++++++++++++++++++++++++-
refs/packed-backend.c | 8 ++
refs/refs-internal.h | 11 +-
refs/reftable-backend.c | 8 ++
t/t0602-reffiles-fsck.sh | 211 ++++++++++++++++++++++++++++
14 files changed, 716 insertions(+), 8 deletions(-)
create mode 100755 t/t0602-reffiles-fsck.sh
Range-diff against v2:
1: a65de15dc7 ! 1: b8d20c4be9 fsck: add refs check interfaces to interface with fsck error levels
@@ fsck.h: int fsck_error_cb_print_missing_gitmodules(struct fsck_options *o,
+struct fsck_refs_options {
+ enum fsck_msg_type *msg_type;
+ unsigned strict:1;
++
+ fsck_refs_error error_func;
+ unsigned verbose:1;
+};
@@ fsck.h: int fsck_error_cb_print_missing_gitmodules(struct fsck_options *o,
+}
+
struct fsck_options {
++ /*
++ * Reorder the fields to allow `fsck_ref_options` to use
++ * the interfaces using `struct fsck_options`.
++ */
+ enum fsck_msg_type *msg_type;
+ unsigned strict:1;
++
fsck_walk_func walk;
fsck_error error_func;
- unsigned strict:1;
2: a87149069a ! 2: c7ed95d6b4 refs: set up ref consistency check infrastructure
@@ refs/debug.c: static int debug_reflog_expire(struct ref_store *ref_store, const
+static int debug_fsck(struct ref_store *ref_store,
+ struct fsck_refs_options *o)
+{
-+ trace_printf_key(&trace_refs, "fsck\n");
-+ return 0;
++ struct debug_ref_store *drefs = (struct debug_ref_store *)ref_store;
++ int res = drefs->refs->be->fsck(drefs->refs, o);
++ trace_printf_key(&trace_refs, "fsck: %d\n", res);
++ return res;
+}
+
struct ref_storage_be refs_be_debug = {
3: e1f1b77527 ! 3: 373f470fdc builtin/refs: add verify subcommand
@@ Documentation/git-refs.txt: include::ref-storage-format.txt[]
can be used to double check that the migration works as expected before
performing the actual migration.
++The following options are specific to 'git refs verify':
++
+--strict::
+ Enable more strict checking, every WARN severity for the `Fsck Messages`
+ be seen as ERROR.
4: 2b0ee79e78 = 4: 4f8ebea573 builtin/fsck: add `git-refs verify` child process
5: 6d23eaa1d1 ! 5: 6062b3b453 files-backend: add unified interface for refs scanning
@@ refs/files-backend.c: static int files_ref_store_remove_on_disk(struct ref_store
struct fsck_refs_options *o)
{
@@ refs/files-backend.c: static int files_fsck(struct ref_store *ref_store,
+ struct files_ref_store *refs =
files_downcast(ref_store, REF_STORE_READ, "fsck");
- ret = refs->packed_ref_store->be->fsck(refs->packed_ref_store, o);
-+ ret = files_fsck_refs(ref_store, o);
+- ret = refs->packed_ref_store->be->fsck(refs->packed_ref_store, o);
++ ret = refs->packed_ref_store->be->fsck(refs->packed_ref_store, o)
++ | files_fsck_refs(ref_store, o);
+
return ret;
}
6: 8c55ecdd88 = 6: 87a22f4c7f fsck: add ref name check for files backend
7: aba5f50940 ! 7: b945f61ef1 fsck: add ref content check for files backend
@@ Commit message
in the files backend. The new functionality ensures that symrefs, real
symbolic link and regular refs are validated correctly.
- Add a new function "files_fsck_symref" to check whether the symrefs and
- symbolic link points to a valid object and a new function
- "files_fsck_refs_content" handles both regular refs and symbolic refs.
+ In order to check the trailing content of the regular refs, add a new
+ parameter `trailing` to `parse_loose_ref_contents`.
- In order to check the trailing content, add a new parameter
- "trailing" to "parse_loose_ref_contents" function.
+ For symrefs, `parse_loose_ref_contents` will set the "referent".
+ However, symbolic link could be either absolute or relative. Use
+ "strbuf_add_real_path" to read the symbolic link and convert the
+ relative path to absolute path. Then use "skip_prefix" to make it align
+ with symref "referent".
+
+ Thus, the symrefs and symbolic links could share the same interface. Add
+ a new function "files_fsck_symref_target" which aims at checking the
+ following things:
+
+ 1. whether the pointee is under the `refs/` directory.
+ 2. whether the pointee name is correct.
+ 3. whether the pointee path is a wrong type in filesystem.
Last, add the following FSCK MESSAGEs:
- 1. "badRefSha(ERROR)": A ref has a bad sha.
- 2. "danglingSymre(WARN)": Found a dangling symref.
+ 1. "badRefContent(ERROR)": A ref has a bad content
+ 2. "badSymrefPointee(ERROR)": The pointee of a symref is bad.
3. "trailingRefContent(WARN)": A ref content has trailing contents.
Mentored-by: Patrick Steinhardt <ps@pks.im>
@@ Commit message
## Documentation/fsck-msgids.txt ##
@@
+ `badParentSha1`::
+ (ERROR) A commit object has a bad parent sha1.
+
++`badRefContent`::
++ (ERROR) A ref has a bad content.
++
`badRefName`::
(ERROR) A ref has a bad name.
-+`badRefSha`::
-+ (ERROR) A ref has a bad sha.
++`badSymrefPointee`::
++ (ERROR) The pointee of a symref is bad.
+
`badTagName`::
(INFO) A tag has an invalid format.
-@@
- `badType`::
- (ERROR) Found an invalid object type.
-
-+`danglingSymref`::
-+ (WARN) Found a dangling symref.
-+
- `duplicateEntries`::
- (ERROR) A tree contains duplicate file entries.
-
@@
`symlinkTargetMissing`::
(ERROR) Unable to read symbolic link target's blob.
@@ fsck.h: enum fsck_msg_type {
FUNC(BAD_OBJECT_SHA1, ERROR) \
FUNC(BAD_PARENT_SHA1, ERROR) \
FUNC(BAD_REF_NAME, ERROR) \
-+ FUNC(BAD_REF_SHA, ERROR) \
++ FUNC(BAD_REF_CONTENT, ERROR) \
++ FUNC(BAD_SYMREF_POINTEE, ERROR) \
FUNC(BAD_TIMEZONE, ERROR) \
FUNC(BAD_TREE, ERROR) \
FUNC(BAD_TREE_SHA1, ERROR) \
@@ fsck.h: enum fsck_msg_type {
- FUNC(SYMLINK_TARGET_BLOB, ERROR) \
- /* warnings */ \
- FUNC(EMPTY_NAME, WARN) \
-+ FUNC(DANGLING_SYMREF, WARN) \
- FUNC(FULL_PATHNAME, WARN) \
- FUNC(HAS_DOT, WARN) \
FUNC(HAS_DOTDOT, WARN) \
FUNC(HAS_DOTGIT, WARN) \
FUNC(NULL_SHA1, WARN) \
@@ refs.c: static int refs_read_special_head(struct ref_store *ref_store,
strbuf_release(&full_path);
## refs/files-backend.c ##
+@@
+ #include "../git-compat-util.h"
++#include "../abspath.h"
+ #include "../copy.h"
+ #include "../environment.h"
+ #include "../gettext.h"
@@ refs/files-backend.c: static int read_ref_internal(struct ref_store *ref_store, const char *refname,
strbuf_rtrim(&sb_contents);
buf = sb_contents.buf;
@@ refs/files-backend.c: static int files_read_symbolic_ref(struct ref_store *ref_s
int parse_loose_ref_contents(const char *buf, struct object_id *oid,
struct strbuf *referent, unsigned int *type,
- int *failure_errno)
-+ int *failure_errno, unsigned int *trailing)
++ int *failure_errno, const char **trailing)
{
const char *p;
if (skip_prefix(buf, "ref:", &buf)) {
@@ refs/files-backend.c: int parse_loose_ref_contents(const char *buf, struct objec
return -1;
}
+
-+ if (trailing && (*p != '\0' && *p != '\n'))
-+ *trailing = 1;
++ if (trailing)
++ *trailing = p;
+
return 0;
}
@@ refs/files-backend.c: static int files_fsck_refs_name(struct fsck_refs_options *
return ret;
}
-+static int files_fsck_symref(struct fsck_refs_options *o,
-+ struct strbuf *refname,
-+ struct strbuf *path)
++/*
++ * Check the symref "pointee_name" and "pointee_path". The caller should
++ * make sure that "pointee_path" is absolute. For symbolic ref, "pointee_name"
++ * would be the content after "refs:". For symblic link, "pointee_name" would
++ * be the relative path agaignst "gitdir".
++ */
++static int files_fsck_symref_target(struct fsck_refs_options *o,
++ const char *refname,
++ const char *pointee_name,
++ const char *pointee_path)
+{
++ const char *p = NULL;
+ struct stat st;
+ int ret = 0;
+
-+ if (lstat(path->buf, &st) < 0) {
-+ ret = fsck_refs_report(o, refname->buf,
-+ FSCK_MSG_DANGLING_SYMREF,
-+ "point to non-existent ref");
++ if (!skip_prefix(pointee_name, "refs/", &p)) {
++
++ ret = fsck_refs_report(o, refname,
++ FSCK_MSG_BAD_SYMREF_POINTEE,
++ "point to target out of refs hierarchy");
+ goto out;
+ }
+
++ if (check_refname_format(pointee_name, 0)) {
++ ret = fsck_refs_report(o, refname,
++ FSCK_MSG_BAD_SYMREF_POINTEE,
++ "point to invalid refname");
++ }
++
++ if (lstat(pointee_path, &st) < 0)
++ goto out;
++
+ if (!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode)) {
-+ ret = fsck_refs_report(o, refname->buf,
-+ FSCK_MSG_DANGLING_SYMREF,
-+ "point to invalid object");
++ ret = fsck_refs_report(o, refname,
++ FSCK_MSG_BAD_SYMREF_POINTEE,
++ "point to invalid target");
+ goto out;
+ }
+out:
@@ refs/files-backend.c: static int files_fsck_refs_name(struct fsck_refs_options *
+ const char *refs_check_dir,
+ struct dir_iterator *iter)
+{
-+ struct strbuf path = STRBUF_INIT,
-+ refname = STRBUF_INIT,
++ struct strbuf pointee_path = STRBUF_INIT,
+ ref_content = STRBUF_INIT,
-+ referent = STRBUF_INIT;
-+ unsigned int trailing = 0;
++ abs_gitdir = STRBUF_INIT,
++ referent = STRBUF_INIT,
++ refname = STRBUF_INIT;
++ const char *trailing = NULL;
+ int failure_errno = 0;
+ unsigned int type = 0;
+ struct object_id oid;
+ int ret = 0;
+
-+ strbuf_addbuf(&path, &iter->path);
+ strbuf_addf(&refname, "%s/%s", refs_check_dir, iter->relative_path);
+
+ /*
@@ refs/files-backend.c: static int files_fsck_refs_name(struct fsck_refs_options *
+ * of the destination object.
+ */
+ if (S_ISLNK(iter->st.st_mode)) {
-+ strbuf_strip_file_from_path(&path);
-+ ret = strbuf_readlink(&ref_content,
-+ iter->path.buf, iter->st.st_size);
-+ if (ret < 0) {
-+ ret = error_errno(_("could not read link '%s'"),
-+ iter->path.buf);
++ const char *pointee_name = NULL;
++
++ strbuf_add_real_path(&pointee_path, iter->path.buf);
++
++ strbuf_add_absolute_path(&abs_gitdir, gitdir);
++ strbuf_normalize_path(&abs_gitdir);
++ if (!is_dir_sep(abs_gitdir.buf[abs_gitdir.len - 1]))
++ strbuf_addch(&abs_gitdir, '/');
++
++ if (!skip_prefix(pointee_path.buf,
++ abs_gitdir.buf, &pointee_name)) {
++ ret = fsck_refs_report(o, refname.buf,
++ FSCK_MSG_BAD_SYMREF_POINTEE,
++ "point to target outside gitdir");
+ goto clean;
+ }
-+ strbuf_addbuf(&path, &ref_content);
-+ strbuf_reset(&ref_content);
+
-+ ret = files_fsck_symref(o, &refname, &path);
++ ret = files_fsck_symref_target(o, refname.buf, pointee_name,
++ pointee_path.buf);
+ goto clean;
+ }
+
-+ if (strbuf_read_file(&ref_content, path.buf, 0) < 0) {
++ if (strbuf_read_file(&ref_content, iter->path.buf, 0) < 0) {
+ ret = error_errno(_("%s/%s: unable to read the ref"),
+ refs_check_dir, iter->relative_path);
+ goto clean;
@@ refs/files-backend.c: static int files_fsck_refs_name(struct fsck_refs_options *
+ &referent, &type,
+ &failure_errno, &trailing)) {
+ ret = fsck_refs_report(o, refname.buf,
-+ FSCK_MSG_BAD_REF_SHA,
++ FSCK_MSG_BAD_REF_CONTENT,
+ "invalid ref content");
+ goto clean;
+ }
@@ refs/files-backend.c: static int files_fsck_refs_name(struct fsck_refs_options *
+ * connectivity.
+ */
+ if (referent.len && (type & REF_ISSYMREF)) {
-+ strbuf_reset(&path);
-+ strbuf_addf(&path, "%s/%s", gitdir, referent.buf);
-+
-+ if (check_refname_format(referent.buf, 0)) {
-+ ret = fsck_refs_report(o, refname.buf,
-+ FSCK_MSG_DANGLING_SYMREF,
-+ "point to invalid refname");
-+ goto clean;
-+ }
++ strbuf_addf(&pointee_path, "%s/%s", gitdir, referent.buf);
++ strbuf_rtrim(&referent);
+
-+ ret = files_fsck_symref(o, &refname, &path);
++ ret = files_fsck_symref_target(o, refname.buf, referent.buf,
++ pointee_path.buf);
+ goto clean;
+ } else {
+ /*
+ * Only regular refs could have a trailing garbage. Should
+ * be reported as a warning.
+ */
-+ if (trailing) {
++ if (trailing && (*trailing != '\0' && *trailing != '\n')) {
+ ret = fsck_refs_report(o, refname.buf,
+ FSCK_MSG_TRAILING_REF_CONTENT,
+ "trailing garbage in ref");
@@ refs/files-backend.c: static int files_fsck_refs_name(struct fsck_refs_options *
+ }
+
+clean:
-+ strbuf_release(&path);
++ strbuf_release(&abs_gitdir);
++ strbuf_release(&pointee_path);
+ strbuf_release(&refname);
+ strbuf_release(&ref_content);
+ strbuf_release(&referent);
@@ refs/refs-internal.h: struct ref_store {
/*
* Parse contents of a loose ref file. *failure_errno maybe be set to EINVAL for
- * invalid contents.
-+ * invalid contents. Also trailing is set to 1 when there is any bytes after the
-+ * hex.
++ * invalid contents. Also *trailing is set to the first character after the
++ * refname or NULL if the referent is not empty.
*/
int parse_loose_ref_contents(const char *buf, struct object_id *oid,
struct strbuf *referent, unsigned int *type,
- int *failure_errno);
-+ int *failure_errno, unsigned int *trailing);
++ int *failure_errno, const char **trailing);
/*
* Fill in the generic part of refs and add it to our collection of
@@ t/t0602-reffiles-fsck.sh: test_expect_success 'ref name check should be adapted
+ printf "xfsazqfxcadas" > $tag_dir_prefix/tag-2-bad &&
+ test_must_fail git refs verify 2>err &&
+ cat >expect <<-EOF &&
-+ error: refs/tags/tag-2-bad: badRefSha: invalid ref content
++ error: refs/tags/tag-2-bad: badRefContent: invalid ref content
+ EOF
+ rm $tag_dir_prefix/tag-2-bad &&
+ test_cmp expect err
@@ t/t0602-reffiles-fsck.sh: test_expect_success 'ref name check should be adapted
+ printf "xfsazqfxcadas" > $branch_dir_prefix/a/b/branch-2-bad &&
+ test_must_fail git refs verify 2>err &&
+ cat >expect <<-EOF &&
-+ error: refs/heads/a/b/branch-2-bad: badRefSha: invalid ref content
++ error: refs/heads/a/b/branch-2-bad: badRefContent: invalid ref content
+ EOF
+ rm $branch_dir_prefix/a/b/branch-2-bad &&
+ test_cmp expect err
@@ t/t0602-reffiles-fsck.sh: test_expect_success 'ref name check should be adapted
+ ) &&
+ (
+ cd repo &&
-+ printf "ref: refs/heads/branch-3" > $branch_dir_prefix/branch-2-bad &&
-+ git refs verify 2>err &&
++ printf "ref: refs/heads/.branch" > $branch_dir_prefix/branch-2-bad &&
++ test_must_fail git refs verify 2>err &&
+ cat >expect <<-EOF &&
-+ warning: refs/heads/branch-2-bad: danglingSymref: point to non-existent ref
++ error: refs/heads/branch-2-bad: badSymrefPointee: point to invalid refname
+ EOF
+ rm $branch_dir_prefix/branch-2-bad &&
+ test_cmp expect err
+ ) &&
+ (
+ cd repo &&
-+ printf "ref: refs/heads/.branch" > $branch_dir_prefix/branch-2-bad &&
-+ git refs verify 2>err &&
++ printf "ref: refs/heads" > $branch_dir_prefix/branch-2-bad &&
++ test_must_fail git refs verify 2>err &&
+ cat >expect <<-EOF &&
-+ warning: refs/heads/branch-2-bad: danglingSymref: point to invalid refname
++ error: refs/heads/branch-2-bad: badSymrefPointee: point to invalid target
+ EOF
+ rm $branch_dir_prefix/branch-2-bad &&
+ test_cmp expect err
+ ) &&
+ (
+ cd repo &&
-+ printf "ref: refs/heads" > $branch_dir_prefix/branch-2-bad &&
-+ git refs verify 2>err &&
++ printf "ref: logs/maint-v2.45" > $branch_dir_prefix/branch-2-bad &&
++ test_must_fail git refs verify 2>err &&
+ cat >expect <<-EOF &&
-+ warning: refs/heads/branch-2-bad: danglingSymref: point to invalid object
++ error: refs/heads/branch-2-bad: badSymrefPointee: point to target out of refs hierarchy
+ EOF
+ rm $branch_dir_prefix/branch-2-bad &&
+ test_cmp expect err
--
2.45.2
next prev parent reply other threads:[~2024-06-18 8:14 UTC|newest]
Thread overview: 282+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-30 12:27 [GSoC][PATCH 0/2] ref consistency check infra setup shejialuo
2024-05-30 12:27 ` [GSoC][PATCH 1/2] refs: setup ref consistency check infrastructure shejialuo
2024-05-31 14:23 ` Junio C Hamano
2024-05-31 15:20 ` shejialuo
2024-06-03 7:22 ` Patrick Steinhardt
2024-06-03 8:56 ` Karthik Nayak
2024-06-03 22:03 ` Eric Sunshine
2024-05-30 12:27 ` [GSoC][PATCH 2/2] refs: add name and content check for file backend shejialuo
2024-05-31 14:23 ` Junio C Hamano
2024-05-31 16:00 ` shejialuo
2024-05-31 18:31 ` Eric Sunshine
2024-06-03 7:22 ` Patrick Steinhardt
2024-06-12 8:53 ` [GSoC][PATCH v2 0/7] ref consistency check infra setup shejialuo
2024-06-12 8:53 ` [GSoC][PATCH v2 1/7] fsck: add refs check interfaces to interface with fsck error levels shejialuo
2024-06-12 8:53 ` [GSoC][PATCH v2 2/7] refs: set up ref consistency check infrastructure shejialuo
2024-06-15 14:50 ` Karthik Nayak
2024-06-12 8:53 ` [GSoC][PATCH v2 3/7] builtin/refs: add verify subcommand shejialuo
2024-06-15 14:57 ` Karthik Nayak
2024-06-12 8:53 ` [GSoC][PATCH v2 4/7] builtin/fsck: add `git-refs verify` child process shejialuo
2024-06-15 15:02 ` Karthik Nayak
2024-06-12 8:53 ` [GSoC][PATCH v2 5/7] files-backend: add unified interface for refs scanning shejialuo
2024-06-15 20:51 ` Karthik Nayak
2024-06-18 9:09 ` shejialuo
2024-06-12 8:53 ` [GSoC][PATCH v2 6/7] fsck: add ref name check for files backend shejialuo
2024-06-12 8:53 ` [GSoC][PATCH v2 7/7] fsck: add ref content " shejialuo
2024-06-13 19:38 ` Junio C Hamano
2024-06-14 5:20 ` shejialuo
2024-06-14 15:23 ` Junio C Hamano
2024-06-14 17:05 ` jialuo she
2024-06-14 18:56 ` Junio C Hamano
2024-06-12 12:10 ` [GSoC][PATCH v2 0/7] ref consistency check infra setup shejialuo
2024-06-18 8:14 ` shejialuo [this message]
2024-06-18 15:42 ` [GSoC][PATCH v3 " Junio C Hamano
2024-06-18 15:56 ` jialuo she
2024-06-18 8:15 ` [GSoC][PATCH v3 1/7] fsck: add refs check interfaces to interface with fsck error levels shejialuo
2024-06-18 8:38 ` Karthik Nayak
2024-06-18 8:46 ` shejialuo
2024-06-18 15:25 ` Junio C Hamano
2024-06-18 15:47 ` jialuo she
2024-06-19 2:39 ` shejialuo
2024-06-18 8:17 ` [PATCH v3 2/7] refs: set up ref consistency check infrastructure shejialuo
2024-06-18 8:18 ` [PATCH v3 3/7] builtin/refs: add verify subcommand shejialuo
2024-06-18 8:44 ` Karthik Nayak
2024-06-18 8:48 ` shejialuo
2024-06-18 8:18 ` [PATCH v3 4/7] builtin/fsck: add `git-refs verify` child process shejialuo
2024-06-18 8:18 ` [PATCH v3 5/7] files-backend: add unified interface for refs scanning shejialuo
2024-06-18 8:19 ` [PATCH v3 6/7] fsck: add ref name check for files backend shejialuo
2024-06-18 8:20 ` [PATCH v3 7/7] fsck: add ref content " shejialuo
2024-06-19 7:37 ` [GSoC][PATCH v4 0/7] ref consistency check infra setup shejialuo
2024-06-19 7:41 ` [GSoC][PATCH v4 1/7] fsck: add refs check interfaces to interact with fsck error levels shejialuo
2024-06-20 17:24 ` Junio C Hamano
2024-06-21 2:24 ` shejialuo
2024-06-19 7:41 ` [GSoC][PATCH v4 2/7] refs: set up ref consistency check infrastructure shejialuo
2024-06-19 7:42 ` [GSoC][PATCH v4 3/7] builtin/refs: add verify subcommand shejialuo
2024-06-19 7:42 ` [GSoC][PATCH v4 4/7] builtin/fsck: add `git-refs verify` child process shejialuo
2024-06-19 7:43 ` [GSoC][PATCH v4 5/7] files-backend: add unified interface for refs scanning shejialuo
2024-06-19 7:44 ` [GSoC][PATCH v4 6/7] fsck: add ref name check for files backend shejialuo
2024-06-19 7:44 ` [GSoC][PATCH v4 7/7] fsck: add ref content " shejialuo
2024-06-27 15:08 ` [GSoC][PATCH v5 00/12] ref consistency check infra setup shejialuo
2024-06-27 15:12 ` [GSoC][PATCH v5 01/12] fsck: rename "fsck_options" to "fsck_objects_options" shejialuo
2024-06-27 21:32 ` Junio C Hamano
2024-06-28 3:43 ` shejialuo
2024-06-27 15:13 ` [GSoC][PATCH v5 02/12] fsck: use "fsck_configs" to set up configs shejialuo
2024-06-27 21:43 ` Junio C Hamano
2024-06-28 4:22 ` shejialuo
2024-06-27 15:13 ` [GSoC][PATCH v5 03/12] fsck: abstract common options for reusing shejialuo
2024-06-27 15:13 ` [GSoC][PATCH v5 04/12] fsck: add "fsck_refs_options" struct shejialuo
2024-06-27 15:14 ` [GSoC][PATCH v5 05/12] fsck: add a unified interface for reporting fsck messages shejialuo
2024-06-27 15:14 ` [GSoC][PATCH v5 06/12] fsck: add "fsck_refs_options" initialization macros shejialuo
2024-06-27 15:15 ` [GSoC][PATCH v5 07/12] refs: set up ref consistency check infrastructure shejialuo
2024-06-27 15:15 ` [GSoC][PATCH v5 08/12] builtin/refs: add verify subcommand shejialuo
2024-06-27 15:16 ` [GSoC][PATCH v5 09/12] builtin/fsck: add `git-refs verify` child process shejialuo
2024-06-27 15:16 ` [GSoC][PATCH v5 10/12] files-backend: add unified interface for refs scanning shejialuo
2024-06-27 15:17 ` [GSoC][PATCH v5 11/12] fsck: add ref name check for files backend shejialuo
2024-06-27 15:18 ` [GSoC][PATCH v5 12/12] fsck: add ref content " shejialuo
2024-07-01 15:13 ` [GSoC][PATCH v6 00/11] ref consistency check infra setup shejialuo
2024-07-01 15:18 ` [PATCH v6 01/11] fsck: add "fsck_objects_options" to hold objects-related options shejialuo
2024-07-01 15:19 ` [GSoC][PATCH v6 02/11] fsck: rename "skiplist" to "oid_skiplist" shejialuo
2024-07-01 15:19 ` [GSoC][PATCH v6 03/11] fsck: add "fsck_refs_options" into "fsck_options" shejialuo
2024-07-01 15:19 ` [GSoC][PATCH v6 04/11] fsck: add a unified interface for reporting fsck messages shejialuo
2024-07-01 15:19 ` [GSoC][PATCH v6 05/11] fsck: add "fsck_refs_options" initialization macros shejialuo
2024-07-01 15:20 ` [GSoC][PATCH v6 06/11] refs: set up ref consistency check infrastructure shejialuo
2024-07-01 15:20 ` [GSoC][PATCH v6 07/11] builtin/refs: add verify subcommand shejialuo
2024-07-01 15:21 ` [GSoC][PATCH v6 08/11] builtin/fsck: add `git-refs verify` child process shejialuo
2024-07-01 15:21 ` [GSoC][PATCH v6 09/11] files-backend: add unified interface for refs scanning shejialuo
2024-07-01 15:21 ` [GSoC][PATCH v6 10/11] fsck: add ref name check for files backend shejialuo
2024-07-01 15:22 ` [GSoC][PATCH v6 11/11] fsck: add ref content " shejialuo
2024-07-02 10:33 ` [GSoC][PATCH v6 00/11] ref consistency check infra setup Karthik Nayak
2024-07-02 12:15 ` shejialuo
2024-07-02 15:39 ` Junio C Hamano
2024-07-03 13:53 ` [GSoC][PATCH v7 0/9] " shejialuo
2024-07-03 13:56 ` [GSoC][PATCH v7 1/9] fsck: rename "skiplist" to "oid_skiplist" shejialuo
2024-07-05 22:07 ` Justin Tobler
2024-07-08 12:06 ` shejialuo
2024-07-03 13:56 ` [GSoC][PATCH v7 2/9] fsck: add a unified interface for reporting fsck messages shejialuo
2024-07-05 22:43 ` Justin Tobler
2024-07-08 12:12 ` shejialuo
2024-07-03 13:57 ` [GSoC][PATCH v7 3/9] fsck: add refs-related options and error report function shejialuo
2024-07-03 13:57 ` [GSoC][PATCH v7 4/9] refs: set up ref consistency check infrastructure shejialuo
2024-07-03 13:58 ` [GSoC][PATCH v7 5/9] builtin/refs: add verify subcommand shejialuo
2024-07-03 13:58 ` [GSoC][PATCH v7 6/9] builtin/fsck: add `git-refs verify` child process shejialuo
2024-07-03 13:58 ` [GSoC][PATCH v7 7/9] files-backend: add unified interface for refs scanning shejialuo
2024-07-03 13:59 ` [GSoC][PATCH v7 8/9] fsck: add ref name check for files backend shejialuo
2024-07-03 13:59 ` [GSoC][PATCH v7 9/9] fsck: add ref content " shejialuo
2024-07-08 13:32 ` [GSoC][PATCH v8 0/9] ref consistency check infra setup shejialuo
2024-07-08 13:34 ` [GSoC][PATCH v8 1/9] fsck: rename "skiplist" to "oid_skiplist" shejialuo
2024-07-08 13:35 ` [GSoC][PATCH v8 2/9] fsck: add a unified interface for reporting fsck messages shejialuo
2024-07-08 14:36 ` Karthik Nayak
2024-07-08 15:01 ` shejialuo
2024-07-08 17:11 ` Karthik Nayak
2024-07-08 13:35 ` [GSoC][PATCH v8 3/9] fsck: add refs-related options and error report function shejialuo
2024-07-08 14:49 ` Karthik Nayak
2024-07-08 15:32 ` shejialuo
2024-07-08 13:35 ` [GSoC][PATCH v8 4/9] refs: set up ref consistency check infrastructure shejialuo
2024-07-08 13:36 ` [GSoC][PATCH v8 5/9] builtin/refs: add verify subcommand shejialuo
2024-07-08 13:36 ` [GSoC][PATCH v8 6/9] builtin/fsck: add `git-refs verify` child process shejialuo
2024-07-08 13:36 ` [GSoC][PATCH v8 7/9] files-backend: add unified interface for refs scanning shejialuo
2024-07-08 13:36 ` [GSoC][PATCH v8 8/9] fsck: add ref name check for files backend shejialuo
2024-07-08 13:37 ` [GSoC][PATCH v8 9/9] fsck: add ref content " shejialuo
2024-07-09 12:32 ` [GSoC][PATCH v9 0/9] ref consistency check infra setup shejialuo
2024-07-09 12:34 ` [GSoC][PATCH v9 1/9] fsck: rename "skiplist" to "skip_oids" shejialuo
2024-07-09 12:35 ` [GSoC][PATCH v9 2/9] fsck: add a unified interface for reporting fsck messages shejialuo
2024-07-09 20:24 ` Justin Tobler
2024-07-10 12:09 ` shejialuo
2024-07-09 12:35 ` [GSoC][PATCH v9 3/9] fsck: add refs-related options and error report function shejialuo
2024-07-09 21:29 ` Justin Tobler
2024-07-09 21:40 ` Eric Sunshine
2024-07-10 12:13 ` shejialuo
2024-07-10 12:28 ` shejialuo
2024-07-09 12:35 ` [GSoC][PATCH v9 4/9] refs: set up ref consistency check infrastructure shejialuo
2024-07-09 22:11 ` Justin Tobler
2024-07-10 12:29 ` shejialuo
2024-07-09 12:35 ` [GSoC][PATCH v9 5/9] builtin/refs: add verify subcommand shejialuo
2024-07-09 22:30 ` Justin Tobler
2024-07-10 12:32 ` shejialuo
2024-07-09 12:36 ` [GSoC][PATCH v9 6/9] builtin/fsck: add `git-refs verify` child process shejialuo
2024-07-09 12:36 ` [GSoC][PATCH v9 7/9] files-backend: add unified interface for refs scanning shejialuo
2024-07-09 12:36 ` [GSoC][PATCH v9 8/9] fsck: add ref name check for files backend shejialuo
2024-07-09 12:36 ` [GSoC][PATCH v9 9/9] fsck: add ref content " shejialuo
2024-07-10 14:43 ` [GSoC][PATCH v10 00/10] ref consistency check infra setup shejialuo
2024-07-10 14:46 ` [GSoC][PATCH v10 01/10] fsck: rename "skiplist" to "skip_oids" shejialuo
2024-07-10 14:46 ` [GSoC][PATCH v10 02/10] fsck: rename objects-related fsck error functions shejialuo
2024-07-10 14:47 ` [GSoC][PATCH v10 03/10] fsck: add a unified interface for reporting fsck messages shejialuo
2024-07-10 21:04 ` Junio C Hamano
2024-07-11 11:59 ` shejialuo
2024-07-10 14:47 ` [GSoC][PATCH v10 04/10] fsck: add refs-related error report function shejialuo
2024-07-10 14:47 ` [GSoC][PATCH v10 05/10] refs: set up ref consistency check infrastructure shejialuo
2024-07-10 14:47 ` [GSoC][PATCH v10 06/10] builtin/refs: add verify subcommand and verbose_refs for "fsck_options" shejialuo
2024-07-10 21:31 ` Junio C Hamano
2024-07-11 12:39 ` shejialuo
2024-07-10 14:48 ` [GSoC][PATCH v10 07/10] builtin/fsck: add `git-refs verify` child process shejialuo
2024-07-10 14:48 ` [GSoC][PATCH v10 08/10] files-backend: add unified interface for refs scanning shejialuo
2024-07-10 14:48 ` [GSoC][PATCH v10 09/10] fsck: add ref name check for files backend shejialuo
2024-07-10 14:48 ` [GSoC][PATCH v10 10/10] fsck: add ref content " shejialuo
2024-07-14 12:28 ` [GSoC][PATCH v11 00/10] ref consistency check infra setup shejialuo
2024-07-14 12:30 ` [GSoC][PATCH v11 01/10] fsck: rename "skiplist" to "skip_oids" shejialuo
2024-07-14 12:31 ` [GSoC][PATCH v11 02/10] fsck: add a unified interface for reporting fsck messages shejialuo
2024-07-18 13:26 ` Karthik Nayak
2024-07-20 7:24 ` shejialuo
2024-07-14 12:31 ` [GSoC][PATCH v11 03/10] fsck: rename objects-related fsck error functions shejialuo
2024-07-14 12:31 ` [GSoC][PATCH v11 04/10] fsck: add refs-related error report function shejialuo
2024-07-14 12:31 ` [GSoC][PATCH v11 05/10] refs: set up ref consistency check infrastructure shejialuo
2024-07-14 12:31 ` [GSoC][PATCH v11 06/10] git refs: add verify subcommand shejialuo
2024-07-14 12:32 ` [GSoC][PATCH v11 07/10] builtin/fsck: add `git-refs verify` child process shejialuo
2024-07-14 12:32 ` [GSoC][PATCH v11 08/10] files-backend: add unified interface for refs scanning shejialuo
2024-07-14 12:32 ` [GSoC][PATCH v11 09/10] fsck: add ref name check for files backend shejialuo
2024-07-14 12:32 ` [GSoC][PATCH v11 10/10] fsck: add ref content " shejialuo
2024-07-18 14:31 ` Karthik Nayak
2024-07-18 16:03 ` Junio C Hamano
2024-07-19 8:33 ` Karthik Nayak
2024-07-20 7:16 ` shejialuo
2024-07-20 8:43 ` shejialuo
2024-07-20 9:25 ` [GSoC][PATCH v12 00/10] ref consistency check infra setup shejialuo
2024-07-20 9:27 ` [GSoC][PATCH v12 01/10] fsck: rename "skiplist" to "skip_oids" shejialuo
2024-07-20 9:27 ` [GSoC][PATCH v12 02/10] fsck: add a unified interface for reporting fsck messages shejialuo
2024-07-23 8:35 ` Karthik Nayak
2024-07-20 9:27 ` [GSoC][PATCH v12 03/10] fsck: rename objects-related fsck error functions shejialuo
2024-07-20 9:28 ` [GSoC][PATCH v12 04/10] fsck: add refs-related error report function shejialuo
2024-07-20 9:28 ` [GSoC][PATCH v12 05/10] refs: set up ref consistency check infrastructure shejialuo
2024-07-20 9:28 ` [GSoC][PATCH v12 06/10] git refs: add verify subcommand shejialuo
2024-07-20 9:28 ` [GSoC][PATCH v12 07/10] builtin/fsck: add `git-refs verify` child process shejialuo
2024-07-20 9:28 ` [GSoC][PATCH v12 08/10] files-backend: add unified interface for refs scanning shejialuo
2024-07-20 9:29 ` [GSoC][PATCH v12 09/10] fsck: add ref name check for files backend shejialuo
2024-07-20 9:29 ` [GSoC][PATCH v12 10/10] fsck: add ref content " shejialuo
2024-07-29 13:22 ` [GSoC][PATCH v13 00/10] ref consistency check infra setup shejialuo
2024-07-29 13:26 ` [GSoC][PATCH v13 01/10] fsck: rename "skiplist" to "skip_oids" shejialuo
2024-07-29 13:26 ` [GSoC][PATCH v13 02/10] fsck: add a unified interface for reporting fsck messages shejialuo
2024-07-30 8:31 ` Patrick Steinhardt
2024-07-30 14:56 ` shejialuo
2024-07-29 13:26 ` [GSoC][PATCH v13 03/10] fsck: rename objects-related fsck error functions shejialuo
2024-07-30 8:31 ` Patrick Steinhardt
2024-07-30 14:59 ` shejialuo
2024-07-29 13:26 ` [GSoC][PATCH v13 04/10] fsck: add refs-related error report function shejialuo
2024-07-30 8:31 ` Patrick Steinhardt
2024-07-30 15:09 ` shejialuo
2024-07-29 13:27 ` [GSoC][PATCH v13 05/10] refs: set up ref consistency check infrastructure shejialuo
2024-07-30 8:31 ` Patrick Steinhardt
2024-07-30 15:10 ` shejialuo
2024-07-29 13:27 ` [GSoC][PATCH v13 06/10] git refs: add verify subcommand shejialuo
2024-07-30 8:31 ` Patrick Steinhardt
2024-07-30 15:59 ` shejialuo
2024-07-30 17:56 ` Eric Sunshine
2024-07-29 13:27 ` [GSoC][PATCH v13 07/10] builtin/fsck: add `git-refs verify` child process shejialuo
2024-07-29 13:27 ` [GSoC][PATCH v13 08/10] files-backend: add unified interface for refs scanning shejialuo
2024-07-30 8:31 ` Patrick Steinhardt
2024-07-30 16:10 ` shejialuo
2024-07-29 13:27 ` [GSoC][PATCH v13 09/10] fsck: add ref name check for files backend shejialuo
2024-07-30 8:31 ` Patrick Steinhardt
2024-07-30 16:14 ` shejialuo
2024-07-29 13:27 ` [GSoC][PATCH v13 10/10] fsck: add ref content " shejialuo
2024-07-30 8:31 ` Patrick Steinhardt
2024-07-30 16:25 ` shejialuo
2024-07-30 22:06 ` Junio C Hamano
2024-07-31 16:19 ` shejialuo
2024-07-30 8:31 ` [GSoC][PATCH v13 00/10] ref consistency check infra setup Patrick Steinhardt
2024-07-30 16:29 ` shejialuo
2024-08-01 15:11 ` [GSoC][PATCH v14 00/11] " shejialuo
2024-08-01 15:13 ` [GSoC][PATCH v14 01/11] fsck: rename "skiplist" to "skip_oids" shejialuo
2024-08-01 15:13 ` [GSoC][PATCH v14 02/11] fsck: make "fsck_error" callback generic shejialuo
2024-08-01 15:13 ` [GSoC][PATCH v14 03/11] fsck: add a unified interface for reporting fsck messages shejialuo
2024-08-05 12:58 ` Patrick Steinhardt
2024-08-05 15:10 ` shejialuo
2024-08-01 15:14 ` [GSoC][PATCH v14 04/11] fsck: add refs report function shejialuo
2024-08-05 12:58 ` Patrick Steinhardt
2024-08-01 15:14 ` [GSoC][PATCH v14 05/11] fsck: add refs-related error callback shejialuo
2024-08-05 12:58 ` Patrick Steinhardt
2024-08-01 15:14 ` [GSoC][PATCH v14 06/11] fsck: rename objects-related fsck error functions shejialuo
2024-08-05 12:58 ` Patrick Steinhardt
2024-08-01 15:14 ` [GSoC][PATCH v14 07/11] refs: set up ref consistency check infrastructure shejialuo
2024-08-01 15:14 ` [GSoC][PATCH v14 08/11] builtin/refs: add verify subcommand shejialuo
2024-08-01 15:15 ` [GSoC][PATCH v14 09/11] builtin/fsck: add `git-refs verify` child process shejialuo
2024-08-05 12:58 ` Patrick Steinhardt
2024-08-05 15:18 ` shejialuo
2024-08-05 18:11 ` Junio C Hamano
2024-08-05 18:36 ` shejialuo
2024-08-05 19:38 ` Junio C Hamano
2024-08-06 0:42 ` shejialuo
2024-08-06 6:04 ` Patrick Steinhardt
2024-08-06 15:54 ` Junio C Hamano
2024-08-07 4:49 ` Patrick Steinhardt
2024-08-06 5:29 ` Patrick Steinhardt
2024-08-01 15:15 ` [GSoC][PATCH v14 10/11] files-backend: add unified interface for refs scanning shejialuo
2024-08-05 12:58 ` Patrick Steinhardt
2024-08-01 15:15 ` [GSoC][PATCH v14 11/11] fsck: add ref name check for files backend shejialuo
2024-08-05 12:58 ` Patrick Steinhardt
2024-08-05 12:58 ` [GSoC][PATCH v14 00/11] ref consistency check infra setup Patrick Steinhardt
2024-08-05 16:43 ` [GSoC][PATCH v15 0/9] " shejialuo
2024-08-05 16:45 ` [GSoC][PATCH v15 1/9] fsck: rename "skiplist" to "skip_oids" shejialuo
2024-08-05 16:45 ` [GSoC][PATCH v15 2/9] fsck: rename objects-related fsck error functions shejialuo
2024-08-05 16:45 ` [GSoC][PATCH v15 3/9] fsck: make "fsck_error" callback generic shejialuo
2024-08-07 8:03 ` Karthik Nayak
2024-08-05 16:45 ` [GSoC][PATCH v15 4/9] fsck: add a unified interface for reporting fsck messages shejialuo
2024-08-07 8:05 ` Karthik Nayak
2024-08-05 16:45 ` [GSoC][PATCH v15 5/9] fsck: add refs report function shejialuo
2024-08-06 7:32 ` Patrick Steinhardt
2024-08-05 16:46 ` [GSoC][PATCH v15 6/9] refs: set up ref consistency check infrastructure shejialuo
2024-08-05 16:46 ` [GSoC][PATCH v15 7/9] builtin/refs: add verify subcommand shejialuo
2024-08-06 7:32 ` Patrick Steinhardt
2024-08-06 16:15 ` Junio C Hamano
2024-08-07 5:55 ` Patrick Steinhardt
2024-08-07 12:50 ` shejialuo
2024-08-08 10:22 ` Karthik Nayak
2024-08-07 15:55 ` Junio C Hamano
2024-08-05 16:46 ` [GSoC][PATCH v15 8/9] files-backend: add unified interface for refs scanning shejialuo
2024-08-06 7:33 ` Patrick Steinhardt
2024-08-05 16:46 ` [GSoC][PATCH v15 9/9] fsck: add ref name check for files backend shejialuo
2024-08-06 7:32 ` [GSoC][PATCH v15 0/9] ref consistency check infra setup Patrick Steinhardt
2024-08-07 9:29 ` Karthik Nayak
2024-08-08 11:21 ` [GSoC][PATCH v16 " shejialuo
2024-08-08 11:24 ` [GSoC][PATCH v16 1/9] fsck: rename "skiplist" to "skip_oids" shejialuo
2024-08-08 11:24 ` [GSoC][PATCH v16 2/9] fsck: rename objects-related fsck error functions shejialuo
2024-08-08 11:26 ` [GSoC][PATCH v16 3/9] fsck: make "fsck_error" callback generic shejialuo
2024-08-08 11:26 ` [GSoC][PATCH v16 4/9] fsck: add a unified interface for reporting fsck messages shejialuo
2024-08-08 11:27 ` [GSoC][PATCH v16 5/9] fsck: add refs report function shejialuo
2024-08-08 11:27 ` [GSoC][PATCH v16 6/9] refs: set up ref consistency check infrastructure shejialuo
2024-08-08 11:27 ` [GSoC][PATCH v16 7/9] builtin/refs: add verify subcommand shejialuo
2024-10-04 19:14 ` [PATCH 1/2] refs.c: remove redundant translation markers Teng Long
2024-10-06 10:01 ` shejialuo
2024-08-08 11:31 ` [GSoC][PATCH v16 8/9] files-backend: add unified interface for refs scanning shejialuo
2024-08-08 11:31 ` [GSoC][PATCH v16 9/9] fsck: add ref name check for files backend shejialuo
2024-08-08 11:54 ` [GSoC][PATCH v16 0/9] ref consistency check infra setup Patrick Steinhardt
2024-08-08 16:37 ` 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=ZnFByMI1lWUDSxLd@ArchLinux \
--to=shejialuo@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=karthik.188@gmail.com \
--cc=ps@pks.im \
--cc=sunshine@sunshineco.com \
/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).