mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
Merge branch 'maint-1.6.1' into maint-1.6.2
* maint-1.6.1: verify-pack -v: do not report "chain length 0" t5510: harden the way verify-pack is used
This commit is contained in:
commit
e72263a1f8
|
@ -7,10 +7,13 @@
|
||||||
|
|
||||||
static void show_pack_info(struct packed_git *p)
|
static void show_pack_info(struct packed_git *p)
|
||||||
{
|
{
|
||||||
uint32_t nr_objects, i, chain_histogram[MAX_CHAIN+1];
|
uint32_t nr_objects, i;
|
||||||
|
int cnt;
|
||||||
|
unsigned long chain_histogram[MAX_CHAIN+1], baseobjects;
|
||||||
|
|
||||||
nr_objects = p->num_objects;
|
nr_objects = p->num_objects;
|
||||||
memset(chain_histogram, 0, sizeof(chain_histogram));
|
memset(chain_histogram, 0, sizeof(chain_histogram));
|
||||||
|
baseobjects = 0;
|
||||||
|
|
||||||
for (i = 0; i < nr_objects; i++) {
|
for (i = 0; i < nr_objects; i++) {
|
||||||
const unsigned char *sha1;
|
const unsigned char *sha1;
|
||||||
|
@ -29,9 +32,11 @@ static void show_pack_info(struct packed_git *p)
|
||||||
&delta_chain_length,
|
&delta_chain_length,
|
||||||
base_sha1);
|
base_sha1);
|
||||||
printf("%s ", sha1_to_hex(sha1));
|
printf("%s ", sha1_to_hex(sha1));
|
||||||
if (!delta_chain_length)
|
if (!delta_chain_length) {
|
||||||
printf("%-6s %lu %lu %"PRIuMAX"\n",
|
printf("%-6s %lu %lu %"PRIuMAX"\n",
|
||||||
type, size, store_size, (uintmax_t)offset);
|
type, size, store_size, (uintmax_t)offset);
|
||||||
|
baseobjects++;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
printf("%-6s %lu %lu %"PRIuMAX" %u %s\n",
|
printf("%-6s %lu %lu %"PRIuMAX" %u %s\n",
|
||||||
type, size, store_size, (uintmax_t)offset,
|
type, size, store_size, (uintmax_t)offset,
|
||||||
|
@ -43,15 +48,21 @@ static void show_pack_info(struct packed_git *p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i <= MAX_CHAIN; i++) {
|
if (baseobjects)
|
||||||
if (!chain_histogram[i])
|
printf("non delta: %lu object%s\n",
|
||||||
|
baseobjects, baseobjects > 1 ? "s" : "");
|
||||||
|
|
||||||
|
for (cnt = 1; cnt <= MAX_CHAIN; cnt++) {
|
||||||
|
if (!chain_histogram[cnt])
|
||||||
continue;
|
continue;
|
||||||
printf("chain length = %"PRIu32": %"PRIu32" object%s\n", i,
|
printf("chain length = %d: %lu object%s\n", cnt,
|
||||||
chain_histogram[i], chain_histogram[i] > 1 ? "s" : "");
|
chain_histogram[cnt],
|
||||||
|
chain_histogram[cnt] > 1 ? "s" : "");
|
||||||
}
|
}
|
||||||
if (chain_histogram[0])
|
if (chain_histogram[0])
|
||||||
printf("chain length > %d: %"PRIu32" object%s\n", MAX_CHAIN,
|
printf("chain length > %d: %lu object%s\n", MAX_CHAIN,
|
||||||
chain_histogram[0], chain_histogram[0] > 1 ? "s" : "");
|
chain_histogram[0],
|
||||||
|
chain_histogram[0] > 1 ? "s" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int verify_one_pack(const char *path, int verbose)
|
static int verify_one_pack(const char *path, int verbose)
|
||||||
|
|
|
@ -9,6 +9,11 @@ test_description='Per branch config variables affects "git fetch".
|
||||||
|
|
||||||
D=`pwd`
|
D=`pwd`
|
||||||
|
|
||||||
|
test_bundle_object_count () {
|
||||||
|
git verify-pack -v "$1" >verify.out &&
|
||||||
|
test "$2" = $(grep '^[0-9a-f]\{40\} ' verify.out | wc -l)
|
||||||
|
}
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success setup '
|
||||||
echo >file original &&
|
echo >file original &&
|
||||||
git add file &&
|
git add file &&
|
||||||
|
@ -146,6 +151,7 @@ test_expect_success 'unbundle 1' '
|
||||||
test_must_fail git fetch "$D/bundle1" master:master
|
test_must_fail git fetch "$D/bundle1" master:master
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success 'bundle 1 has only 3 files ' '
|
test_expect_success 'bundle 1 has only 3 files ' '
|
||||||
cd "$D" &&
|
cd "$D" &&
|
||||||
(
|
(
|
||||||
|
@ -156,8 +162,7 @@ test_expect_success 'bundle 1 has only 3 files ' '
|
||||||
cat
|
cat
|
||||||
) <bundle1 >bundle.pack &&
|
) <bundle1 >bundle.pack &&
|
||||||
git index-pack bundle.pack &&
|
git index-pack bundle.pack &&
|
||||||
verify=$(git verify-pack -v bundle.pack) &&
|
test_bundle_object_count bundle.pack 3
|
||||||
test 4 = $(echo "$verify" | wc -l)
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'unbundle 2' '
|
test_expect_success 'unbundle 2' '
|
||||||
|
@ -180,7 +185,7 @@ test_expect_success 'bundle does not prerequisite objects' '
|
||||||
cat
|
cat
|
||||||
) <bundle3 >bundle.pack &&
|
) <bundle3 >bundle.pack &&
|
||||||
git index-pack bundle.pack &&
|
git index-pack bundle.pack &&
|
||||||
test 4 = $(git verify-pack -v bundle.pack | wc -l)
|
test_bundle_object_count bundle.pack 3
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'bundle should be able to create a full history' '
|
test_expect_success 'bundle should be able to create a full history' '
|
||||||
|
|
Loading…
Reference in a new issue