threads / rfc / 43133

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

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

## tl;dr

6 messages between Nov 7, 2006 and Nov 8, 2006.

replies: 5people: 4as markdown or json

Shawn Pearce· Nov 7, 2006, 08:36 UTC · lore

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

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

Jakub Narebski· Nov 7, 2006, 08:58 UTC · re: Shawn Pearce · lore
Shawn Pearce wrote:
> 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 have posted a repository with the source on pasky's service:
> 
>       http://repo.or.cz/w/git-gui.git
[...]
> Suggestions for improvement (or patches!) are most welcome.
> Better naming suggestions are also welcome.  :)

I have added it to http://git.or.cz/gitwiki/InterfacesFrontendsAndTools By the way, do you know if (h)gct is actively developed against git?

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Paul Mackerras· Nov 7, 2006, 22:46 UTC · re: Shawn Pearce · lore
Shawn Pearce writes:
> 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.
Cool!
> I have posted a repository with the source on pasky's service:
> 
> 	http://repo.or.cz/w/git-gui.git

Shouldn't the "w" be "r" there? It gave me an error "Can't lock ref" with the "w".

Show 5 quoted lines
> 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.  :-)

One thing I have been meaning to do is to integrate gitool into gitk, now that gitk can display a fake commit showing the local changes. I intend to add a menu item to gitk saying "Commit local changes" or something, which would invoke gitool, or maybe now git-gui instead. :) The nice thing is that then gitk could update the graph to show the new commit once it was created.

My current version of gitool also has menus that let you revert modified files, and delete or ignore untracked files. Have you considered adding that to git-gui?

Regards,
Liu Yubao· Nov 8, 2006, 05:46 UTC · re: Paul Mackerras · lore
Paul Mackerras wrote:
Show 16 quoted lines
> Shawn Pearce writes:
> 
>> 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.
> 
> Cool!
> 
>> I have posted a repository with the source on pasky's service:
>>
>> 	http://repo.or.cz/w/git-gui.git
> 
> Shouldn't the "w" be "r" there?  It gave me an error "Can't lock ref"
> with the "w".
> 

This it a gitweb URL, not a repos URL for 'git clone', you can only view it in web browser.

Shawn Pearce· Nov 8, 2006, 05:55 UTC · re: Liu Yubao · lore
Liu Yubao <yubao.liu@gmail.com> wrote:
Show 19 quoted lines
> Paul Mackerras wrote:
> >Shawn Pearce writes:
> >
> >>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.
> >
> >Cool!
> >
> >>I have posted a repository with the source on pasky's service:
> >>
> >>	http://repo.or.cz/w/git-gui.git
> >
> >Shouldn't the "w" be "r" there?  It gave me an error "Can't lock ref"
> >with the "w".
>
> This it a gitweb URL, not a repos URL for 'git clone', you can only view
> it in web browser.

Too bad pasky doesn't have the magic mapping setup in the webserver so they are one and the same. :-)

I linked to the gitweb rather than the repository as I figured people might want to read the history, or since it was just one blob download it right from the webpage rather than cloning the repository. But given that this is the git mailing list most people probably would have expected to clone it instead...

Shawn Pearce· Nov 8, 2006, 06:03 UTC · re: Paul Mackerras · lore
Paul Mackerras <paulus@samba.org> wrote:
Show 6 quoted lines
> One thing I have been meaning to do is to integrate gitool into gitk,
> now that gitk can display a fake commit showing the local changes.  I
> intend to add a menu item to gitk saying "Commit local changes" or
> something, which would invoke gitool, or maybe now git-gui instead. :)
> The nice thing is that then gitk could update the graph to show the
> new commit once it was created.
Right.  :-)

I have absolutely no plans (or desire) to attempt to do graph rendering in git-gui. The most I may do for showing history in it is perhaps a "git log --max-count=5 --pretty=oneline" type of display so the user can see more than just an empty window after a commit.

IMHO gitk does a very nice job of rendering the graph on a wide range of platforms (although it still has two annoying bugs: one on Windows and one on Mac OS X that really make it hard to use). git-gui is just an attempt to bring the other major features of Git to that same set of platforms, with the same set of dependencies (wish 8) and ease of use...

It would be nice if we can eventually connect gitk and git-gui so they can coordinate as you are talking about above...

> My current version of gitool also has menus that let you revert
> modified files, and delete or ignore untracked files.  Have you
> considered adding that to git-gui?

Yes, they are in my TODO list (or if missing from there are certainly in my head as things to add). I'd like to get git-gui finished this week, which means getting those features in today or tomorrow. :-) I'll probably do branches first though.

← back to recent threads