t5401: Use a bare repository for the remote peer

We want to avoid the warnings (or later, test failures) about
updating the current branch.  It was never my intention to have
this test deal with a repository with a working directory, and it
is a very old bug that the test even used a non-bare repository
for the remote side of the push operations.

This fixes the interleaved output error we were seeing as a test
failure by avoiding the giant warning message we were getting back
about updating the current branch being risky.

Its not a real fix, but is something we should do no matter what,
because the behavior will change in the future to reject, and the
test would break at that time.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Shawn O. Pearce 2010-02-09 18:01:29 -08:00 committed by Junio C Hamano
parent 6d525d389f
commit 6b3fa7e7d1

View File

@ -17,22 +17,22 @@ test_expect_success setup '
commit1=$(echo modify | git commit-tree $tree1 -p $commit0) && commit1=$(echo modify | git commit-tree $tree1 -p $commit0) &&
git update-ref refs/heads/master $commit0 && git update-ref refs/heads/master $commit0 &&
git update-ref refs/heads/tofail $commit1 && git update-ref refs/heads/tofail $commit1 &&
git clone ./. victim && git clone --bare ./. victim.git &&
GIT_DIR=victim/.git git update-ref refs/heads/tofail $commit1 && GIT_DIR=victim.git git update-ref refs/heads/tofail $commit1 &&
git update-ref refs/heads/master $commit1 && git update-ref refs/heads/master $commit1 &&
git update-ref refs/heads/tofail $commit0 git update-ref refs/heads/tofail $commit0
' '
cat >victim/.git/hooks/pre-receive <<'EOF' cat >victim.git/hooks/pre-receive <<'EOF'
#!/bin/sh #!/bin/sh
printf %s "$@" >>$GIT_DIR/pre-receive.args printf %s "$@" >>$GIT_DIR/pre-receive.args
cat - >$GIT_DIR/pre-receive.stdin cat - >$GIT_DIR/pre-receive.stdin
echo STDOUT pre-receive echo STDOUT pre-receive
echo STDERR pre-receive >&2 echo STDERR pre-receive >&2
EOF EOF
chmod u+x victim/.git/hooks/pre-receive chmod u+x victim.git/hooks/pre-receive
cat >victim/.git/hooks/update <<'EOF' cat >victim.git/hooks/update <<'EOF'
#!/bin/sh #!/bin/sh
echo "$@" >>$GIT_DIR/update.args echo "$@" >>$GIT_DIR/update.args
read x; printf %s "$x" >$GIT_DIR/update.stdin read x; printf %s "$x" >$GIT_DIR/update.stdin
@ -40,77 +40,77 @@ echo STDOUT update $1
echo STDERR update $1 >&2 echo STDERR update $1 >&2
test "$1" = refs/heads/master || exit test "$1" = refs/heads/master || exit
EOF EOF
chmod u+x victim/.git/hooks/update chmod u+x victim.git/hooks/update
cat >victim/.git/hooks/post-receive <<'EOF' cat >victim.git/hooks/post-receive <<'EOF'
#!/bin/sh #!/bin/sh
printf %s "$@" >>$GIT_DIR/post-receive.args printf %s "$@" >>$GIT_DIR/post-receive.args
cat - >$GIT_DIR/post-receive.stdin cat - >$GIT_DIR/post-receive.stdin
echo STDOUT post-receive echo STDOUT post-receive
echo STDERR post-receive >&2 echo STDERR post-receive >&2
EOF EOF
chmod u+x victim/.git/hooks/post-receive chmod u+x victim.git/hooks/post-receive
cat >victim/.git/hooks/post-update <<'EOF' cat >victim.git/hooks/post-update <<'EOF'
#!/bin/sh #!/bin/sh
echo "$@" >>$GIT_DIR/post-update.args echo "$@" >>$GIT_DIR/post-update.args
read x; printf %s "$x" >$GIT_DIR/post-update.stdin read x; printf %s "$x" >$GIT_DIR/post-update.stdin
echo STDOUT post-update echo STDOUT post-update
echo STDERR post-update >&2 echo STDERR post-update >&2
EOF EOF
chmod u+x victim/.git/hooks/post-update chmod u+x victim.git/hooks/post-update
test_expect_success push ' test_expect_success push '
test_must_fail git send-pack --force ./victim/.git \ test_must_fail git send-pack --force ./victim.git \
master tofail >send.out 2>send.err master tofail >send.out 2>send.err
' '
test_expect_success 'updated as expected' ' test_expect_success 'updated as expected' '
test $(GIT_DIR=victim/.git git rev-parse master) = $commit1 && test $(GIT_DIR=victim.git git rev-parse master) = $commit1 &&
test $(GIT_DIR=victim/.git git rev-parse tofail) = $commit1 test $(GIT_DIR=victim.git git rev-parse tofail) = $commit1
' '
test_expect_success 'hooks ran' ' test_expect_success 'hooks ran' '
test -f victim/.git/pre-receive.args && test -f victim.git/pre-receive.args &&
test -f victim/.git/pre-receive.stdin && test -f victim.git/pre-receive.stdin &&
test -f victim/.git/update.args && test -f victim.git/update.args &&
test -f victim/.git/update.stdin && test -f victim.git/update.stdin &&
test -f victim/.git/post-receive.args && test -f victim.git/post-receive.args &&
test -f victim/.git/post-receive.stdin && test -f victim.git/post-receive.stdin &&
test -f victim/.git/post-update.args && test -f victim.git/post-update.args &&
test -f victim/.git/post-update.stdin test -f victim.git/post-update.stdin
' '
test_expect_success 'pre-receive hook input' ' test_expect_success 'pre-receive hook input' '
(echo $commit0 $commit1 refs/heads/master; (echo $commit0 $commit1 refs/heads/master;
echo $commit1 $commit0 refs/heads/tofail echo $commit1 $commit0 refs/heads/tofail
) | test_cmp - victim/.git/pre-receive.stdin ) | test_cmp - victim.git/pre-receive.stdin
' '
test_expect_success 'update hook arguments' ' test_expect_success 'update hook arguments' '
(echo refs/heads/master $commit0 $commit1; (echo refs/heads/master $commit0 $commit1;
echo refs/heads/tofail $commit1 $commit0 echo refs/heads/tofail $commit1 $commit0
) | test_cmp - victim/.git/update.args ) | test_cmp - victim.git/update.args
' '
test_expect_success 'post-receive hook input' ' test_expect_success 'post-receive hook input' '
echo $commit0 $commit1 refs/heads/master | echo $commit0 $commit1 refs/heads/master |
test_cmp - victim/.git/post-receive.stdin test_cmp - victim.git/post-receive.stdin
' '
test_expect_success 'post-update hook arguments' ' test_expect_success 'post-update hook arguments' '
echo refs/heads/master | echo refs/heads/master |
test_cmp - victim/.git/post-update.args test_cmp - victim.git/post-update.args
' '
test_expect_success 'all hook stdin is /dev/null' ' test_expect_success 'all hook stdin is /dev/null' '
! test -s victim/.git/update.stdin && ! test -s victim.git/update.stdin &&
! test -s victim/.git/post-update.stdin ! test -s victim.git/post-update.stdin
' '
test_expect_success 'all *-receive hook args are empty' ' test_expect_success 'all *-receive hook args are empty' '
! test -s victim/.git/pre-receive.args && ! test -s victim.git/pre-receive.args &&
! test -s victim/.git/post-receive.args ! test -s victim.git/post-receive.args
' '
test_expect_success 'send-pack produced no output' ' test_expect_success 'send-pack produced no output' '