Merge branch 'jc/test-3402'
[git/repo.git] / t / t5700-clone-reference.sh
blob916ee15ba1ed840fbd0df9d91e4f06fae8fde357
1 #!/bin/sh
3 # Copyright (C) 2006 Martin Waitz <tali@admingilde.org>
6 test_description='test clone --reference'
7 . ./test-lib.sh
9 base_dir=`pwd`
11 test_expect_success 'preparing first repository' \
12 'test_create_repo A && cd A &&
13 echo first > file1 &&
14 git add file1 &&
15 git commit -m initial'
17 cd "$base_dir"
19 test_expect_success 'preparing second repository' \
20 'git clone A B && cd B &&
21 echo second > file2 &&
22 git add file2 &&
23 git commit -m addition &&
24 git repack -a -d &&
25 git prune'
27 cd "$base_dir"
29 test_expect_success 'cloning with reference' \
30 'git clone -l -s --reference B A C'
32 cd "$base_dir"
34 test_expect_success 'existance of info/alternates' \
35 'test `wc -l <C/.git/objects/info/alternates` = 2'
37 cd "$base_dir"
39 test_expect_success 'pulling from reference' \
40 'cd C &&
41 git pull ../B'
43 cd "$base_dir"
45 test_expect_success 'that reference gets used' \
46 'cd C &&
47 echo "0 objects, 0 kilobytes" > expected &&
48 git count-objects > current &&
49 diff expected current'
51 cd "$base_dir"
53 test_expect_success 'updating origin' \
54 'cd A &&
55 echo third > file3 &&
56 git add file3 &&
57 git commit -m update &&
58 git repack -a -d &&
59 git prune'
61 cd "$base_dir"
63 test_expect_success 'pulling changes from origin' \
64 'cd C &&
65 git pull origin'
67 cd "$base_dir"
69 # the 2 local objects are commit and tree from the merge
70 test_expect_success 'that alternate to origin gets used' \
71 'cd C &&
72 echo "2 objects" > expected &&
73 git count-objects | cut -d, -f1 > current &&
74 diff expected current'
76 cd "$base_dir"
78 test_done