git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Shawn Pearce <spearce@spearce.org>
Date
Nov 7, 2006, 08:36 UTC
Message-ID
<20061107083603.GB9622@spearce.org>

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. :)

Next: Jakub Narebski
Message 1 of 6 in “[RFC] git-gui: A commit / fetch / push interface”
  1. Shawn PearceNov 7, 2006
  2. Jakub NarebskiNov 7, 2006
  3. Paul MackerrasNov 7, 2006
  4. Liu YubaoNov 8, 2006
  5. Shawn PearceNov 8, 2006
  6. Shawn PearceNov 8, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.