git-clone --reference: saner handling of borrowed symrefs.
commit1f7d1a53fed40608e76200f941e6689b53752747
authorJunio C Hamano <junkio@cox.net>
Sun, 4 Feb 2007 11:25:12 +0000 (4 03:25 -0800)
committerJunio C Hamano <junkio@cox.net>
Sun, 4 Feb 2007 11:28:15 +0000 (4 03:28 -0800)
tree51e02160b52ef0f938a82a1eb9bbe776bab7c4f2
parentec8048913217d8ff6e54950a0cb8ab2e739a1d1f
git-clone --reference: saner handling of borrowed symrefs.

When using --reference to borrow objects from a neighbouring
repository while cloning, we copy the entire set of refs under
temporary "refs/reference-tmp/refs" space and set up the object
alternates.  However, a textual symref copied this way would not
point at the right place, and causes later steps to emit error
messages (which is harmless but still alarming).  This is most
visible when using a clone created with the separate-remote
layout as a reference, because such a repository would have
refs/remotes/origin/HEAD with 'ref: refs/remotes/origin/master'
as its contents.

Although we do not create symbolic-link based refs anymore, they
have the same problem because they are always supposed to be
relative to refs/ hierarchy (we dereference by hand, so it only
is good for HEAD and nothing else).

In either case, the solution is simply to remove them after
copying under refs/reference-tmp; if a symref points at a true
ref, that true ref itself is enough to ensure that objects
reachable from it do not needlessly get fetched.

Signed-off-by: Junio C Hamano <junkio@cox.net>
git-clone.sh
t/t5700-clone-reference.sh