Merge branch 'sj/ref-contents-check'

"git fsck" learned to issue warnings on "curiously formatted" ref
contents that have always been taken valid but something Git
wouldn't have written itself (e.g., missing terminating end-of-line
after the full object name).

* sj/ref-contents-check:
  ref: add symlink ref content check for files backend
  ref: check whether the target of the symref is a ref
  ref: add basic symref content check for files backend
  ref: add more strict checks for regular refs
  ref: port git-fsck(1) regular refs check for files backend
  ref: support multiple worktrees check for refs
  ref: initialize ref name outside of check functions
  ref: check the full refname instead of basename
  ref: initialize "fsck_ref_report" with zero
This commit is contained in:
Junio C Hamano
2024-12-04 10:14:42 +09:00
11 changed files with 793 additions and 65 deletions

View File

@@ -654,7 +654,8 @@ typedef int read_symbolic_ref_fn(struct ref_store *ref_store, const char *refnam
struct strbuf *referent);
typedef int fsck_fn(struct ref_store *ref_store,
struct fsck_options *o);
struct fsck_options *o,
struct worktree *wt);
struct ref_storage_be {
const char *name;
@@ -715,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