From: Shawn O. Pearce Date: Mon, 02 Nov 2009 23:57:07 GMT Subject: Re: [PATCH] Update packfile transfer protocol documentation Message-ID: <20091102235707.GV10505@spearce.org> In-Reply-To: <7vzl74trmc.fsf@alter.siamese.dyndns.org> Junio C Hamano wrote: > Scott Chacon writes: > > + > > +A pack-file MUST be sent if either create or update command is used. > > Easier to read if MUST is followed by "_even_ if", like so: > > ... MUST be sent when a create or update command is used, even if the > server already has all the necessary objects. > > Shouldn't we say "the client MUST NOT make reference update request if > everything is up to date" which would imply that in practice there is no > reason to send an empty pack data? Create a new branch to point at an existing object. Branch creation causes a pack to be expected, but if you are creating a new branch that points at an existing object there is nothing to pack. E.g.: git remote add -f A user@host:proj.git git push A A/master:refs/heads/new-branch causes a 0 object pack file to be sent, assuming the remote project's master branch has not changed in between the two commands. > > + pack-file = "PACK" 24*(OCTET) > > Curious---where does this 24 come from? Hmmph. Its wrong actually. I was trying to write the minimum number of bytes that make up a pack file, which is actually 28. (12 in the header minus 4 as "PACK" was already spelled out, plus 20 in the footer for the SHA-1). -- Shawn.