Code

git-gui: Implement local merge operations.
authorShawn O. Pearce <spearce@spearce.org>
Fri, 26 Jan 2007 08:33:56 +0000 (03:33 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Fri, 26 Jan 2007 08:33:56 +0000 (03:33 -0500)
commite4834837a8a02708efb6a7f8a248087a8cd49ab3
treeaae06c2e649d80654aae298b552bd378c714122e
parentbc7452f5e7c0c472bc580e2e00d84f31d1af50ce
git-gui: Implement local merge operations.

To allow users to merge local heads and tracking branches we now offer
a dialog which lets the user select 1-15 branches and merge them using
the stock `git merge` Grand Unified Merge Driver.

Originally I had wanted to implement this merge internally within git-gui
as I consider GUMD to be mostly Porcelain-ish, but the truth is it does
its job exceedingly well and its a relatively complex chunk of code.
I'll probably circle back later and try to remove the invocation of GUMD
from git-gui, but right now it lets me get the job done faster.

Users cannot start a merge if they are currently in the middle of one,
or if they are amending a commit.  Trying to do either is just stupid
and should be stopped as early as possible.

I've also made it simple for users to startup a gitk session prior to
a merge by offering a Visualize button which runs `gitk $revs --not HEAD`,
where $revs is the list of branches currently selected in the merge
dialog.  This makes it quite simple to find out what the damage will
be to the current branch if you were to carry out the currently proposed
merge.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh