add export patch series menu item for gitk

The menu item lets you export a series of patches into the current
directory like git format-patch does. This is useful if you browsing
the history with gitk and want to export patch series from there.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
git-gui: teach the choose repository dialog to behave similar to git clone

Previously the user was always in charge of typing a name when cloning an
existing repository. The commandline derives this from the source url.
This lets git gui apply the same logic and save the user some typing in
case he is happy with the convention over configuration.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
git-gui: add import patches to transport menu

This is useful because patches are useful.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
git-gui: make stage line(s) only reshow file instead of rescan

A rescan of the whole repository might take a noticeable amount
of time. (Un-)Stage Hunk already does the same and thus "feels"
much faster.
git-gui: add configuration for default arguments of gitk history browsing

With git becoming older revision trees grow. To optimize startup
performance of gitk it is helpful to configure a default set of
arguments to limit revisions. We provide a default of commits since
"3 months ago".

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
git-gui: add hook for commandline yes/no questions
git gui: add a "compose review email" checkbox to push dialog

This is useful when working with a central server. If a developer wants
to send his changes to a reviewer we can help him fill out the necessary
information about the branch he has pushed and launch his default email
composer.

Composition of such an email is currently only allowed for pushing one
branch because the subject line size is limited.
git gui: teach delete dialog to open with a default remote

This is useful if you want to open the delete dialog with a preselected
remote. We use this in the next patch from this series.
git gui: add checkbox to launch remote branch delete after push

This is useful when working with a central server and feature branches.
After a reviewer merged a feature branch into the upstream branch he
usually wants to delete this branch on the server after pushing the
upstream branch.

Save some clicks and open the delete dialog after pushing the upstream
branch.
git gui: teach fetch operation to close dialog on successful completion
git gui: do fetch from a default remote on startup

In many situations the very first thing you do after starting git gui is
to fetch the newest changes from your main remote. Lets have git gui do
the work automatically and save us some clicking.

We add two configuration variables (one to enable the feature and one
specifying the default remote) so the remote can be reused in another
patch which adds a "Review Topic" merge item later in this series.
git gui: add "review topic" menuitem which supports feature branch workflow

We have a setup where each developer publishes feature branches on a
central server. These branches then become merged into the upstream
branch (master in most times) by another developer designated as the
reviewer.

The review process usually involves several steps (fetch remote branches,
update local upstream branch to server branch, review in gitk, merge).
To combine this operation into one step we add a new menu item "Review
Topic" under the merge menu which guides the user through all the steps.

After "Review Topic" has finished the only thing left to do is to push
the current branch (which is the upstream branch) and delete the feature
branch. Support for which has been implemented in an ealier patch in
this series.
Add documentation for git gui variables for email and delete after push
git gui: make gc hint and fetch on startup sequential

On large repositories (especially on Windows) doing any harddrive usage
during the initial status scan slows the whole process down. So this
postpones the question for compressing loose objects and fetching of the
default remote until after that.
git gui: make branch name entering substitute invalid values

All invalide characters for a branch name are substituted with an
underscore.
DRAFT HOTFIX: remote strange check for existance of tag variable in choose rev

If you create a tag on a tag like this

git tag -a first_tag
git tag -a second_tag first_tag

it would not be shown in the tag revision chooser. This patch
removes a check if the tag has already been merged which is not upstream
ready. Find out why the inc array seems to be filled incorrectly.
SQ: fetchonstartup
SQ: review topic
SQ: unknow fix for review topic
git-gui: add a review url protocol handler

This lets you initiate reviews by clicking on a special
review:// url in your email. git gui needs to be started
so it can receive the event.