git-branch --contains=commit
commit694a577519a762d12b8a53e76b6f1dd3ccf25e7d
authorJunio C Hamano <gitster@pobox.com>
Wed, 7 Nov 2007 22:58:09 +0000 (7 14:58 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 23 Nov 2007 06:11:28 +0000 (22 22:11 -0800)
tree8e4aed3e5c5f260ded743cbf80b3873f4a09ecc1
parentdd3bf0f4a5bab17011e94bfeb808ee64dd2ad040
git-branch --contains=commit

This teaches git-branch to limit its listing to branches that
are descendants to the named commit.

When you are using many topic branches, you often would want to
see which branch already includes a commit, so that you know
which can and cannot be rewound without disrupting other people.

One thing that sometimes happens to me is:

 * Somebody sends a patch that is a good maint material.  I
   apply it to 'maint':

     $ git checkout maint
     $ git am -3 -s obvious-fix.patch

 * Then somebody else sends another patch that is possibly a
   good maint material, but I'd want to cook it in 'next' to be
   extra sure.  I fork a topic from 'maint' and apply the patch:

     $ git checkout -b xx/maint-fix-foo
     $ git am -3 -s ,xx-maint-fix-foo.patch

 * A minor typo is found in the "obvious-fix.patch".

The above happens without pushing the results out, so I can
freely recover from it by amending 'maint', as long as I do not
forget to rebase the topics that were forked previously.

With this patch, I can do this to find out which topic
branches already contain the faulty commit:

    $ git branch --contains=maint^
      xx/maint-fix-foo

so I can rebase the xx/maint-fix-foo branch before merging it
to 'next'.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-branch.c