Thread (6 messages) flat view 6 messages, 4 authors, 2016-08-11

[RFC] git-gui: A commit / fetch / push interface

From: Shawn Pearce <hidden>
Date: 2016-08-11 20:05:45

Paul Mackerras originally started a thread about gitool, a graphical
interface for creating commits:

  http://thread.gmane.org/gmane.comp.version-control.git/26415

I liked it and wanted to start making it available to some folks I
work with who are more comfortable with the mouse than they are with
the keyboard.  At first I tried fixing a few of the outstanding bugs
in gitool but I eventually wound up rewriting the thing from scratch.

The git-gui interface looks pretty similar to the gitool interface
(thanks Paul for laying out a such good idea!).  In the top 1/3
of the window there are two panes listing the modified files; the
middle 1/3 shows the diff against HEAD; the bottom 1/3 is used to
edit the commit message.

Clicking on a file icon in the top 1/3 area will update the index
via an update-index call, thereby scheduling the file for commit.
Right now however you can't undo the update (on the TODO list).  :-)

Clicking on a file name will show the diff against HEAD, or a 3 way
diff against HEAD, index and working directory, or just the file's
contents (depending on state of the file).


Major improvements over Paul's original gitool are:

 * Amend the last commit.

 * Merge commits (no merge resolution assitance however).

 * Automatic loading of MERGE_MSG and SQUASH_MSG buffers.

 * Fetch and push available from with the GUI.

 * Start gitk on the current branch.

 * Some useful keyboard bindings (though probably could use more).

 * Proper menus and menubar.

 * Provides status feedback to the user.

 * Prevents the user from doing parallel operations that might
   also affect the current operation (well at least from within
   git-gui anyway).

 * Default geometry works properly on Windows.

 * Stays running if invoked as git-gui; exits immediately after
   commit if invoked as git-citool.

 * Tested on Cygwin/Windows 2000 and Mac OS X.

 * Never crashes with Tcl/Tk errors.

Ok so that last one might be reaching. :-) While trying to improve
gitool I noticed that gitool kept throwing Tcl/Tk errors at various
times.  I had a hard time tracking down most of them.  (This is
one of the reasons I just rewrote it.)  I have yet to break git-gui.

I have posted a repository with the source on pasky's service:

	http://repo.or.cz/w/git-gui.git


My goal is to have enough operations available through git-gui that
the average user won't need to leave it, unless he/she needs to do a
cherry-pick, am, etc. type of operation.  Or they want to browse the
history, in which case they can just start gitk from within git-gui.
I'm hoping to have most of it done this week.  :-)

Suggestions for improvement (or patches!) are most welcome.
Better naming suggestions are also welcome.  :)

-- 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help