ipython/ipython — pull request #1759 by Carreau (2012-05-23 20:00:42+00:00)
Title: github, merge PR(s) just by number(s) 

inspired by git-mrb and test\_pr, I thougth it would be usefull to be able to merge PR only by giving their number. Hence `git merge-pull-request`or `git-mpr`. (as it is in tool, the code is not really clean, full of typos...etc)

usage:
```bash
$ git mpr -h ~/ipython/tools
usage: git-mpr [-h] [-l | -a | -m [pr-number [pr-number ...]]]

Merge (one|many) github pull request by their number. If pull request can't be
merge as is, cancel merge, and continue to the next if any.

optional arguments:
-h, --help show this help message and exit
-l, --list list PR, their number and their mergeability
-a, --merge-all try to merge as many PR as possible, one by one
-m [pr-number [pr-number ...]], --merge [pr-number [pr-number ...]]
The pull request numbers
```

examples :
```bash
$ git mpr --list
* #1758 [√]: test_pr, fallback on http if git protocol fail, and SSL errors...
* #1755 [√]: test for pygments before running qt tests
* #1715 [√]: Fix for #1688, traceback-unicode issue
[...]
* #1493 [√]: Selenium web tests proof-of-concept
* #1471 [ ]: simplify IPython.parallel connections and enable Controller Resume
* #1343 [ ]: Add prototype shutdown button to Notebook dashboard
* #1285 [√]: Implementation of grepping the input history using several patterns
* #1215 [√]: updated %quickref to show short-hand for %sc and %sx
```
PR number, mergeability and title
Quite slow, as it does 1 api call by PR, since api does not give mergeability anymore if you ask for the list of all PRs at once.

merge one or more PR (skip the ones with conflict and present a nice list to copy and past to do it by hand)

```bash
$ git mpr --merge [pr-number [pr-number ...]]]
[...]
*************************************************************************************
the following branch have not been merged automatically, considere doing it by hand :
PR 1630: git pull https://github.com/minrk/ipython.git mergekernel
PR 1343: git pull https://github.com/takluyver/ipython.git notebook-shutdown
PR 1715: git pull https://github.com/jstenar/ipython.git ultratb-pycolorize-unicode
PR 1732: git pull https://github.com/fperez/ipython.git cellmagics
PR 1471: git pull https://github.com/minrk/ipython.git connection
PR 1674: git pull https://github.com/mdboom/ipython.git notebook-carriage-return
*************************************************************************************
```

And last,
```
git mpr --merge-all
```

That is pretty self explainatory

Oh, and I also learn that if you have a `git-xxx`(with dash) in your PATH, `git` is smart and call it when you invoke `git xxx`(without dash)