Thread (1 message) 1 message, 1 author, 2016-06-15

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help