#!/bin/sh | |
test_description='fetching via git:// using core.gitproxy' | |
. ./test-lib.sh | |
test_expect_success 'setup remote repo' ' | |
git init remote && | |
(cd remote && | |
echo content >file && | |
git add file && | |
git commit -m one | |
) | |
' | |
cat >proxy <<'EOF' | |
#!/bin/sh | |
echo >&2 "proxying for $*" | |
cmd=`"$PERL_PATH" -e ' | |
read(STDIN, $buf, 4); | |
my $n = hex($buf) - 4; | |
read(STDIN, $buf, $n); | |
my ($cmd, $other) = split /\0/, $buf; | |
# drop absolute-path on repo name | |
$cmd =~ s{ /}{ }; | |
print $cmd; | |
'` | |
echo >&2 "Running '$cmd'" | |
exec $cmd | |
EOF | |
chmod +x proxy | |
test_expect_success 'setup local repo' ' | |
git remote add fake git://example.com/remote && | |
git config core.gitproxy ./proxy | |
' | |
test_expect_success 'fetch through proxy works' ' | |
git fetch fake && | |
echo one >expect && | |
git log -1 --format=%s FETCH_HEAD >actual && | |
test_cmp expect actual | |
' | |
test_done |