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 @@
@@ -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 @@
@@ -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