With the latest release (0.0.6) just out the door I think it’s about time to write a little post about one of my pet projects, gitg. I guess most people will think ‘argh, not yet another git GUI’, but hear me out :)
I was trying to understand git, but found the initial transition (as many other people) a bit hard. So, I thought what better way to learn, then to write a gui client. Born was gitg 0.0.1. The purpose of the project was to provide a GitX like application, targeted at GNOME. It had to be fast, nice looking and generally useful (as you can see in the left screenshot, it loaded the linux repository of 20.000+ commits in under a second).
The latest version which has just been released has quite some features already, including:
- Show repository history using ‘git log’ syntax
- Commit mode featuring per-hunk staging
- Basic fetch/push/merge/rebase functionality
- Cherry-pick
- Drag and drop rebase/merge
- Drag and drop format-patch export
- View and export repository file tree at any revision
- Tag support
- Stash support
- Basic remotes management
In any case, if you want to give it a spin, it’s a vailable in the latest debian and ubuntu (I don’t know about other distributions), but the version is a bit outdated. For the latest and greatest:
Download: | ftp://ftp.gnome.org/pub/GNOME/sources/gitg/0.0/gitg-0.0.6.tar.bz2 |
File a bug: | https://bugzilla.gnome.org/browse.cgi?product=gitg |
Get it from git: | git://git.gnome.org/gitg |
This looks very nice.
I will certainly use it, thanks.
Rock on. Ugly gitk gone :)
Awesome job, I use gitg all the time.
It looks nice from the screenshots :)
Any plan to release some packages for various distro?
A .deb would be great :P
As in the post, people are packaging it for debian and ubuntu, but I’m not doing that myself. They should appear soon enough for the latest release.
I have a deb file for lucid if you want it: http://people.ubuntu-nl.org/~dennis/gitg_0.0.6-0~seveas1_i386.deb
How does this relate to giggle?
giggle is a competing git client. It was not very developed when I started gitg and there are some differences of opinions. I’m not sure what the current status of giggle is exactly.
I only figured out how to push (right click on branch label) after reading the source code. Maybe add top level “Remote” menu ala “git gui”?
I think gitx still don’t support any remote operations.
Hmm, you’re right that the context menu for the refs is not very discoverable. Note that you can also push a local branch by dragging the ref onto a remote ref.
I use gitg for things I do on my desktop in a gui environment and have always found it to be an great application. With this new release (push, pull, merge, stash…), gitg pulls ahead of gitx, which I also use from time to time on the Mac.
I think providing a good gui to git helps adoption by computer-savy people that don’t know about git or any other vcs. I have recently observed a development like this on a friend. gitx really helped him get started using a vcs – today, a few months later, he uses the cli from time to time, although I think gitx is still his primary interface to git.
Thank you for writing this great application on continuing to make it better!
i would love a git gui which features “word diffs”.
i use them (currently gitg, it is really great thanks) almost only for doing code reviews and it is very frustrating to stare at 2 lines of code or documentation which look almost exactly the same, trying to figure out what changed (e.g. a version number or a fixed typo or similar stuff).
it would really be great if gitg could do word diffs too. as example look at the commandline “git diff –color-words”. iirc github also features word diffs.
cheers
Jesse, gitg is packaged in Fedora as well.
Cool, I also forgot gentoo for which I knew it was available.
Hello Jesse,
Sorry for being a jerk, but I think this UI isn’t HIGged enough. In fact, it is too KDEish in its visual complexity. Maybe dates don’t need to be so long? (Are you really care about the seconds if a check-in was made last year?) Maybe not everyone need SHAs to be seen on the screen all the time? Also statusbar doesn’t look very useful now (dozen of pixels might be saved).
But, of course, lot of things are great. And Context slider is very cool. Thank you.
I agree that the UI could use some love (I would not go as far as calling it KDEish though :)). There are some ideas floating around for revising the detailed view of a commit and I agree that the date representation can be improved too. I’m more than happy to receive patches of course :)
The UI, while not what I’d call beautiful, is in fact pretty good compared to other GNOME programs and nearly concept-equivalent to the OS X version.
As for the dates, I wouldn’t be too harsh. Nautilus provides dates that are just as verbose.
I think the UI has a good basic design. I do wish that the ability to toggle modes between History/Commit, and the basic drop-down/toolbar filters were unified in a single toolbar like OS X though. But this is an ancillary complaint and does not detract from the usability, only the beauty.
I’d wonder if you could change the text-size in the History grid-view – a smaller size (say, one less than default) would be nice for fitting in more data. The monotony of one text-size throughout a data-rich GTK program is starting to get to me.
Packages for openSUSE at the obs. NB, not packaged by me
http://software.opensuse.org/search?p=1&baseproject=ALL&q=gitg
Just want to say thank you.
Gitg is my preferred view to get an overview of the repo.
Good stuff. I hope ubuntu will package the latest ASAP.
I use it all the time, just thought the project was dead. I didnt know there went into so much development…
Thank you.
Khiraly
@jesse giggle still alive, but regularly changing its maintainer.
Imho giggle and gitg are two interesting competitors as they experiment different visions of what a Git browser can be.
I use gitg in debian squeeze, it looks much nicer than gitk there.
One thing I would like to see is tabs for selection of different repositories. Having the selection in a pull-down menu is nicer than gitk (in which you need to open new instance for each repository) but tabs would be even nicer.
Liam
Really good job!
I like your “gitg” because it’s really FAST (even on big clone of kernel tree) and have a nice look.
Can wait for your next release :)
I’m not even able to ./configure on Ubuntu 9.10 :-( http://j.mp/d14ucE (my gist)
How do i install this? I have a fresh install of Ubuntu 9.10 and running ./configure gives me all kinds of package missing errors.
The current version in 9.10 is 0.0.3 as far as I know, you could just install that one. For compiling it yourself you will need the required development files for the dependencies of gitg. Try using:
sudo apt-get build-dep gitg
That should install most of the build dependencies (not sure if there is any dependency difference between 0.0.3 and 0.0.6 from the top of my head).
Pingback: Flow » Blog Archive » Daily Digest for February 23rd - The zeitgeist daily
Hi,
thanks for this great tool and the good work, Jesse!
For Ubuntu:
The package sources in git (for Ubuntu Lucid) are already updated, so you could get it from git://git.jonnylamb.com/git/packaging/gitg.git and build an .deb for your system.
I did it for mine and it worked quite well. If you want, you can get it from http://mynethome.de/content/gitg_0.0.6-1_i386.deb
Have fun :)
This tool brings in a few interesting ideas into git user interface land.
What i personally like:
*Trailing whitspace is highligted in red.
*Commit and histoy in 1 tool, switching by a tab (i always wanted something like that!)
*Context: slider for fast changing of visible context(at the price of not being able to have context>9)
*Stash viewer (i always wanted something like that!)
*Dual line numbers on patches (Is interesting and something new i have never seen before)
Some ideas for future improvements:
*Stage 1/multiple lines (select several lines, rightclick, select “stage selected lines” or rightclick on 1 line, select “stage this line”)
*Ignore whitespace option next to Context slider
*Add remote management as another tab for fetch/push/configure remotes (also display fetch history (currently i get no info on fetch in the repo properties dialog))
*Staging a hunk is not easily discoverable (show a popup menu when right clicking anywhere in a hunk)
*Reflog view (no other git viewer has something like this)
*Integrate blaming
*Make it work like a combined gitk and git-gui, only less ugly and in a “sane” language :-)
Other stuff:
*Display right margin at displays a vertical line, but the Commit message field uses a proportional font on my system?
*Staged and Unstaged list are quite far from each other on a 24″ Monitor (maybe add a option to have Unstaged|Staged|Commitmsg)
*When no file is selected the Changes view looks a bit strange, maybe do something like git-gui and auto select a file (on startup, after staging the one before)
I get a segfault when i select “All branches” or “Local branches” on my wine repository with a few branches (also used stg in the past on the repo)
Program received signal SIGSEGV, Segmentation fault.
0x0806f0d7 in collapse_lane (lanes=0x8290950, container=0x835a080, index=-128 ‘\200’) at gitg-lanes.c:373
373 GitgLane *lane = (GitgLane *)collapsed->data;
(gdb) info locals
collapsed = 0x0
lane = 0x84bd340
newindex = -128 ‘\200’
mylane = 0
revision = 0x8328708
lns = 0x83c8200
item = 0x8491cd8
(gdb) print index
$1 = -128 ‘\200’
(gdb)
index is negative?
maybe it tries to open too many lines or something like that.
i remember gitk displaying a huge numer of lines for this repo
Maybe you could file some bug reports with those requests (some already exist). Same for the bug, please file a report so that it doesn’t get lost. gitg bugs are hosted on http://bugzilla.gnome.org
Here’s a working install script for gitg on Ubuntu 9.10 if anyone is interested: http://j.mp/cYI9kT
Pingback: Destillat #10 | duetsch.info - Open Source, Wet-, Web-, Software
Pingback: Flow » Blog Archive » Daily Digest for February 26th - The zeitgeist daily
Pingback: links for 2010-03-13 « Mandarine
Very very nice GUI! :D Good work!