Michael Haggerty <mhag...@alum.mit.edu> writes:

> 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".

As I do not see how "only show first-parent chains from near the tip
but stop immediately when the chain deviates from the ancestry path"
could be a sensible operation (in other words, I do not offhand
think of examples of what useful things you can do with that
information), I actually expect that "-f-p -a-p D..J" should error
out, instead of giving no output.

You are correct to point out that sometimes -f-p and -a-p _could_ be
compatible, e.g. "-f-p -a-p A..M", or "-f-p -a-p B..M".  But I think
the only case that they are compatible is when "-f-p" output is a
strict subset of what "-a-p" without "-f-p" would give.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to