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

Re: [PATCH v5 03/19] builtin/diff-tree: convert to struct object_id

From
Jeff King <peff@peff.net>
Date
Feb 22, 2017, 19:16 UTC
Message-ID
<20170222191641.o2rtt2ymtb4h2yqe@sigill.intra.peff.net>
In-Reply-To
<xmqqy3wyawlu.fsf@gitster.mtv.corp.google.com>
On Wed, Feb 22, 2017 at 10:50:21AM -0800, Junio C Hamano wrote:
Show 14 quoted lines
> "brian m. carlson" <sandals@crustytoothpaste.net> writes:
> 
> > Convert most leaf functions to struct object_id.  Change several
> > hardcoded numbers to uses of parse_oid_hex.  In doing so, verify that we
> > when we want two trees, we have exactly two trees.
> >
> > Finally, in stdin_diff_commit, avoid accessing the byte after the NUL.
> > This will be a NUL as well, since the first NUL was a newline we
> > overwrote.  However, with parse_oid_hex, we no longer need to increment
> > the pointer directly, and can simply increment it as part of our check
> > for the space character.
> 
> After reading the pre- and post-image twice, I think I convinced
> myself that this is a faithful conersion and they do the same thing.

I think this is correct, too (but then, I think it largely comes from the patch I wrote the other night. So I did look at it carefully, but it's not exactly an independent review).

Show 11 quoted lines
> What the function does appears somewhat iffy in the modern world.
> We are relying on the fact that while Git is operating in this mode
> of reading a tuple of commits per line and doing log-tree, that Git
> itself will not do the history traversal (instead, another instance
> of Git that feeds us via our standard input is walking the history)
> for this piece of code to work correctly.  
> 
> Of course, the "diff-tree --stdin" command was meant to sit on the
> downstream of "rev-list --parents", so the assumption the code makes
> (i.e. the parents field of the in-core commit objects do not have to
> be usable for history traversal) may be reasonable, but still...

I'm not sure it's that weird. "diff-tree" is about diffing, not traversal. The only reason it touches commit->parents at all (and doesn't just kick off a diff between the arguments it gets) is that it's been stuck with pretty-printing the commits, which might ask to show the parents.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 28 in “object_id part 6”
  1. 00/19 object_id part 6brian m. carlson, Feb 21, 2017
  2. 01/19 hex: introduce parse_oid_hexbrian m. carlson, Feb 21, 2017
  3. 02/19 builtin/commit: convert to struct object_idbrian m. carlson, Feb 21, 2017
  4. 07/19 builtin/grep: convert to struct object_idbrian m. carlson, Feb 21, 2017
  5. 04/19 builtin/describe: convert to struct object_idbrian m. carlson, Feb 21, 2017
  6. 09/19 builtin/clone: convert to struct object_idbrian m. carlson, Feb 21, 2017
  7. 06/19 builtin/fmt-merge-message: convert to struct object_idbrian m. carlson, Feb 21, 2017
  8. 03/19 builtin/diff-tree: convert to struct object_idbrian m. carlson, Feb 21, 2017
  9. Junio C HamanoFeb 22, 2017
  10. Jeff KingFeb 22, 2017
  11. Junio C HamanoFeb 22, 2017
  12. brian m. carlsonFeb 22, 2017
  13. t: add multi-parent test of diff-tree --stdinbrian m. carlson, Feb 22, 2017
  14. Junio C HamanoFeb 22, 2017
  15. Jeff KingFeb 22, 2017
  16. brian m. carlsonFeb 22, 2017
  17. 18/19 builtin/merge-base: convert to struct object_idbrian m. carlson, Feb 21, 2017
  18. 12/19 builtin/replace: convert to struct object_idbrian m. carlson, Feb 21, 2017
  19. 14/19 refs: convert each_reflog_ent_fn to struct object_idbrian m. carlson, Feb 21, 2017
  20. 19/19 wt-status: convert to struct object_idbrian m. carlson, Feb 21, 2017
  21. 13/19 reflog-walk: convert struct reflog_info to struct object_idbrian m. carlson, Feb 21, 2017
  22. 10/19 builtin/merge: convert to struct object_idbrian m. carlson, Feb 21, 2017
  23. 11/19 Convert remaining callers of resolve_refdup to object_idbrian m. carlson, Feb 21, 2017
  24. 17/19 Convert object iteration callbacks to struct object_idbrian m. carlson, Feb 21, 2017
  25. 15/19 refs: simplify parsing of reflog entriesbrian m. carlson, Feb 21, 2017
  26. 08/19 builtin/branch: convert to struct object_idbrian m. carlson, Feb 21, 2017
  27. 16/19 sha1_file: introduce an nth_packed_object_oid functionbrian m. carlson, Feb 21, 2017
  28. 05/19 builtin/fast-export: convert to struct object_idbrian m. carlson, Feb 21, 2017

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.