Re: Finding all commits which modify a file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/20/2012 3:35 PM, Neal Groothuis wrote:
Hello,

I'm trying to find /all/ commits that change a file in the
repository...and its proving to be trickier than I thought. :-)

The situation that we were dealing with is this:

- Person A and person B both pull from the same central repository.

- Person A makes a change to file foo.txt and bar.txt, commits, and pushes
to the central repository.

- Person B makes a similar change to bar.txt and commits it.

- Person B does a fetch and merge.  Since both A and B made changes to
bar.txt, this requires conflicts to be resolved manually.

- B reverts A's changes to foo.txt. (If B is coming from a different
revision control system, this may happen due to confusion about how merges
are handled.)

- B commits the changes.

- B makes more changes to bar.txt, commits them, and pushes to the central
repository.

At this point, A's changes to foo.txt have been undone.

Graphically:

     A1
    /  ^
   v    \
   C1   B2<-B3
   ^    /
    \  v
     B1

B1, B2, and B3 have the same version of foo.txt as C1, A1 modifies it.

Person A discovers that his changes are missing and wants to know what
happened.

git log foo.txt doesn't help; it won't even show commit A1, due to history
simplification.

git log --full-history foo.txt will show commit A1.  It still won't show
commit B2, though, which we'd also like to show (because that's where the
change to foo.txt got removed).

I would think that git log --simplify-merges foo.txt would have done what
I'd wanted, but it still does not show commit B2.   Based on what I'm
reading in the man page, I would expect the simplification to go like
this:

     A1
     | ^
     |  \
     |  B2<-B3
     |  /
     v v
     C1

(since B1 is TREESAME as C1 if we're only considering foo.txt)

     A1
     | ^
     |  \
     |  B2<-B3
     |
     v
     C1

(since C1 is an ancestor of A1)

However, the actual output only includes A1, not B2.

  - Can someone explain this, and/or
  - can someone offer a command to display all commits (including merges)
in which ANY parent is not TREESAME?

Does git-log --all help?

v/r,
neal
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]