Re: Can I have this, pretty please?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Sun, 12 Aug 2007, Linus Torvalds wrote:
> 
> A newsreader is mis-designed for all the same reasons SVN is misdesigned: 
> it sees the messages (commits) as a _tree_.

Side note: the lack of this bug is what makes showing large histories 
graphically be expensive in the first place. 

In fact, in git, merges are "first-class" entities, and forking is 
something you have to infer from the history (by finding two commits with 
the same parent), and that's why calculating the graph is actually pretty 
expensive: when you do so, you have to keep all the commit relationships 
in memory, and you basically have to sort it topologically.

So even if you don't want to show the graph itself (and just add 
references to allow the user to walk to parents/children manually), you'd 
still have to calculate - and keep track of - the commit relationships. 
And I suspect that's what makes gitk and other visualizers take time.

I think one solution is to limit the size fo the visualization by date or 
number, ie if you want to see history, it's often useful to do things like

	gitk --since=10.weeks.ago

to see just the "recent" commits. That very fundamentally makes the 
problem much cheaper, because you simply have to generate the graph for a 
much smaller set of commits.

I used to think that we should just default to some reasonable value, but 
then we optimized the hell out of git-rev-list and Paul fixed a number of 
scalability issues in gitk too, so it kind of fell by the wayside because 
it wasn't as important any more. But if you have a huge project with lots 
of history, the right answer may well be to make gitk *default* to using 
something like "show only the last year unless some revision limiting has 
been done explicitly".

IOW, showing the whole history for a big project is simply pretty 
expensive. If you have a hundred thousand commits, just keeping track of 
the tree structure *is* going to take megabytes and megabytes of data. 
Limiting the size of the problem is usually a really good solution, 
especially since most people tend to care about what happened in the last 
few days, not what happened five months ago.

			Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux