diff options
| author | Junio C Hamano <gitster@pobox.com> | 2009-08-07 22:35:17 -0700 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2009-08-07 22:35:17 -0700 | 
| commit | ea5b1f6e129883479246e607e664b427b4ba779c (patch) | |
| tree | 0f280b4e113c2d070af2d7c882925f8ceb65b66b | |
| parent | 1c370ea4e519f8facaf321b633f79eb68a14a0db (diff) | |
| parent | 5dc36a5888a7063ff4536c9ea50eb0557bfef627 (diff) | |
| download | git-ea5b1f6e129883479246e607e664b427b4ba779c.tar.gz | |
Merge branch 'maint'
* maint:
  verify-pack -v: do not report "chain length 0"
  t5510: harden the way verify-pack is used
| -rw-r--r-- | builtin-verify-pack.c | 27 | ||||
| -rwxr-xr-x | t/t5510-fetch.sh | 11 | 
2 files changed, 27 insertions, 11 deletions
| diff --git a/builtin-verify-pack.c b/builtin-verify-pack.c index ebd6dff940..b5bd28e959 100644 --- a/builtin-verify-pack.c +++ b/builtin-verify-pack.c @@ -8,10 +8,13 @@  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;  	memset(chain_histogram, 0, sizeof(chain_histogram)); +	baseobjects = 0;  	for (i = 0; i < nr_objects; i++) {  		const unsigned char *sha1; @@ -30,9 +33,11 @@ static void show_pack_info(struct packed_git *p)  						 &delta_chain_length,  						 base_sha1);  		printf("%s ", sha1_to_hex(sha1)); -		if (!delta_chain_length) +		if (!delta_chain_length) {  			printf("%-6s %lu %lu %"PRIuMAX"\n",  			       type, size, store_size, (uintmax_t)offset); +			baseobjects++; +		}  		else {  			printf("%-6s %lu %lu %"PRIuMAX" %u %s\n",  			       type, size, store_size, (uintmax_t)offset, @@ -44,15 +49,21 @@ static void show_pack_info(struct packed_git *p)  		}  	} -	for (i = 0; i <= MAX_CHAIN; i++) { -		if (!chain_histogram[i]) +	if (baseobjects) +		printf("non delta: %lu object%s\n", +		       baseobjects, baseobjects > 1 ? "s" : ""); + +	for (cnt = 1; cnt <= MAX_CHAIN; cnt++) { +		if (!chain_histogram[cnt])  			continue; -		printf("chain length = %"PRIu32": %"PRIu32" object%s\n", i, -		       chain_histogram[i], chain_histogram[i] > 1 ? "s" : ""); +		printf("chain length = %d: %lu object%s\n", cnt, +		       chain_histogram[cnt], +		       chain_histogram[cnt] > 1 ? "s" : "");  	}  	if (chain_histogram[0]) -		printf("chain length > %d: %"PRIu32" object%s\n", MAX_CHAIN, -		       chain_histogram[0], chain_histogram[0] > 1 ? "s" : ""); +		printf("chain length > %d: %lu object%s\n", MAX_CHAIN, +		       chain_histogram[0], +		       chain_histogram[0] > 1 ? "s" : "");  }  static int verify_one_pack(const char *path, int verbose) diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh index bee3424fed..d13c806624 100755 --- a/t/t5510-fetch.sh +++ b/t/t5510-fetch.sh @@ -9,6 +9,11 @@ test_description='Per branch config variables affects "git fetch".  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 '  	echo >file original &&  	git add file && @@ -146,6 +151,7 @@ test_expect_success 'unbundle 1' '  	test_must_fail git fetch "$D/bundle1" master:master  ' +  test_expect_success 'bundle 1 has only 3 files ' '  	cd "$D" &&  	( @@ -156,8 +162,7 @@ test_expect_success 'bundle 1 has only 3 files ' '  		cat  	) <bundle1 >bundle.pack &&  	git index-pack bundle.pack && -	verify=$(git verify-pack -v bundle.pack) && -	test 4 = $(echo "$verify" | wc -l) +	test_bundle_object_count bundle.pack 3  '  test_expect_success 'unbundle 2' ' @@ -180,7 +185,7 @@ test_expect_success 'bundle does not prerequisite objects' '  		cat  	) <bundle3 >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' ' | 
