t / t5400-send-pack.shon commit Merge git://git.kernel.org/pub/scm/gitk/gitk (1a17ee2)
   1#!/bin/sh
   2#
   3# Copyright (c) 2005 Junio C Hamano
   4#
   5
   6test_description='See why rewinding head breaks send-pack
   7
   8'
   9. ./test-lib.sh
  10
  11touch cpio-test
  12test_expect_success 'working cpio' 'echo cpio-test | cpio -o > /dev/null'
  13
  14cnt='1'
  15test_expect_success setup '
  16        tree=$(git-write-tree) &&
  17        commit=$(echo "Commit #0" | git-commit-tree $tree) &&
  18        zero=$commit &&
  19        parent=$zero &&
  20        for i in $cnt
  21        do
  22            sleep 1 &&
  23            commit=$(echo "Commit #$i" | git-commit-tree $tree -p $parent) &&
  24            parent=$commit || return 1
  25        done &&
  26        git-update-ref HEAD "$commit" &&
  27        git-clone -l ./. victim &&
  28        cd victim &&
  29        git-log &&
  30        cd .. &&
  31        git-update-ref HEAD "$zero" &&
  32        parent=$zero &&
  33        for i in $cnt
  34        do
  35            sleep 1 &&
  36            commit=$(echo "Rebase #$i" | git-commit-tree $tree -p $parent) &&
  37            parent=$commit || return 1
  38        done &&
  39        git-update-ref HEAD "$commit" &&
  40        echo Rebase &&
  41        git-log'
  42
  43test_expect_success \
  44        'pushing rewound head should not barf but require --force' ' 
  45        # should not fail but refuse to update.
  46        if git-send-pack ./victim/.git/ master
  47        then
  48                # now it should fail with Pasky patch
  49                echo >&2 Gaah, it should have failed.
  50                false
  51        else
  52                echo >&2 Thanks, it correctly failed.
  53                true
  54        fi &&
  55        if cmp victim/.git/refs/heads/master .git/refs/heads/master
  56        then
  57                # should have been left as it was!
  58                false
  59        else
  60                true
  61        fi &&
  62        # this should update
  63        git-send-pack --force ./victim/.git/ master &&
  64        cmp victim/.git/refs/heads/master .git/refs/heads/master
  65'
  66
  67test_done