Browse Source

discard revindex data when pack list changes

This is needed to fix verify-pack -v with multiple pack arguments.

Also, in theory, revindex data (if any) must be discarded whenever
reprepare_packed_git() is called. In practice this is hard to trigger
though.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Nicolas Pitre 16 years ago committed by Junio C Hamano
parent
commit
4b480c6716
  1. 3
      builtin-verify-pack.c
  2. 12
      pack-revindex.c
  3. 1
      pack-revindex.h
  4. 1
      sha1_file.c
  5. 6
      t/t5300-pack-object.sh

3
builtin-verify-pack.c

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
#include "builtin.h"
#include "cache.h"
#include "pack.h"

#include "pack-revindex.h"

#define MAX_CHAIN 50

@ -129,6 +129,7 @@ int cmd_verify_pack(int argc, const char **argv, const char *prefix) @@ -129,6 +129,7 @@ int cmd_verify_pack(int argc, const char **argv, const char *prefix)
else {
if (verify_one_pack(argv[1], verbose))
err = 1;
discard_revindex();
nothing_done = 0;
}
argc--; argv++;

12
pack-revindex.c

@ -142,3 +142,15 @@ struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs) @@ -142,3 +142,15 @@ struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs)
} while (lo < hi);
die("internal error: pack revindex corrupt");
}

void discard_revindex(void)
{
if (pack_revindex_hashsz) {
int i;
for (i = 0; i < pack_revindex_hashsz; i++)
if (pack_revindex[i].revindex)
free(pack_revindex[i].revindex);
free(pack_revindex);
pack_revindex_hashsz = 0;
}
}

1
pack-revindex.h

@ -7,5 +7,6 @@ struct revindex_entry { @@ -7,5 +7,6 @@ struct revindex_entry {
};

struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs);
void discard_revindex(void);

#endif

1
sha1_file.c

@ -990,6 +990,7 @@ void prepare_packed_git(void) @@ -990,6 +990,7 @@ void prepare_packed_git(void)

void reprepare_packed_git(void)
{
discard_revindex();
prepare_packed_git_run_once = 0;
prepare_packed_git();
}

6
t/t5300-pack-object.sh

@ -186,6 +186,12 @@ test_expect_success \ @@ -186,6 +186,12 @@ test_expect_success \
test-2-${packname_2}.idx \
test-3-${packname_3}.idx'

test_expect_success \
'verify pack -v' \
'git verify-pack -v test-1-${packname_1}.idx \
test-2-${packname_2}.idx \
test-3-${packname_3}.idx'

test_expect_success \
'verify-pack catches mismatched .idx and .pack files' \
'cat test-1-${packname_1}.idx >test-3.idx &&

Loading…
Cancel
Save