Staging
v0.5.2
Revision 6c293d408dbbd0206e80df3ecda7f1620cadaa94 authored by Santi Béjar on 08 March 2008, 11:30:04 UTC, committed by Junio C Hamano on 09 March 2008, 03:43:21 UTC
The "config --global" suggested in the message is a valid one-shot fix,
and hopefully one-shot across machines that NFS mounts the home directories.

This knowledge can hopefully be reused when you are forced to use git on
Windows, but the fix based on GECOS would not be applicable, so
it is not such a useful hint to mention the exact reason why the
name cannot be determined.

Signed-off-by: Santi Béjar <sbejar@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 0bb91d9
Raw File
t5403-post-checkout-hook.sh
#!/bin/sh
#
# Copyright (c) 2006 Josh England
#

test_description='Test the post-checkout hook.'
. ./test-lib.sh

test_expect_success setup '
	 echo Data for commit0. >a &&
	 echo Data for commit0. >b &&
	 git update-index --add a &&
	 git update-index --add b &&
	 tree0=$(git write-tree) &&
	 commit0=$(echo setup | git commit-tree $tree0) &&
        git update-ref refs/heads/master $commit0 &&
	 git-clone ./. clone1 &&
	 git-clone ./. clone2 &&
        GIT_DIR=clone2/.git git branch -a new2 &&
        echo Data for commit1. >clone2/b &&
	 GIT_DIR=clone2/.git git add clone2/b &&
	 GIT_DIR=clone2/.git git commit -m new2
'

for clone in 1 2; do
    cat >clone${clone}/.git/hooks/post-checkout <<'EOF'
#!/bin/sh
echo $@ > $GIT_DIR/post-checkout.args
EOF
    chmod u+x clone${clone}/.git/hooks/post-checkout
done

test_expect_success 'post-checkout runs as expected ' '
        GIT_DIR=clone1/.git git checkout master &&
        test -e clone1/.git/post-checkout.args
'

test_expect_success 'post-checkout receives the right arguments with HEAD unchanged ' '
        old=$(awk "{print \$1}" clone1/.git/post-checkout.args) &&
        new=$(awk "{print \$2}" clone1/.git/post-checkout.args) &&
        flag=$(awk "{print \$3}" clone1/.git/post-checkout.args) &&
        test $old = $new -a $flag = 1
'

test_expect_success 'post-checkout runs as expected ' '
        GIT_DIR=clone1/.git git checkout master &&
        test -e clone1/.git/post-checkout.args
'

test_expect_success 'post-checkout args are correct with git checkout -b ' '
        GIT_DIR=clone1/.git git checkout -b new1 &&
        old=$(awk "{print \$1}" clone1/.git/post-checkout.args) &&
        new=$(awk "{print \$2}" clone1/.git/post-checkout.args) &&
        flag=$(awk "{print \$3}" clone1/.git/post-checkout.args) &&
        test $old = $new -a $flag = 1
'

test_expect_success 'post-checkout receives the right args with HEAD changed ' '
        GIT_DIR=clone2/.git git checkout new2 &&
        old=$(awk "{print \$1}" clone2/.git/post-checkout.args) &&
        new=$(awk "{print \$2}" clone2/.git/post-checkout.args) &&
        flag=$(awk "{print \$3}" clone2/.git/post-checkout.args) &&
        test $old != $new -a $flag = 1
'

test_expect_success 'post-checkout receives the right args when not switching branches ' '
        GIT_DIR=clone2/.git git checkout master b &&
        old=$(awk "{print \$1}" clone2/.git/post-checkout.args) &&
        new=$(awk "{print \$2}" clone2/.git/post-checkout.args) &&
        flag=$(awk "{print \$3}" clone2/.git/post-checkout.args) &&
        test $old = $new -a $flag = 0
'

test_done
back to top