b84c674809f5828269ac7fec7728fa73df96cf1a
1#!/bin/sh
2#
3# Copyright (c) 2009, Red Hat Inc, Author: Michael S. Tsirkin (mst@redhat.com)
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 &&
13 (
14 cd A &&
15 echo first >file1 &&
16 git add file1 &&
17 git commit -m A-initial
18 )
19'
20
21test_expect_success 'preparing second repository' '
22 git clone A B &&
23 (
24 cd B &&
25 echo second >file2 &&
26 git add file2 &&
27 git commit -m B-addition &&
28 git repack -a -d &&
29 git prune
30 )
31'
32
33test_expect_success 'preparing superproject' '
34 test_create_repo super &&
35 (
36 cd super &&
37 echo file >file &&
38 git add file &&
39 git commit -m B-super-initial
40 )
41'
42
43test_expect_success 'submodule add --reference' '
44 (
45 cd super &&
46 git submodule add --reference ../B "file://$base_dir/A" sub &&
47 git commit -m B-super-added
48 )
49'
50
51test_expect_success 'after add: existence of info/alternates' '
52 test_line_count = 1 super/.git/modules/sub/objects/info/alternates
53'
54
55test_expect_success 'that reference gets used with add' '
56 (
57 cd super/sub &&
58 echo "0 objects, 0 kilobytes" >expected &&
59 git count-objects >current &&
60 diff expected current
61 )
62'
63
64test_expect_success 'cloning superproject' '
65 git clone super super-clone
66'
67
68test_expect_success 'update with reference' '
69 cd super-clone && git submodule update --init --reference ../B
70'
71
72test_expect_success 'after update: existence of info/alternates' '
73 test_line_count = 1 super-clone/.git/modules/sub/objects/info/alternates
74'
75
76test_expect_success 'that reference gets used with update' '
77 cd super-clone/sub &&
78 echo "0 objects, 0 kilobytes" >expected &&
79 git count-objects >current &&
80 diff expected current
81'
82
83test_done