From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff King Subject: Re: [PATCH] autodetect number of CPUs by default when using threads Date: Sat, 13 Dec 2008 08:32:39 -0500 Message-ID: <20081213133238.GA6718@sigill.intra.peff.net> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Cc: Junio C Hamano , git@vger.kernel.org To: Nicolas Pitre X-From: git-owner@vger.kernel.org Sat Dec 13 14:34:03 2008 Return-path: Envelope-to: gcvg-git-2@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by lo.gmane.org with esmtp (Exim 4.50) id 1LBUd7-0000rt-R2 for gcvg-git-2@gmane.org; Sat, 13 Dec 2008 14:34:02 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755398AbYLMNco (ORCPT ); Sat, 13 Dec 2008 08:32:44 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754226AbYLMNco (ORCPT ); Sat, 13 Dec 2008 08:32:44 -0500 Received: from peff.net ([208.65.91.99]:3784 "EHLO peff.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752601AbYLMNcm (ORCPT ); Sat, 13 Dec 2008 08:32:42 -0500 Received: (qmail 21462 invoked by uid 111); 13 Dec 2008 13:32:41 -0000 Received: from sigill.intra.peff.net (HELO sigill.intra.peff.net) (10.0.0.7) (smtp-auth username relayok, mechanism cram-md5) by peff.net (qpsmtpd/0.32) with ESMTP; Sat, 13 Dec 2008 08:32:41 -0500 Received: by sigill.intra.peff.net (sSMTP sendmail emulation); Sat, 13 Dec 2008 08:32:39 -0500 Content-Disposition: inline In-Reply-To: Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: On Thu, Dec 11, 2008 at 03:36:47PM -0500, Nicolas Pitre wrote: > ... and display the actual number of threads used when locally > repacking. A remote server still won't tell you how many threads it > uses during a fetch though. Hrm. I have no idea how, but this patch reliably causes t5300 to fail on my FreeBSD test box ("next" is broken, bisection pointed to 43cc2b42). Sample verbose output is below. -- >8 -- Initialized empty Git repository in /home/peff/compile/gitbuild/jk/freebsd/project/t/trash directory.t5300-pack-object/.git/ * expecting success: rm -f .git/index* for i in a b c do dd if=/dev/zero bs=4k count=1 | perl -pe "y/\\000/$i/" >$i && git update-index --add $i || return 1 done && cat c >d && echo foo >>d && git update-index --add d && tree=`git write-tree` && commit=`git commit-tree $tree obj-list && { git diff-tree --root -p $commit && while read object do t=`git cat-file -t $object` && git cat-file $t $object || return 1 done expect 1+0 records in 1+0 records out 4096 bytes transferred in 0.000059 secs (69273666 bytes/sec) 1+0 records in 1+0 records out 4096 bytes transferred in 0.000053 secs (77386798 bytes/sec) 1+0 records in 1+0 records out 4096 bytes transferred in 0.000055 secs (74695083 bytes/sec) * ok 1: setup * expecting success: packname_1=$(git pack-objects --window=0 test-1 current && diff expect current Reinitialized existing Git repository in /home/peff/compile/gitbuild/jk/freebsd/project/t/trash directory.t5300-pack-object/.git/ * ok 12: use packed objects * expecting success: GIT_OBJECT_DIRECTORY=.git2/objects && export GIT_OBJECT_DIRECTORY && rm -f .git2/objects/pack/test-* && cp test-2-${packname_2}.pack test-2-${packname_2}.idx .git2/objects/pack && { git diff-tree --root -p $commit && while read object do t=`git cat-file -t $object` && git cat-file $t $object || return 1 done current && diff expect current * ok 13: use packed deltified (REF_DELTA) objects * expecting success: GIT_OBJECT_DIRECTORY=.git2/objects && export GIT_OBJECT_DIRECTORY && rm -f .git2/objects/pack/test-* && cp test-3-${packname_3}.pack test-3-${packname_3}.idx .git2/objects/pack && { git diff-tree --root -p $commit && while read object do t=`git cat-file -t $object` && git cat-file $t $object || return 1 done current && diff expect current * ok 14: use packed deltified (OFS_DELTA) objects * expecting success: git verify-pack test-1-${packname_1}.idx \ test-2-${packname_2}.idx \ test-3-${packname_3}.idx * ok 15: verify pack * expecting success: git verify-pack -v test-1-${packname_1}.idx \ test-2-${packname_2}.idx \ test-3-${packname_3}.idx 0be779221aca65277fd447c8207e1b3c2706ae20 blob 4096 31 311 2f22df7b2a002e7e84bd7c124483f0df7f7bc1ef commit 163 121 128 890b180ae96f7abd6a1917dee506bceb188003b6 tree 116 116 12 9d235ed07cd19811a6ceb342de82f190e49c9f68 blob 4096 31 249 b010fe5253f7dc59c6605dacb92fcea00d199d4e blob 4100 36 342 c82de19312b6c3695c0c18f70709a6c535682a67 blob 4096 31 280 test-1-20f53d0edce6980dfa341c034ae365aef2616e8d.pack: ok 0be779221aca65277fd447c8207e1b3c2706ae20 blob 4096 31 311 2f22df7b2a002e7e84bd7c124483f0df7f7bc1ef commit 163 121 128 890b180ae96f7abd6a1917dee506bceb188003b6 tree 116 116 12 9d235ed07cd19811a6ceb342de82f190e49c9f68 blob 4096 31 249 b010fe5253f7dc59c6605dacb92fcea00d199d4e blob 4100 36 342 c82de19312b6c3695c0c18f70709a6c535682a67 blob 4096 31 280 test-2-20f53d0edce6980dfa341c034ae365aef2616e8d.pack: ok 0be779221aca65277fd447c8207e1b3c2706ae20 blob 4096 31 311 2f22df7b2a002e7e84bd7c124483f0df7f7bc1ef commit 163 121 128 890b180ae96f7abd6a1917dee506bceb188003b6 tree 116 116 12 9d235ed07cd19811a6ceb342de82f190e49c9f68 blob 4096 31 249 b010fe5253f7dc59c6605dacb92fcea00d199d4e blob 4100 36 342 c82de19312b6c3695c0c18f70709a6c535682a67 blob 4096 31 280 test-3-20f53d0edce6980dfa341c034ae365aef2616e8d.pack: ok * ok 16: verify pack -v * expecting success: cat test-1-${packname_1}.idx >test-3.idx && cat test-2-${packname_2}.pack >test-3.pack && if git verify-pack test-3.idx then false else :; fi * FAIL 17: verify-pack catches mismatched .idx and .pack files cat test-1-${packname_1}.idx >test-3.idx && cat test-2-${packname_2}.pack >test-3.pack && if git verify-pack test-3.idx then false else :; fi * expecting success: cat test-1-${packname_1}.pack >test-3.pack && dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=2 && if git verify-pack test-3.idx then false else :; fi 1+0 records in 1+0 records out 1 bytes transferred in 0.000042 secs (23831 bytes/sec) error: file test-3.pack is not a GIT packfile fatal: packfile test-3.pack cannot be accessed * ok 18: verify-pack catches a corrupted pack signature * expecting success: cat test-1-${packname_1}.pack >test-3.pack && dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=7 && if git verify-pack test-3.idx then false else :; fi 1+0 records in 1+0 records out 1 bytes transferred in 0.000042 secs (23831 bytes/sec) error: packfile test-3.pack is version 0 and not supported (try upgrading GIT to a newer version) fatal: packfile test-3.pack cannot be accessed * ok 19: verify-pack catches a corrupted pack version * expecting success: cat test-1-${packname_1}.pack >test-3.pack && dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=12 && if git verify-pack test-3.idx then false else :; fi 1+0 records in 1+0 records out 1 bytes transferred in 0.000046 secs (21732 bytes/sec) error: test-3.pack SHA1 checksum mismatch error: index CRC mismatch for object 890b180ae96f7abd6a1917dee506bceb188003b6 from test-3.pack at offset 12 error: unknown object type 0 at offset 12 in test-3.pack error: cannot unpack 890b180ae96f7abd6a1917dee506bceb188003b6 from test-3.pack at offset 12 * ok 20: verify-pack catches a corrupted type/size of the 1st packed object data * expecting success: l=`wc -c test-3.pack && dd if=/dev/zero of=test-3.idx count=20 bs=1 conv=notrunc seek=$l && if git verify-pack test-3.pack then false else :; fi 20+0 records in 20+0 records out 20 bytes transferred in 0.000123 secs (162570 bytes/sec) error: Packfile index for test-3.pack SHA1 mismatch * ok 21: verify-pack catches a corrupted sum of the index file itself * expecting success: cat test-1-${packname_1}.pack >test-3.pack && git index-pack -o tmp.idx test-3.pack && cmp tmp.idx test-1-${packname_1}.idx && git index-pack test-3.pack && cmp test-3.idx test-1-${packname_1}.idx && cat test-2-${packname_2}.pack >test-3.pack && git index-pack -o tmp.idx test-2-${packname_2}.pack && cmp tmp.idx test-2-${packname_2}.idx && git index-pack test-3.pack && cmp test-3.idx test-2-${packname_2}.idx && cat test-3-${packname_3}.pack >test-3.pack && git index-pack -o tmp.idx test-3-${packname_3}.pack && cmp tmp.idx test-3-${packname_3}.idx && git index-pack test-3.pack && cmp test-3.idx test-3-${packname_3}.idx && : 20f53d0edce6980dfa341c034ae365aef2616e8d 20f53d0edce6980dfa341c034ae365aef2616e8d 20f53d0edce6980dfa341c034ae365aef2616e8d 20f53d0edce6980dfa341c034ae365aef2616e8d 20f53d0edce6980dfa341c034ae365aef2616e8d 20f53d0edce6980dfa341c034ae365aef2616e8d * ok 22: build pack index for an existing pack * expecting success: test -f .git/objects/c8/2de19312b6c3695c0c18f70709a6c535682a67 && cp -f .git/objects/9d/235ed07cd19811a6ceb342de82f190e49c9f68 \ .git/objects/c8/2de19312b6c3695c0c18f70709a6c535682a67 * ok 23: fake a SHA1 hash collision * expecting success: test_must_fail git index-pack -o bad.idx test-3.pack 2>msg && grep "SHA1 COLLISION FOUND" msg fatal: SHA1 COLLISION FOUND WITH c82de19312b6c3695c0c18f70709a6c535682a67 ! * ok 24: make sure index-pack detects the SHA1 collision * expecting success: git config pack.packSizeLimit 200 && packname_4=$(git pack-objects test-4 LIST && rm -f .git/index && git update-index --index-info LIST && rm -f .git/index && git update-index --index-info