On Wed, Apr 05, 2023 at 09:47:55PM +0200, Adam Majer wrote: > On 4/5/23 21:04, Junio C Hamano wrote: > > Does such a clone copy the name of the primary branch from the > > remote repository to the newly created repository? > > Yes it does. > > # git init -b maestro --object-format=sha256 a > # git clone a b > # cat b/.git/HEAD > ref: refs/heads/maestro Yeah, we send a special capability line in that case. If you do: GIT_TRACE_PACKET=1 git clone a b you can see that upload-pack indicates that ls-refs understands the "unborn" capability: packet: upload-pack> version 2 packet: upload-pack> agent=git/2.40.0.824.g7b678b1f643 packet: upload-pack> ls-refs=unborn packet: upload-pack> fetch=shallow wait-for-done packet: upload-pack> server-option packet: upload-pack> object-format=sha256 packet: upload-pack> object-info packet: upload-pack> 0000 And then clone asks for it say "yes, I also understand unborn": packet: clone> command=ls-refs packet: clone> agent=git/2.40.0.824.g7b678b1f643 packet: clone> object-format=sha256 packet: clone> 0001 packet: clone> peel packet: clone> symrefs packet: clone> unborn packet: clone> ref-prefix HEAD packet: clone> ref-prefix refs/heads/ packet: clone> ref-prefix refs/tags/ packet: clone> 0000 And then upload-pack can send us the extra information: packet: upload-pack> unborn HEAD symref-target:refs/heads/maestro packet: upload-pack> 0000 I think we'd need to do something similar here for object-format. -Peff