git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: extra headers in commit objects

From
Shawn O. Pearce <spearce@spearce.org>
Date
Feb 3, 2010, 22:48 UTC
Message-ID
<20100203224835.GK14799@spearce.org>
In-Reply-To
<d411cc4a1002031158k3e50db30l3f7d73d49e3dad23@mail.gmail.com>
Scott Chacon <schacon@gmail.com> wrote:
Show 11 quoted lines
> On Wed, Feb 3, 2010 at 9:40 AM, Shawn O. Pearce <spearce@spearce.org> wrote:
> > Today I came across this "bug fix" [1,2] in Dulwich, which is
> > claiming to be a pure-Python implementation of Git.
> >
> > I haven't spoken with Jelmer Vernooij directly about it, but after
> > some indirect email through a 3rd party, it seems he might be under
> > the impression that this really is a bug in Dulwich, because "other
> > git implementations do it".
> 
> At the risk of pissing you off for the second time in as many days,
> this is entirely my fault.
Apparently, s**t happens is a good phrase.  One I need to learn.
> I was having a beer with Jelmer in Wellington a few weeks ago
And... beer doesn't promote clear thinking.

All is forgiven. As is yesterday's remark about not telling me sooner about a JGit bug. You really didn't do anything bad, I just woke up on the wrong side of the bed the past couple of days, and sort of went off...

Sorry.  :-\
Show 7 quoted lines
> Anyhow, I was saying that _technically_ you can artificially write
> extra headers into the commit object (though at the time Dulwich
> didn't support reading them because of how it parsed commit objects -
> I believe it would actually explode if it saw something it didn't
> expect).  I said I was still going to keep the metadata in my
> implementation in the message, but he was very interested in hiding
> his in the commit headers.

Yea, everyone wants to hide that extra metadata. I never get why. Even in SVN. Why wouldn't I want to see the bug(s) fixed by a commit? Difference of opinion. I also happen to prefer the color blue. Dammit, everyone should prefer blue.

Show 7 quoted lines
> To my defense, we (you and I, Shawn)
> talked about this at the GitTogether this year and you and a few
> others told me that CGit would not blow up but would just ignore them,
> which is fine for his purposes.  I certainly did not get the
> impression from that short discussion that this was something to be
> absolutely avoided, but rather that it just wasn't really encouraged
> or explicitly supported.

Sorry. I've held this same opinion as Junio and Nico have expressed in this thread, that although we ignore extra headers, its only to leave us an escape hatch in case we add something like "encoding" in the future. Adding encoding was almost a nightmare because we didn't have that escape hatch.

I also hold the opinion that the C implementation is correct, and everyone else is wrong. Even JGit. Unless its a bug in the C implementation, in which case the bug fix is correct. :-)

Which in this case means, if the C implementation doesn't give the user plumbing to do something (aside from using git mkobject), you really should think twice before doing it.

So I apologize if I gave you the wrong impression at the GitTogether. I claim stupidity as my only defense.

> Sorry.  So, for future reference, though CGit _can_ handle it, don't?
C Git won't choke if there are extra headers.

But we _really_ don't want them. And C Git won't be writing any new headers anytime soon. I think we're more likely to shift the entire hashing scheme to SHA-512 or something before we add a new header.

-- 
Shawn.
Previous: Scott ChaconNext: Mike Hommey
Message 16 of 20 in “extra headers in commit objects”
  1. Shawn O. PearceFeb 3, 2010
  2. Nicolas PitreFeb 3, 2010
  3. demerphqFeb 3, 2010
  4. Shawn O. PearceFeb 3, 2010
  5. demerphqFeb 3, 2010
  6. Junio C HamanoFeb 3, 2010
  7. Shawn O. PearceFeb 3, 2010
  8. Junio C HamanoFeb 4, 2010
  9. A Large Angry SCMFeb 4, 2010
  10. Petr BaudisFeb 3, 2010
  11. demerphqFeb 3, 2010
  12. Shawn O. PearceFeb 3, 2010
  13. Nicolas PitreFeb 3, 2010
  14. Sverre RabbelierFeb 3, 2010
  15. Scott ChaconFeb 3, 2010
  16. Shawn O. PearceFeb 3, 2010
  17. Mike HommeyFeb 4, 2010
  18. Jelmer VernooijFeb 3, 2010
  19. Nicolas PitreFeb 3, 2010
  20. Shawn O. PearceFeb 3, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.