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

Bug when git rev-list options "--first-parent" and "--ancestry-path" are used together?

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
May 23, 2013, 10:07 UTC
Message-ID
<519DEA48.10108@alum.mit.edu>
It seems to me that
     git rev-list --first-parent --ancestry-path A..B
is well-defined and should list the commits in the intersection between
     git rev-list --first-parent                 A..B
and
     git rev-list                --ancestry-path A..B

But in many cases the first command doesn't provide any output even though there are commits common to the output of the last two commands.

For example, take as an example the DAG from test t6019:

# D---E-------F # / \ \ # B---C---G---H---I---J # / \ # A-------K---------------L--M

(The merges are always downwards; e.g., the first parent of commit L is K.) The command

    git rev-list --first-parent --ancestry-path D..J

doesn't generate any output, whereas I would expect it to output "H I J". Similarly,

    git rev-list --first-parent --ancestry-path D..M
doesn't generate any output, whereas I would expect it to output "L M".

For fun, the attached script computes the output for all commit pairs in this DAG and outputs the discrepancies that it finds. (It should be run in directory "t/trash directory.t6019-rev-list-ancestry-path" after t6019 was run with "-d".)

Is this a bug or are my expectations wrong?
Michael
-- 
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/
Next: Junio C Hamano
Message 1 of 4 in “Bug when git rev-list options "--first-parent" and "--ancestry-path" are used together?”
  1. Michael HaggertyMay 23, 2013
  2. Junio C HamanoMay 23, 2013
  3. Michael HaggertyMay 25, 2013
  4. Michael HaggertyMay 25, 2013

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.