git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paul Mackerras <paulus@samba.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: David Kastrup <dak@gnu.org>, Git Mailing List <git@vger.kernel.org>
Subject: Re: Can I have this, pretty please?
Date: Mon, 13 Aug 2007 10:22:48 +1000	[thread overview]
Message-ID: <18111.42072.605823.932110@cargo.ozlabs.ibm.com> (raw)
In-Reply-To: <alpine.LFD.0.999.0708121246020.30176@woody.linux-foundation.org>

Linus Torvalds writes:

> Well, gitk has certainly had performance problems in the past, they've 
> been fixable. I think this should just be fixed too. And if the rev-list 
> is fast enough, then the gitk fix may well be to just not compute the 
> *whole* history - ie the solution may be as simple as stopping the 
> background job that does all the graph calculations when it is (pick a 
> point at random) something like a thousand commits into the graph, and the 
> user hasn't scrolled down..

I have made a "dev" branch in the gitk.git repository that has some
tweaks to the graph layout algorithm which change the appearance a
bit; specifically it doesn't continue the graph lines downwards until
it has to terminate them with an arrow because the graph is getting
too wide.  Instead, it always terminates them if they are going to be
longer than a certain length (about 100 rows).  Also I made some
changes to reduce the incidence of two lines having a corner at the
same point, for visual clarity.

The point of terminating the graph lines early is that it means gitk
won't have to lay out the whole graph, just the visible bits and a
limited number of rows around that.  So I'm interested to know if
people think it looks OK visually.  (I think it's actually better,
myself.)

The other thing that takes time is reading in the topology for the
previous/next tag computations.  I did a patch that wrote out the
topology to a cache file but I ran into some problems where the cache
includes commits that have gone away since the cache was created.
What I need to do to update the cached information is basically the
equivalent of

	git rev-list --all ^root1 ^root2 ...

where root1, root2, etc. are the commits in the cache that had no
children (and of which all the other commits in the cache are
descendents).  However, git rev-list will barf if those commits no
longer exist.  Currently the only solution I can see is to validate
them one by one with separate invocations of git rev-list or something
(git rev-parse won't do).

Would it be possible to make git rev-list ignore commits that don't
exist if they have a "^" in front of them, i.e. where we're asking for
them to be excluded anyway?  If we can do that (or something
equivalent) then I can make the cache work reliably.  It does speed up
gitk enormously, and the cache file is only about 3MB for the kernel
tree, so it seems well worth while.

Paul.

  parent reply	other threads:[~2007-08-13  0:23 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-12 13:23 Can I have this, pretty please? David Kastrup
2007-08-12 14:21 ` Steven Grimm
2007-08-12 16:40   ` David Kastrup
2007-08-12 18:38 ` Linus Torvalds
2007-08-12 18:48   ` Linus Torvalds
2007-08-12 19:28     ` Jon Smirl
2007-08-12 19:45       ` Linus Torvalds
2007-08-12 19:48       ` David Kastrup
2007-08-12 19:29     ` David Kastrup
2007-08-12 19:51       ` Uwe Kleine-König
2007-08-12 20:04         ` David Kastrup
2007-08-12 20:21           ` Linus Torvalds
2007-08-12 19:53       ` Linus Torvalds
2007-08-12 20:10         ` David Kastrup
2007-08-13  0:22         ` Paul Mackerras [this message]
2007-08-13  5:49           ` David Kastrup
2007-08-12 19:10   ` David Kastrup
2007-08-12 19:24     ` Linus Torvalds
2007-08-12 19:46       ` David Kastrup
2007-08-12 19:59         ` Linus Torvalds
2007-08-12 20:30           ` David Kastrup
2007-08-12 20:58           ` Govind Salinas
2007-08-12 21:35             ` David Kastrup
2007-08-12 22:17               ` Martin Langhoff
2007-08-12 22:54                 ` David Kastrup
2007-08-12 20:02     ` Jeff King
2007-08-12 20:09       ` Jeff King
2007-08-12 21:51       ` David Kastrup
2007-08-12 23:10         ` Jeff King

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=18111.42072.605823.932110@cargo.ozlabs.ibm.com \
    --to=paulus@samba.org \
    --cc=dak@gnu.org \
    --cc=git@vger.kernel.org \
    --cc=torvalds@linux-foundation.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;
as well as URLs for NNTP newsgroup(s).