diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-03-25 14:01:02 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-03-25 14:01:03 -0700 |
commit | 62bd0c01057b1cc47f4710090da4c84511f3cc3d (patch) | |
tree | a188a091111f84b0550d9340abbd2cc6e540fe97 | |
parent | 51ebd0fe9e089df08eeb5b1547f0585c2de13683 (diff) | |
parent | f59de5d1ff9b0f9d570df99128f41520a281f9a5 (diff) | |
download | git-62bd0c01057b1cc47f4710090da4c84511f3cc3d.tar.gz |
Merge branch 'jk/peel-ref'
Recent optimization broke shallow clones.
* jk/peel-ref:
upload-pack: load non-tip "want" objects from disk
upload-pack: make sure "want" objects are parsed
upload-pack: drop lookup-before-parse optimization
-rwxr-xr-x | t/t5500-fetch-pack.sh | 9 | ||||
-rw-r--r-- | upload-pack.c | 6 |
2 files changed, 11 insertions, 4 deletions
diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh index 354d32c584..d574085696 100755 --- a/t/t5500-fetch-pack.sh +++ b/t/t5500-fetch-pack.sh @@ -364,6 +364,15 @@ EOF test_cmp count7.expected count7.actual ' +test_expect_success 'clone shallow with packed refs' ' + git pack-refs --all && + git clone --depth 1 --branch A "file://$(pwd)/." shallow8 && + echo "in-pack: 4" > count8.expected && + GIT_DIR=shallow8/.git git count-objects -v | + grep "^in-pack" > count8.actual && + test_cmp count8.expected count8.actual +' + test_expect_success 'setup tests for the --stdin parameter' ' for head in C D E F do diff --git a/upload-pack.c b/upload-pack.c index 35605310d2..f5673ee4c2 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -327,9 +327,7 @@ static int got_sha1(char *hex, unsigned char *sha1) if (!has_sha1_file(sha1)) return -1; - o = lookup_object(sha1); - if (!(o && o->parsed)) - o = parse_object(sha1); + o = parse_object(sha1); if (!o) die("oops (%s)", sha1_to_hex(sha1)); if (o->type == OBJ_COMMIT) { @@ -648,7 +646,7 @@ static void receive_needs(void) if (parse_feature_request(features, "include-tag")) use_include_tag = 1; - o = lookup_object(sha1_buf); + o = parse_object(sha1_buf); if (!o) die("git upload-pack: not our ref %s", sha1_to_hex(sha1_buf)); |