Thread (5 messages) flat view 5 messages, 3 authors, 2022-07-22

Re: Question: How to find the commits in the ancestry path of seen down to _and_ including a given topic?

From: Elijah Newren <hidden>
Date: 2022-07-21 19:34:56

On Thu, Jul 21, 2022 at 8:37 AM Junio C Hamano [off-list ref] wrote:
Elijah Newren [off-list ref] writes:
quoted
A simple question that I'm spinning out of [1]: How can I get `git
log` to show the commits in the ancestry path from seen, back to *and
including* a given topic (but not commits from unrelated topics)?
Drawing of a sample history, please.

I feel stupid asking this, but I do not think I even understand what
the question is X-<.

Commits that are ancestors of 'seen' and are descendants of the tip
of the topic?
What you said *plus* commits from the topic itself.  From this graph:

    A---B---C---J---K <-- main
            |\       \
            | \       N---------------O---P---Q <-- seen
            |  \     /               /
            |   L---M  <-- topic    /
             \                     /
              D---E---F---G---H---I  <-- other_topic

I want the commits L-Q.  If I run

   git log --ancestry-path topic..seen

I only get N-Q, missing L & M.  If I run

   git log --ancestry-path main..seen

then I get D-Q, providing me with D-I and J-K that I don't want.

The closest I seem to be able to get is

   git log --ancestry-path topic~${commits_in_topic_minus_one}..seen

which includes all commits I want except the first commit of the topic
branch.


An example, from git.git; 5b893f7d81 is a topic (ab/submodule-cleanup)
with 12 commits, and ac0248bfba is some older version of 'next' .  I
want all 12 commits in that topic plus all commits that are both
descendants of that tip and ancestors of that old version of 'next',
which adds up to 36 commits.  (Note that this includes the 12 commits
in ab/submodule clean, 9 commits from gc/submodule-use-super-prefix
since that happens to be a descendant of ab/submodule-cleanup, and
about 15 merge commits from merging other topics into next, but does
not include those other 15 topics.)  If I run (notice the "11" instead
of "12"):

   git log --oneline --ancestry-path 5b893f7d81~11..ac0248bfba | wc -l

it reports 35 commits -- it's just missing the first commit from the
topic.  If I change "11" to "12" to try to get that first commit too:

   git log --oneline --ancestry-path 5b893f7d81~11..ac0248bfba | wc -l

then it reports 228 commits, 192 of which I don't want.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help