t / t5610-clone-detached.shon commit Merge branch 'sb/submodule-rm-absorb' (a06380b)
   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