From: Junio C Hamano Date: Wed, 03 Jun 2009 22:38:00 GMT Subject: Re: Am able to delete a file with no trace in the log Message-ID: <7vmy8p54fr.fsf@alter.siamese.dyndns.org> In-Reply-To: Linus Torvalds writes: > For example, right now there is _no_ way to get even a "show diff relative > to first parent". You can do "-m", which will show it relative to _both_ > parents, but nobody ever wants that. And you can do "-c" or "--cc", but > that simplifies away all the paths that match in one. Actually for that "Where did my file 'x' go across the merge chain", I was going to suggest something like git log --simplify-merges -m --raw -- x > So here's a challenge: in the git repository, get a nice view of what your > merges looked like. The closest I can get is > > git log -c --stat --grep="Merge branch '" > > which is actually very non-intuitive ("-c" on its own gives no useful > output, but "-c --stat" gives nice diffstat against the first parent, > which in this case is what we want). I think the logical place to hook that into is the --first-parent option. I actually have very hard resisted so far the temptation to do so because your mantra has always been "in a merge, all parents are equal." If you treat the first parent specially too heavily, it would go against the "I got a pull request from you, but the resulting conflicts are too much for me; you know the area much better than I do, so could you do the merge for me and I'll fast forward to you later" workflow. The "first parent is the mainline" and "I am important, so I'll merge with --no-ff to pee in the snow" mentality problems will become worse.