>>> A---B---C topic >>> / \ >>> D---E---F---G---H---I---J---K---L---M---N master >>> \ / >>> O---P---Q another-topic >> No, that's not what I need either. After thinking about it more, I >> think what I want is "of all merges in the ancestry path from B to >> master, show only those whose first parent can't reach B." The result >> is the list of all merges that were involved in bringing B to master. > This would work, and i don't see a way to optimize it in git-speak, > given that you don't want to see any extra trailing merges. [...] The provided command actually doesn't work for me for all cases. It works for the simple case of "B", but does not work for "F", because F saw merge H & M. I think we need --not --first-parent, except that doesn't actually work in this case either. However, if we get the full --first-parent rev-list and look for our commit, that works. This is incredibly painful, though. ---------------------------------------------------------------------- #!/bin/sh TARGET=`git rev-list -n 1 $1` git branch -a --contains $1 | sed 's/^\** *//' | grep -v ' -> ' | while read br; do if git rev-list --first-parent $br | grep -q "$TARGET"; then echo $br fi done ---------------------------------------------------------------------- -Seth Robertson -- 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