gitg – git repository browser

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

gitg showing the linux repository

gitg commit view

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 entry was posted in gitg. Bookmark the permalink.

35 Responses to gitg – git repository browser

  1. tbscope says:

    This looks very nice.
    I will certainly use it, thanks.

  2. Dennis says:

    Rock on. Ugly gitk gone :)

  3. Vitaly Babiy says:

    Awesome job, I use gitg all the time.

  4. It looks nice from the screenshots :)
    Any plan to release some packages for various distro?
    A .deb would be great :P

    • Jesse van den Kieboom says:

      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.

  5. waldo says:

    How does this relate to giggle?

    • Jesse van den Kieboom says:

      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.

  6. Scott Tsai says:

    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.

    • Jesse van den Kieboom says:

      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.

  7. Leon says:

    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!

  8. tosh says:

    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

  9. Matthias Clasen says:

    Jesse, gitg is packaged in Fedora as well.

  10. 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.

    • Jesse van den Kieboom says:

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

  11. twilightomni says:

    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.

  12. Bjørn Lie says:

    Packages for openSUSE at the obs. NB, not packaged by me

    http://software.opensuse.org/search?p=1&baseproject=ALL&q=gitg

  13. 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.

  14. khiraly says:

    I use it all the time, just thought the project was dead. I didnt know there went into so much development…

    Thank you.

    Khiraly

  15. Guyou says:

    @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.

  16. Liam says:

    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

  17. waby38 says:

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

  18. jc00ke says:

    I’m not even able to ./configure on Ubuntu 9.10 :-( http://j.mp/d14ucE (my gist)

  19. Linux Noob says:

    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.

    • Jesse van den Kieboom says:

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

  20. Pingback: Flow » Blog Archive » Daily Digest for February 23rd - The zeitgeist daily

  21. Markus says:

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

  22. Peter says:

    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

  23. jc00ke says:

    Here’s a working install script for gitg on Ubuntu 9.10 if anyone is interested: http://j.mp/cYI9kT

  24. Pingback: Destillat #10 | duetsch.info - Open Source, Wet-, Web-, Software

  25. Pingback: Flow » Blog Archive » Daily Digest for February 26th - The zeitgeist daily

  26. Pingback: links for 2010-03-13 « Mandarine

  27. Daver says:

    Very very nice GUI! :D Good work!

Leave a Reply

Your email address will not be published. Required fields are marked *