(Resending as plain text, sorry about duplicate, Junio.) On Thu, Aug 30, 2012 at 4:13 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > > In many scripted Porcelain commands, we find this idiom: > > if test "$(git rev-parse --verify A)" = "$(git merge-base A B)" > then > ... A is an ancestor of B ... > fi > > But you do not have to compute exact merge-base only to see if A is > an ancestor of B. Give them a more direct way to use the underlying > machinery. Thanks! It has bugged me ever since I first saw that idiom that there was no way that better shows the intent. > + if (argc != 2) > + die("--is-ancestor takes exactly two commits"); I think git merge-base shows the usage message regardless if argc < 2, so this only happens when more than two arguments are given. Maybe include --is-ancestor in the usage message? > + if (is_ancestor && (show_all | octopus | reduce)) > + die("--is-reachable cannot be used with other options"); I suppose --is-reachable should be --is-ancestor. -- 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