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