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

Re: BUG ? git-log omits changesets if the file is identical between revs

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 2, 2010, 22:10 UTC
Message-ID
<7vocepzga3.fsf@alter.siamese.dyndns.org>
In-Reply-To
<4C2E3511.902@us.ibm.com>
Darren Hart <dvhltc@us.ibm.com> writes:
Show 13 quoted lines
> $ git checkout -b 2.6.33.5-rt23 v2.6.33.5-rt23
> $ git log --pretty=oneline v2.6.33.5.. arch/powerpc/kernel
> ef4afcc4401e92982f4ffd3fae6a9a6745a98596 Merge stable/linux-2.6.33.y into rt/2.6.33
> ...
> 92bfe2d63ed46764b0b0a6e9b63bb9e81023ab80 powerpc: realtime support
> ...
> $ git whatchanged 92bfe2d6 -n1
> commit 92bfe2d63ed46764b0b0a6e9b63bb9e81023ab80
> ...
> :100644 100644 43e0734... 4bb9ce4... M  arch/powerpc/kernel/entry_64.S
> ...
> $ git log --pretty=oneline v2.6.33.5.. arch/powerpc/kernel/entry_64.S
> <null>
This is expected, and it is by design.
$ git log --oneline --simplify-merges --full-history --graph \
  v2.6.33.5..v2.6.33.5-rt23 -- arch/powerpc/kernel/entry_64.S

will give you a less simplified history. The first commit we find in its output is:

* ef4afcc Merge stable/linux-2.6.33.y into rt/2.6.33
and if you look at that commit:
$ git show --pretty=short --stat -m ef4afcc -- arch/powerpc/kernel/
you will notice that:
 - ef4afcc is a merge between ac43be5 and a00123d;
 - arch/powerpc/kernel/entry_64.S has not changed between a00123d and this
   merge result ef4afcc;
 - There are many changes made to this path in the history leading to the
   other parent of the merge, ac43be5.
 - When Thomas created ef4afcc, after looking at ac43be5 and a00123d, he
   took the version from a00123d.  Effectively, what happend on the side
   branch that led to ac43be5 did _not_ contribute to the end result at
   all.
 - There was no change to the path between v2.6.33.5 and a00123d (as they
   are the same commit ;-).
 - Hence there is nothing noteworthy to report when explaining how the
   path came about since v2.6.33.5 and v2.6.33.5-rt23.

BTW, this has nothing to do with the path being the same between your HEAD and v2.6.33.5. You can try:

  $ git checkout v2.6.33.5-rt23
  $ echo >>arch/powerpc/kernel/entry_64.S
  $ git commit -m 'random change' arch/powerpc/kernel/entry_64.S
  $ git log --oneline v2.6.33.5.. -- arch/powerpc/kernel/entry_64.S
  b736245 random change

and notice that the change you just made is the only one that is needed to explain how the file came into its current shape since the named bottom version (v2.6.33.5).

If you look for "history simplification" in the list archive you will find Linus explaining why this simplification is the right thing to do number of times, but the short version is that "git log $path" by default gives you _one_ possible and simplest explanation of how the $path came about into its current shape, and "one possible and simplest" is what you want most of the time, because "all possible explanations" is very expensive to compute and often unreadable.

But the "--simplify-merges --full-history" trick I showed above may also be another good thing to know.

Previous: Darren HartNext: Darren Hart
Message 2 of 3 in “BUG ? git-log omits changesets if the file is identical between revs”
  1. Darren HartJul 2, 2010
  2. Junio C HamanoJul 2, 2010
  3. Darren HartJul 2, 2010

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.