t / t7103-reset-bare.shon commit Merge branch 'sb/maint-octopus' into maint (ce67b3e)
   1#!/bin/sh
   2
   3test_description='git reset in a bare repository'
   4. ./test-lib.sh
   5
   6test_expect_success 'setup non-bare' '
   7        echo one >file &&
   8        git add file &&
   9        git commit -m one &&
  10        echo two >file &&
  11        git commit -a -m two
  12'
  13
  14test_expect_success 'hard reset requires a worktree' '
  15        (cd .git &&
  16         test_must_fail git reset --hard)
  17'
  18
  19test_expect_success 'merge reset requires a worktree' '
  20        (cd .git &&
  21         test_must_fail git reset --merge)
  22'
  23
  24test_expect_success 'mixed reset is ok' '
  25        (cd .git && git reset)
  26'
  27
  28test_expect_success 'soft reset is ok' '
  29        (cd .git && git reset --soft)
  30'
  31
  32test_expect_success 'hard reset works with GIT_WORK_TREE' '
  33        mkdir worktree &&
  34        GIT_WORK_TREE=$PWD/worktree GIT_DIR=$PWD/.git git reset --hard &&
  35        test_cmp file worktree/file
  36'
  37
  38test_expect_success 'setup bare' '
  39        git clone --bare . bare.git &&
  40        cd bare.git
  41'
  42
  43test_expect_success 'hard reset is not allowed in bare' '
  44        test_must_fail git reset --hard HEAD^
  45'
  46
  47test_expect_success 'merge reset is not allowed in bare' '
  48        test_must_fail git reset --merge HEAD^
  49'
  50
  51test_expect_success 'mixed reset is not allowed in bare' '
  52        test_must_fail git reset --mixed HEAD^
  53'
  54
  55test_expect_success 'soft reset is allowed in bare' '
  56        git reset --soft HEAD^ &&
  57        test "`git show --pretty=format:%s | head -n 1`" = "one"
  58'
  59
  60test_done