tmp-objdir: quote paths we add to alternates
authorJeff King <peff@peff.net>
Mon, 12 Dec 2016 19:53:55 +0000 (14:53 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 12 Dec 2016 23:10:46 +0000 (15:10 -0800)
commitaae2ae4f74f91f434f7f5c3ac25f37d80a9b319e
tree01800d26a7669c4d2e0dabdb3b8084132052df43
parentcf3c6352100a0d302276e46e3f9a7f0804e224d8
tmp-objdir: quote paths we add to alternates

Commit 722ff7f87 (receive-pack: quarantine objects until
pre-receive accepts, 2016-10-03) regressed pushes to
repositories with colon (or semi-colon in Windows in them)
because it adds the repository's main object directory to
GIT_ALTERNATE_OBJECT_DIRECTORIES. The receiver interprets
the colon as a delimiter, not as part of the path, and
index-pack is unable to find objects which it needs to
resolve deltas.

The previous commit introduced a quoting mechanism for the
alternates list; let's use it here to cover this case. We'll
avoid quoting when we can, though. This alternate setup is
also used when calling hooks, so it's possible that the user
may call older git implementations which don't understand
the quoting mechanism. By quoting only when necessary, this
setup will continue to work unless the user _also_ has a
repository whose path contains the delimiter.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5547-push-quarantine.sh
tmp-objdir.c