Git development
 help / color / mirror / Atom feed
From: "Marco Costalba" <mcostalba@gmail.com>
To: "Shawn O. Pearce" <spearce@spearce.org>
Cc: "Git Mailing List" <git@vger.kernel.org>
Subject: Re: qgit: Annotate hundreds of files at terrific speed ;-)
Date: Mon, 25 Jun 2007 07:59:07 +0200	[thread overview]
Message-ID: <e5bfff550706242259s143fe874mf82736426e94ecba@mail.gmail.com> (raw)
In-Reply-To: <20070624230851.GN17393@spearce.org>

On 6/25/07, Shawn O. Pearce <spearce@spearce.org> wrote:
> Marco Costalba <mcostalba@gmail.com> wrote:
> > You get _all_ the hundreds (more then 800) of revisions of this
> > monster history annotated in the time it takes *other* ;-) tools to
>
> By "other tools" do you mean git-blame?  ;-)
>

git-blame has some powerful features, like the possibility to follow
renames, and is fast enough for what it has to do, ie annotate _one_
file.

But missing to annotate all the file's history has its drawbacks for
using in a GUI tool, some clear, other not so clear:

- browsing among file revisions it's slow because after each user
'click' another annotation cycle should start from scratch (clear
issue).

- jumping from one file revision to another keeping the same mouse
selection or view (current line at the top of the view) is not
possible in general case without parsing all the annotations between
the two revisions.

- filtering, ie selecting with the mouse some lines and getting a
subset of the file history that modified at least one of that lines is
not possible.


So when 'git log --follow' patch will be mainstream I think current
qgit 'git log'  based annotation will be superior to a git-blame based
interface under any point.

Regarding speed IMHO it is already faster, ie it takes already the
same or _less_ time to qgit to annotate all the 800 and more file's
revisions of git Makefile then to git-blame/git-gui to annotate _one_
of them.

Note that this is not a problem of implementation, but of algorithm.
Simply, the best algorithm to annotate one file is different from the
best one to annotate all of them. Another thing I've experienced is
that on old files in big repos (kernel/sched.c) the time to get the
file history its much bigger then time to annotate them.


Sure, in git-blame annotation it's incremental, you don't have to wait
the end of history loading to start to show stuff. I've used it, but,
probably a my limit, I really don't start to analyze what I have until
git-blame has finished.

So *for me*, the incremental blaming it's more or less a kind of fancy
progress bar, when you really care to search some blaming info.


Regarding the CVS oriented annotation of qgit it's simply a problem
that I have no space to show the commit when the user selects a line.
In git-gui the half bottom screen space is dedicated to that, in qgit
the half top space is instead reserved for file history. Anyhow in
qgit you can double click on any annotation line and the history will
jump to the corresponding revision, from there (right click->popup
menu) you can sync the other tabs so to see full commit and patch.

I'm thinking on a way to add a quick view of commit log message when
the user clicks/selects/something-else on a line (in qgit memory there
is already all the needed info, remember, annotation it's git-log
based), but the screen space it's an issue.


Marco

  reply	other threads:[~2007-06-25  5:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-23 16:35 qgit: Annotate hundreds of files at terrific speed ;-) Marco Costalba
2007-06-24 23:08 ` Shawn O. Pearce
2007-06-25  5:59   ` Marco Costalba [this message]
2007-06-25  6:35     ` Nanako Shiraishi
     [not found]     ` <200706250638.l5P6crkS026564@mi1.bluebottle.com>
2007-06-25 11:20       ` Marco Costalba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e5bfff550706242259s143fe874mf82736426e94ecba@mail.gmail.com \
    --to=mcostalba@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=spearce@spearce.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox