]> git.ipfire.org Git - thirdparty/git.git/blame - t/t5700-clone-reference.sh
Merge branch 'sv/first-parent'
[thirdparty/git.git] / t / t5700-clone-reference.sh
CommitLineData
cf9dc653
MW
1#!/bin/sh
2#
3# Copyright (C) 2006 Martin Waitz <tali@admingilde.org>
4#
5
6test_description='test clone --reference'
7. ./test-lib.sh
8
9base_dir=`pwd`
10
11test_expect_success 'preparing first repository' \
12'test_create_repo A && cd A &&
13echo first > file1 &&
14git add file1 &&
15git commit -m initial'
16
17cd "$base_dir"
18
19test_expect_success 'preparing second repository' \
20'git clone A B && cd B &&
21echo second > file2 &&
22git add file2 &&
23git commit -m addition &&
24git repack -a -d &&
026aa938 25git prune'
cf9dc653
MW
26
27cd "$base_dir"
28
1f7d1a53 29test_expect_success 'cloning with reference (-l -s)' \
cf9dc653
MW
30'git clone -l -s --reference B A C'
31
32cd "$base_dir"
33
82e5a82f 34test_expect_success 'existence of info/alternates' \
cf9dc653
MW
35'test `wc -l <C/.git/objects/info/alternates` = 2'
36
37cd "$base_dir"
38
39test_expect_success 'pulling from reference' \
40'cd C &&
da0204df 41git pull ../B master'
cf9dc653
MW
42
43cd "$base_dir"
44
45test_expect_success 'that reference gets used' \
46'cd C &&
47echo "0 objects, 0 kilobytes" > expected &&
48git count-objects > current &&
49diff expected current'
50
51cd "$base_dir"
52
1f7d1a53 53test_expect_success 'cloning with reference (no -l -s)' \
f69e836f 54'git clone --reference B "file://$(pwd)/A" D'
1f7d1a53
JH
55
56cd "$base_dir"
57
58test_expect_success 'existence of info/alternates' \
59'test `wc -l <D/.git/objects/info/alternates` = 1'
60
61cd "$base_dir"
62
63test_expect_success 'pulling from reference' \
da0204df 64'cd D && git pull ../B master'
1f7d1a53
JH
65
66cd "$base_dir"
67
68test_expect_success 'that reference gets used' \
69'cd D && echo "0 objects, 0 kilobytes" > expected &&
70git count-objects > current &&
71diff expected current'
72
73cd "$base_dir"
74
cf9dc653
MW
75test_expect_success 'updating origin' \
76'cd A &&
77echo third > file3 &&
78git add file3 &&
79git commit -m update &&
80git repack -a -d &&
026aa938 81git prune'
cf9dc653
MW
82
83cd "$base_dir"
84
85test_expect_success 'pulling changes from origin' \
86'cd C &&
87git pull origin'
88
89cd "$base_dir"
90
91# the 2 local objects are commit and tree from the merge
92test_expect_success 'that alternate to origin gets used' \
93'cd C &&
94echo "2 objects" > expected &&
95git count-objects | cut -d, -f1 > current &&
96diff expected current'
97
98cd "$base_dir"
99
1f7d1a53
JH
100test_expect_success 'pulling changes from origin' \
101'cd D &&
102git pull origin'
103
104cd "$base_dir"
105
106# the 5 local objects are expected; file3 blob, commit in A to add it
107# and its tree, and 2 are our tree and the merge commit.
108test_expect_success 'check objects expected to exist locally' \
109'cd D &&
110echo "5 objects" > expected &&
111git count-objects | cut -d, -f1 > current &&
112diff expected current'
113
114cd "$base_dir"
115
cf9dc653 116test_done