Hi All: This version handles the following things: 1. Remove code which checks the object where refs point to suggested by Patrick. 2. Use subshell for the shell script to fix the problem to make sure the current working directory consistent. 3. Optimize to avoid allocating too much memory. This version is rebased to the latest master due to semantic conflict. I don't provide range-diff here the mumber of commit is reduced. However, it won't bring too much burdern for the reviewer due to small change. Thanks, Jialuo shejialuo (8): t0602: use subshell to ensure working directory unchanged builtin/refs: get worktrees without reading head info packed-backend: check whether the "packed-refs" is regular packed-backend: add "packed-refs" header consistency check packed-backend: check whether the refname contains NUL characters packed-backend: add "packed-refs" entry consistency check packed-backend: check whether the "packed-refs" is sorted builtin/fsck: add `git refs verify` child process Documentation/fsck-msgids.txt | 22 + builtin/fsck.c | 30 + builtin/refs.c | 2 +- fsck.h | 6 + refs/packed-backend.c | 343 +++++++++- t/t0602-reffiles-fsck.sh | 1107 +++++++++++++++++++-------------- worktree.c | 5 + worktree.h | 6 + 8 files changed, 1040 insertions(+), 481 deletions(-) -- 2.48.1