Browse Source
The tips of refs from the alternate object store can be used as starting point for reachability computation now. * jk/check-connected-with-alternates: check_everything_connected: assume alternate ref tips are valid object-store.h: move for_each_alternate_ref() from transport.hmaint
Junio C Hamano
6 years ago
10 changed files with 224 additions and 100 deletions
@ -0,0 +1,27 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
test_description='speed of clone --reference' |
||||||
|
. ./perf-lib.sh |
||||||
|
|
||||||
|
test_perf_default_repo |
||||||
|
|
||||||
|
test_expect_success 'create shareable repository' ' |
||||||
|
git clone --bare . shared.git |
||||||
|
' |
||||||
|
|
||||||
|
test_expect_success 'advance base repository' ' |
||||||
|
# Do not use test_commit here; its test_tick will |
||||||
|
# use some ancient hard-coded date. The resulting clock |
||||||
|
# skew will cause pack-objects to traverse in a very |
||||||
|
# sub-optimal order, skewing the results. |
||||||
|
echo content >new-file-that-does-not-exist && |
||||||
|
git add new-file-that-does-not-exist && |
||||||
|
git commit -m "new commit" |
||||||
|
' |
||||||
|
|
||||||
|
test_perf 'clone --reference' ' |
||||||
|
rm -rf dst.git && |
||||||
|
git clone --no-local --bare --reference shared.git . dst.git |
||||||
|
' |
||||||
|
|
||||||
|
test_done |
@ -0,0 +1,60 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
test_description='test handling of --alternate-refs traversal' |
||||||
|
. ./test-lib.sh |
||||||
|
|
||||||
|
# Avoid test_commit because we want a specific and known set of refs: |
||||||
|
# |
||||||
|
# base -- one |
||||||
|
# \ \ |
||||||
|
# two -- merged |
||||||
|
# |
||||||
|
# where "one" and "two" are on separate refs, and "merged" is available only in |
||||||
|
# the dependent child repository. |
||||||
|
test_expect_success 'set up local refs' ' |
||||||
|
git checkout -b one && |
||||||
|
test_tick && |
||||||
|
git commit --allow-empty -m base && |
||||||
|
test_tick && |
||||||
|
git commit --allow-empty -m one && |
||||||
|
git checkout -b two HEAD^ && |
||||||
|
test_tick && |
||||||
|
git commit --allow-empty -m two |
||||||
|
' |
||||||
|
|
||||||
|
# We'll enter the child repository after it's set up since that's where |
||||||
|
# all of the subsequent tests will want to run (and it's easy to forget a |
||||||
|
# "-C child" and get nonsense results). |
||||||
|
test_expect_success 'set up shared clone' ' |
||||||
|
git clone -s . child && |
||||||
|
cd child && |
||||||
|
git merge origin/one |
||||||
|
' |
||||||
|
|
||||||
|
test_expect_success 'rev-list --alternate-refs' ' |
||||||
|
git rev-list --remotes=origin >expect && |
||||||
|
git rev-list --alternate-refs >actual && |
||||||
|
test_cmp expect actual |
||||||
|
' |
||||||
|
|
||||||
|
test_expect_success 'rev-list --not --alternate-refs' ' |
||||||
|
git rev-parse HEAD >expect && |
||||||
|
git rev-list HEAD --not --alternate-refs >actual && |
||||||
|
test_cmp expect actual |
||||||
|
' |
||||||
|
|
||||||
|
test_expect_success 'limiting with alternateRefsPrefixes' ' |
||||||
|
test_config core.alternateRefsPrefixes refs/heads/one && |
||||||
|
git rev-list origin/one >expect && |
||||||
|
git rev-list --alternate-refs >actual && |
||||||
|
test_cmp expect actual |
||||||
|
' |
||||||
|
|
||||||
|
test_expect_success 'log --source shows .alternate marker' ' |
||||||
|
git log --oneline --source --remotes=origin >expect.orig && |
||||||
|
sed "s/origin.* /.alternate /" <expect.orig >expect && |
||||||
|
git log --oneline --source --alternate-refs >actual && |
||||||
|
test_cmp expect actual |
||||||
|
' |
||||||
|
|
||||||
|
test_done |
Loading…
Reference in new issue