t / t5400-send-pack.shon commit gitweb: Print commit message without title in commitdiff only if there is any (8256098)
   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
  67unset GIT_CONFIG GIT_CONFIG_LOCAL
  68HOME=`pwd`/no-such-directory
  69export HOME ;# this way we force the victim/.git/config to be used.
  70
  71test_expect_success \
  72        'pushing with --force should be denied with denyNonFastforwards' '
  73        cd victim &&
  74        git-repo-config receive.denyNonFastforwards true &&
  75        cd .. &&
  76        git-update-ref refs/heads/master master^ &&
  77        git-send-pack --force ./victim/.git/ master &&
  78        ! diff -u .git/refs/heads/master victim/.git/refs/heads/master
  79'
  80
  81test_done