Re: [PATCH v5] read-cache: force_verify_index_checksum
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Apr 5, 2017, 17:03 UTC
- Message-ID
- <20170405170336.GE8741@aiede.mtv.corp.google.com>
- In-Reply-To
- <20170405145510.2324-2-git@jeffhostetler.com>
Hi,
git@jeffhostetler.com wrote:
Show 7 quoted lines
> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> > --- > builtin/fsck.c | 1 + > cache.h | 2 ++ > read-cache.c | 7 +++++++ > t/t1450-fsck.sh | 11 +++++++++++ > 4 files changed, 21 insertions(+)
Yay! I love this version.
Show 7 quoted lines
> --- a/builtin/fsck.c
> +++ b/builtin/fsck.c
> @@ -771,6 +771,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
> }
>
> if (keep_cache_objects) {
> + force_verify_index_checksum = 1;nit: now that there isn't a config this is overriding, this isn't "force_verify" so much as "verify".
[...]
Show 15 quoted lines
> +++ b/t/t1450-fsck.sh > @@ -689,4 +689,15 @@ test_expect_success 'bogus head does not fallback to all heads' ' > ! grep $blob out > ' > > +test_expect_success PERL 'detect corrupt index file in fsck' ' > + cp .git/index .git/index.backup && > + echo zzzzzzzz >zzzzzzzz && > + git add zzzzzzzz && > + perl -pi -e "s/zzzzzzzz/yyyyyyyy/" .git/index && > + test_must_fail git fsck --cache && > + rm .git/index && > + mv .git/index.backup .git/index && > + rm zzzzzzzz > +'
This is great.
optional: you can do the cleanup commands in test_when_finished to make sure they happen even if the test fails.
Tests don't seem to use "perl -pi" anywhere else. This instance could be simplified by using sed.
With whatever subset of the changes below look good, Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
diff --git i/builtin/fsck.c w/builtin/fsck.c index 92324e130c..b5e13a4556 100644 --- i/builtin/fsck.c +++ w/builtin/fsck.c @@ -771,7 +771,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix) } if (keep_cache_objects) { - force_verify_index_checksum = 1; + verify_index_checksum = 1; read_cache(); for (i = 0; i < active_nr; i++) { unsigned int mode; diff --git i/cache.h w/cache.h index 48b47083d3..9834d71f28 100644 --- i/cache.h +++ w/cache.h @@ -706,7 +706,7 @@ extern void update_index_if_able(struct index_state *, struct lock_file *); extern int hold_locked_index(struct lock_file *, int); extern void set_alternate_index_output(const char *); -extern int force_verify_index_checksum; +extern int verify_index_checksum; /* Environment bits from configuration mechanism */ extern int trust_executable_bit; diff --git i/read-cache.c w/read-cache.c index 13326464d4..008b335844 100644 --- i/read-cache.c +++ w/read-cache.c @@ -1372,7 +1372,7 @@ struct ondisk_cache_entry_extended { ondisk_cache_entry_size(ce_namelen(ce))) /* Allow fsck to force verification of the index checksum. */ -int force_verify_index_checksum; +int verify_index_checksum; static int verify_hdr(struct cache_header *hdr, unsigned long size) { @@ -1386,7 +1386,7 @@ static int verify_hdr(struct cache_header *hdr, unsigned long size) if (hdr_version < INDEX_FORMAT_LB || INDEX_FORMAT_UB < hdr_version) return error("bad index version %d", hdr_version); - if (!force_verify_index_checksum) + if (!verify_index_checksum) return 0; git_SHA1_Init(&c); diff --git i/t/t1450-fsck.sh w/t/t1450-fsck.sh index 86757ffa52..e69b32f219 100755 --- i/t/t1450-fsck.sh +++ w/t/t1450-fsck.sh @@ -689,15 +689,15 @@ test_expect_success 'bogus head does not fallback to all heads' ' ! grep $blob out ' -test_expect_success PERL 'detect corrupt index file in fsck' ' +test_expect_success 'detect corrupt index file in fsck' ' cp .git/index .git/index.backup && + test_when_finished "mv .git/index.backup .git/index" && echo zzzzzzzz >zzzzzzzz && + test_when_finished "rm zzzzzzzz" && git add zzzzzzzz && - perl -pi -e "s/zzzzzzzz/yyyyyyyy/" .git/index && - test_must_fail git fsck --cache && - rm .git/index && - mv .git/index.backup .git/index && - rm zzzzzzzz + sed -e "s/zzzzzzzz/yyyyyyyy/" .git/index >.git/index+ && + mv .git/index+ .git/index && + test_must_fail git fsck --cache ' test_done