1#!/bin/sh
2
3test_description='test cloning a repository with detached HEAD'
4. ./test-lib.sh
5
6head_is_detached() {
7 git --git-dir=$1/.git rev-parse --verify HEAD &&
8 test_must_fail git --git-dir=$1/.git symbolic-ref HEAD
9}
10
11test_expect_success 'setup' '
12 echo one >file &&
13 git add file &&
14 git commit -m one &&
15 echo two >file &&
16 git commit -a -m two &&
17 git tag two &&
18 echo three >file &&
19 git commit -a -m three
20'
21
22test_expect_success 'clone repo (detached HEAD points to branch)' '
23 git checkout master^0 &&
24 git clone "file://$PWD" detached-branch
25'
26test_expect_success 'cloned HEAD matches' '
27 echo three >expect &&
28 git --git-dir=detached-branch/.git log -1 --format=%s >actual &&
29 test_cmp expect actual
30'
31test_expect_failure 'cloned HEAD is detached' '
32 head_is_detached detached-branch
33'
34
35test_expect_success 'clone repo (detached HEAD points to tag)' '
36 git checkout two^0 &&
37 git clone "file://$PWD" detached-tag
38'
39test_expect_success 'cloned HEAD matches' '
40 echo two >expect &&
41 git --git-dir=detached-tag/.git log -1 --format=%s >actual &&
42 test_cmp expect actual
43'
44test_expect_success 'cloned HEAD is detached' '
45 head_is_detached detached-tag
46'
47
48test_expect_success 'clone repo (detached HEAD points to history)' '
49 git checkout two^ &&
50 git clone "file://$PWD" detached-history
51'
52test_expect_success 'cloned HEAD matches' '
53 echo one >expect &&
54 git --git-dir=detached-history/.git log -1 --format=%s >actual &&
55 test_cmp expect actual
56'
57test_expect_success 'cloned HEAD is detached' '
58 head_is_detached detached-history
59'
60
61test_expect_success 'clone repo (orphan detached HEAD)' '
62 git checkout master^0 &&
63 echo four >file &&
64 git commit -a -m four &&
65 git clone "file://$PWD" detached-orphan
66'
67test_expect_success 'cloned HEAD matches' '
68 echo four >expect &&
69 git --git-dir=detached-orphan/.git log -1 --format=%s >actual &&
70 test_cmp expect actual
71'
72test_expect_success 'cloned HEAD is detached' '
73 head_is_detached detached-orphan
74'
75
76test_done