Fwd: [RFC] Common library for Git GUIs
From: Marco Costalba <hidden>
Date: 2016-06-15 22:46:13
On Mon, Feb 16, 2009 at 22:24, Jan Hudec [off-list ref] wrote:
Hello Folks,
Hi Jan, nice to hear you again.
Looking at the current situation with Git GUIs, I thought it might be useful to create a generic library that would make it easier to develop git guis (especially plugins to various tools) and to add a new features to many of them with less effort. What do you people think about such idea?
I fail to see the reason to do it given that git GUIs are already quite mature and stable tools, feature addition at this stage is only very limited and for only small things. Big features are already in from a long time, as example (I speak about QGit but the same applies to the others):
- Tree of all files in the work area with their status
Seeing status (unchanged/modified/staged/new/...) of individual files
in Visual Studio is the most wanted features of my colleagues at $work.
The feature is applicable for Windows shell extension (Tortoise Git),
similar KDE and Gnome extensions and all IDE bindings.Already in. Modified files are bolded. What qgit misses is new files (but this could be easily added if needed because alre already known to qgit) and staged files (but I dont understund the useful of this info).
- Tree of files in given revision
For browsing other revisions than the checked out one.Already in.
- History *tree*
Starting gitk as separate process is suboptimal, because versions from
the tree can't be easily selected for operations (checkout, merge, ...).Already in.
- Blob data
For looking at other revisions than the checked out one.Already in.
- Commit properties
For showing details of revisions in the history view.Already in.
- Diffs
Obviously...Already in. Obviously :-)
- Annotations
Again, should be integrated with the rest of gui, so selecting line in
annotation can open the revision in diff view, select it in history
etc.Already in.
- Configuration
Many tools (eg. gui designers) feature a tree view of all properties of
some object (property grid) with editable values and short
descriptions. It's not as nice gui designed for individual options, but
can provide good-enough easy-to-write way to set all valid options from
the gui.To what should this feature apply? Some examples please?
- Menu and action definitions for the common operations
Already in. Plus customizable actions/macros.
So what do you people think would be best? I see several options: - QtCore Qt seems to be the most popular library among Git GUI writers and since version 4.5 will be LGPL, so it will be allowed to link with anything. It is also probably the most portable one. On the downside, it's rather large and it's language bindings are a bit worse (the garbage collector integration was a bit bad last time I looked).
I never felt the need for a garbage collector at all. I strongly prefer to spend time to manually fix the (very few) memory leaks that slept in. Qt class model already does object housekeeping for you at deterministic and well known times (when parent object is deleted so are all corresponding children). Thanks Marco