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