| #!/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 -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 |