]> git.ipfire.org Git - thirdparty/git.git/commit - fsck.c
fsck --name-objects: be more careful parsing generation numbers
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Wed, 10 Feb 2021 18:01:30 +0000 (18:01 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Feb 2021 20:38:05 +0000 (12:38 -0800)
commite89f89361cd7b706858eb22a6cf3d59d31a00acf
treec858a9415a6819491113dac575ecd10562607f8c
parent8c891eed3a89ff945b7957cdf62037b2e2b6eca7
fsck --name-objects: be more careful parsing generation numbers

In 7b35efd734e (fsck_walk(): optionally name objects on the go,
2016-07-17), the `fsck` machinery learned to optionally name the
objects, so that it is easier to see what part of the repository is in a
bad shape, say, when objects are missing.

To save on complexity, this machinery uses a parser to determine the
name of a parent given a commit's name: any `~<n>` suffix is parsed and
the parent's name is formed from the prefix together with `~<n+1>`.

However, this parser has a bug: if it finds a suffix `<n>` that is _not_
`~<n>`, it will mistake the empty string for the prefix and `<n>` for
the generation number. In other words, it will generate a name of the
form `~<bogus-number>`.

Let's fix this.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
fsck.c
t/t1450-fsck.sh