| #!/bin/sh | 
 | # | 
 | # Copyright (c) 2009, Red Hat Inc, Author: Michael S. Tsirkin (mst@redhat.com) | 
 | # | 
 |  | 
 | test_description='test clone --reference' | 
 | . ./test-lib.sh | 
 |  | 
 | base_dir=`pwd` | 
 |  | 
 | U=$base_dir/UPLOAD_LOG | 
 |  | 
 | test_expect_success 'preparing first repository' \ | 
 | 'test_create_repo A && cd A && | 
 | echo first > file1 && | 
 | git add file1 && | 
 | git commit -m A-initial' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'preparing second repository' \ | 
 | 'git clone A B && cd B && | 
 | echo second > file2 && | 
 | git add file2 && | 
 | git commit -m B-addition && | 
 | git repack -a -d && | 
 | git prune' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'preparing superproject' \ | 
 | 'test_create_repo super && cd super && | 
 | echo file > file && | 
 | git add file && | 
 | git commit -m B-super-initial' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'submodule add --reference' \ | 
 | 'cd super && git submodule add --reference ../B "file://$base_dir/A" sub && | 
 | git commit -m B-super-added' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'after add: existence of info/alternates' \ | 
 | 'test_line_count = 1 super/.git/modules/sub/objects/info/alternates' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'that reference gets used with add' \ | 
 | 'cd super/sub && | 
 | echo "0 objects, 0 kilobytes" > expected && | 
 | git count-objects > current && | 
 | diff expected current' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'cloning superproject' \ | 
 | 'git clone super super-clone' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'update with reference' \ | 
 | 'cd super-clone && git submodule update --init --reference ../B' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'after update: existence of info/alternates' \ | 
 | 'test_line_count = 1 super-clone/.git/modules/sub/objects/info/alternates' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_expect_success 'that reference gets used with update' \ | 
 | 'cd super-clone/sub && | 
 | echo "0 objects, 0 kilobytes" > expected && | 
 | git count-objects > current && | 
 | diff expected current' | 
 |  | 
 | cd "$base_dir" | 
 |  | 
 | test_done |