Merge branch 'jc/checkout-detach-doc'
[git] / t / t5501-fetch-push-alternates.sh
1 #!/bin/sh
2
3 test_description='fetch/push involving alternates'
4 . ./test-lib.sh
5
6 count_objects () {
7         loose=0 inpack=0
8         eval "$(
9                 git count-objects -v |
10                 sed -n -e 's/^count: \(.*\)/loose=\1/p' \
11                     -e 's/^in-pack: \(.*\)/inpack=\1/p'
12         )" &&
13         echo $(( $loose + $inpack ))
14 }
15
16
17 test_expect_success setup '
18         (
19                 git init original &&
20                 cd original &&
21                 i=0 &&
22                 while test $i -le 100
23                 do
24                         echo "$i" >count &&
25                         git add count &&
26                         git commit -m "$i" || exit
27                         i=$(($i + 1))
28                 done
29         ) &&
30         (
31                 git clone --reference=original "file://$(pwd)/original" one &&
32                 cd one &&
33                 echo Z >count &&
34                 git add count &&
35                 git commit -m Z &&
36                 count_objects >../one.count
37         ) &&
38         A=$(pwd)/original/.git/objects &&
39         git init receiver &&
40         echo "$A" >receiver/.git/objects/info/alternates &&
41         git init fetcher &&
42         echo "$A" >fetcher/.git/objects/info/alternates
43 '
44
45 test_expect_success 'pushing into a repository with the same alternate' '
46         (
47                 cd one &&
48                 git push ../receiver master:refs/heads/it
49         ) &&
50         (
51                 cd receiver &&
52                 count_objects >../receiver.count
53         ) &&
54         test_cmp one.count receiver.count
55 '
56
57 test_expect_success 'fetching from a repository with the same alternate' '
58         (
59                 cd fetcher &&
60                 git fetch ../one master:refs/heads/it &&
61                 count_objects >../fetcher.count
62         ) &&
63         test_cmp one.count fetcher.count
64 '
65
66 test_done