Re: git-feed-mail-list.sh
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:25
Linus Torvalds [off-list ref] writes:
But if you want to get it for any random merges, you can always just do git log -11 --pretty=oneline ^$commit^ $commit^@ | sed 's/[0-9a-f]* // ; 11 s/.*/\.\.\./' which will show up to the ten first commits that were merged (and turn the eleventh one, if it exists, into "..." - that's a pretty disgusting trick to make it show when you left things out). That "^$commit^ $commit^@" part is important. It may look like some deranged git smiley, but it does exactly what you want it to do: take all the parents of the commit, but ignore any commit reachable from the first one (the "mainline" of the person who did the commit). The ^@ syntax is obviously pretty new, so it requires a modern git.
It is indeed very quite new. Merged into "master" branch at the beginning of this month. I often wish we had a straightforward way to tell when a given feature went into the mainline, not just appeared on a topic branch. In this case, I said: $ git whatchanged -p -S'"^@"' master -- revision.c to find ea4a19 commit (Apr 30 00:54:29 2006 -0700). But that was when the feature was first made on one of my topic branches, which is not what I was looking for. By looking at gitk, I can then tell 83262e (May 1 01:54:27) merged it to "next", and 746437 (May 1 22:55:40) merged it to "master". In general this is an unsolvable question, because I can have a topic branch forked off of the tip of "master", cook it for a few days without advancing "master" at all, and merge it to "master" after that. But such a merge will be a fast-forward.