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

Re: [PATCH] use child_process_init() to initialize struct child_process variables

From
Philip Oakley <philipoakley@iee.org>
Date
Nov 2, 2014, 19:06 UTC
Message-ID
<F44397C122BB4E63B89EC9BE26007B2E@PhilipOakley>
In-Reply-To
<20141101033327.GA8307@peff.net>
From: "Jeff King" <peff@peff.net>
Show 7 quoted lines
> On Fri, Oct 31, 2014 at 02:48:17PM -0700, Junio C Hamano wrote:
>
>> Programs that read a pack data stream unpack-objects were originally
>> designed to ignore cruft after the pack data stream ends, and
>> because the bundle file format ends with pack data stream, you
>> should have been able to append extra information at the end without
>> breaking older clients.

It's an option, I'd been looking at sneaking the information into the refs header section.

Show 7 quoted lines
>> Alas, this principle is still true for
>> unpack-objects, but index-pack broke it fairly early on, and we use
>> the latter to deal with bundles, so we cannot just tuck extra info
>> at the end of an existing bundle.  You'd instead need a new option
>> to create a bundle that cannot be read by existing clients X-<.
>
> I think you could use a similar NUL-trick to what we do in the online
I like this 'trick'. I'd not appreciated the use of the null separator
 for breaking a line into separate strings that way before (I'd 
understood it, just never appreciated it!).
Show 15 quoted lines
> protocol, and have a ref section like:
>
>  ...sha1... refs/heads/master
>  ...sha1... refs/heads/confused-with-master
>  ...sha1... HEAD\0symref=refs/heads/master
>
> The current parser reads into a strbuf up to the newline, but we
> ignore
> everything after the NUL, treating it like a C string. Prior to using
> strbufs, we used fgets, which behaves similarly (you could not know
> from
> fgets that there is extra data after the NUL, but that is OK; we only
> want older versions to ignore the data, not do anything useful with
> it).
>

This certainly looks the way to go. The one extra question would be whether the symref should be included by default when HEAD is present, or only if there was possible ambiguity between the other listed refs. Previously I'd assumed the latter. The former would appear stronger, as long as the symref was within the listed refs, and excluded otherwise.

Philip 
Previous: Jeff KingNext: Junio C Hamano
Message 13 of 25 in “use child_process_init() to initialize struct child_process variables”
  1. use child_process_init() to initialize struct child_process variablesRené Scharfe, Oct 28, 2014
  2. mike.gorchak.qnx@gmail.comOct 28, 2014
  3. Jeff KingOct 29, 2014
  4. Junio C HamanoOct 29, 2014
  5. Junio C HamanoOct 30, 2014
  6. Jeff KingOct 30, 2014
  7. bundle: split out a helper function to compute and write prerequisitesJunio C Hamano, Oct 30, 2014
  8. Jeff KingOct 30, 2014
  9. Jeff KingOct 30, 2014
  10. Philip OakleyOct 31, 2014
  11. Junio C HamanoOct 31, 2014
  12. Jeff KingNov 1, 2014
  13. Philip OakleyNov 2, 2014
  14. Junio C HamanoNov 3, 2014
  15. Jeff KingNov 3, 2014
  16. Junio C HamanoNov 3, 2014
  17. Junio C HamanoNov 4, 2014
  18. Jeff KingNov 4, 2014
  19. Junio C HamanoNov 5, 2014
  20. Philip OakleyNov 5, 2014
  21. Philip OakleyNov 5, 2014
  22. Jeff KingNov 5, 2014
  23. Philip OakleyNov 5, 2014
  24. René ScharfeNov 9, 2014
  25. Jeff KingNov 10, 2014

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.