On Thu, May 25, 2017 at 11:59:24AM -0400, Jeff King wrote: > The just-HEAD case could look like: This patch does work, in the sense that upload-pack advertises the unborn HEAD symref. But the client doesn't actually do anything with it. The capability parsing happens in get_remote_heads(), which passes the data out by adding an annotation to the "struct ref" list. But of course we have no HEAD ref to annotate. So either get_remote_heads() would have to start returning a bogus HEAD ref (with a null sha1, I guess, which all callers would have to recognize). Or clone (and probably "remote set-head -a") would have to start reaching across the transport-module boundary and asking for any symref values for "HEAD". I'm not excited about more special-casing of "HEAD", though. In theory we'd want this for other symrefs in the long run, and it would be nice if clients were ready to handle that (even if the protocol isn't quite there). I dunno. I was thinking there might be a quick tweak, but I'm wondering if this arcane case is worth the restructuring we'd have to do to support it. It only comes up when you've moved the server repo's HEAD to an unborn branch _and_ you have other refs (since otherwise we don't even send capabilities at all!). -Peff