diff options
context:
space:
mode:
authorBryce Kwon <bryce@brycekwon.com>
committerBryce Kwon <bryce@brycekwon.com>
commit
parent
tree
download
Withhold the alternates file on the dumb transport
It lists object directories by their path on the server, which a client fetching over http can neither use nor needs to learn. The http-alternates file written for such clients still goes out.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/t0303-robustness.sh13
1 file changed, 13 insertions, 0 deletions
diff --git a/tests/t0303-robustness.sh b/tests/t0303-robustness.sh
index 8d64c1e..be98644 100755
--- a/tests/t0303-robustness.sh
+++ b/tests/t0303-robustness.sh
@@ -494,6 +494,19 @@ test_expect_success 'the dumb transport sends a file with its size' '
cmp body repos/rob/.git/objects/pack/$pack
'
+# The alternates file lists object directories by their path on the server,
+# which a client fetching over http cannot use and should not learn.
+test_expect_success 'the dumb transport withholds the alternates file' '
+ mkdir -p repos/rob/.git/objects/info &&
+ echo "$PWD/repos/foo/.git/objects" >repos/rob/.git/objects/info/alternates &&
+ robq "url=rob/objects/info/alternates" >tmp &&
+ grep "^Status: 404" tmp &&
+ ! grep "repos/foo" tmp &&
+ rm repos/rob/.git/objects/info/alternates &&
+ robq "url=rob/objects/info/packs" >tmp &&
+ grep "^Status: 200" tmp
+'
+
test_expect_success 'a symlink whose target is a large blob is listed without it' '
big=$(head -c 5000 /dev/zero | tr "\0" a | git -C repos/rob hash-object -w --stdin) &&
(