mirror of
https://github.com/git/git
synced 2024-07-07 19:39:27 +00:00
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>
This commit is contained in:
parent
a81892dd8c
commit
4b480c6716
|
@ -1,7 +1,7 @@
|
||||||
#include "builtin.h"
|
#include "builtin.h"
|
||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
#include "pack.h"
|
#include "pack.h"
|
||||||
|
#include "pack-revindex.h"
|
||||||
|
|
||||||
#define MAX_CHAIN 50
|
#define MAX_CHAIN 50
|
||||||
|
|
||||||
|
@ -129,6 +129,7 @@ int cmd_verify_pack(int argc, const char **argv, const char *prefix)
|
||||||
else {
|
else {
|
||||||
if (verify_one_pack(argv[1], verbose))
|
if (verify_one_pack(argv[1], verbose))
|
||||||
err = 1;
|
err = 1;
|
||||||
|
discard_revindex();
|
||||||
nothing_done = 0;
|
nothing_done = 0;
|
||||||
}
|
}
|
||||||
argc--; argv++;
|
argc--; argv++;
|
||||||
|
|
|
@ -142,3 +142,15 @@ struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs)
|
||||||
} while (lo < hi);
|
} while (lo < hi);
|
||||||
die("internal error: pack revindex corrupt");
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -7,5 +7,6 @@ struct revindex_entry {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs);
|
struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs);
|
||||||
|
void discard_revindex(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -990,6 +990,7 @@ void prepare_packed_git(void)
|
||||||
|
|
||||||
void reprepare_packed_git(void)
|
void reprepare_packed_git(void)
|
||||||
{
|
{
|
||||||
|
discard_revindex();
|
||||||
prepare_packed_git_run_once = 0;
|
prepare_packed_git_run_once = 0;
|
||||||
prepare_packed_git();
|
prepare_packed_git();
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,6 +186,12 @@ test_expect_success \
|
||||||
test-2-${packname_2}.idx \
|
test-2-${packname_2}.idx \
|
||||||
test-3-${packname_3}.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 \
|
test_expect_success \
|
||||||
'verify-pack catches mismatched .idx and .pack files' \
|
'verify-pack catches mismatched .idx and .pack files' \
|
||||||
'cat test-1-${packname_1}.idx >test-3.idx &&
|
'cat test-1-${packname_1}.idx >test-3.idx &&
|
||||||
|
|
Loading…
Reference in New Issue
Block a user