You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Kylo Ginsberg <ky...@gmail.com> on 2007/03/23 04:18:21 UTC

Revision graph functionality?

We've just converted a cvs repository to svn, and the resultant
repository is 5 GB with about 79k revs.  A number of cvs users were
accustomed to using TortoiseCVS to view revision graphs of salient
files.  Of course, this is dead easy and lightning fast with cvs since
every file's genealogy is represented in a single file in the
repository.  TortoiseSVN will produce revision graphs, but since that
requires parsing the log history for the entire repository, it is
impractically slow to put it mildly.

Although I reference the Tortoise guis as examples, my real questions
are wrt subversion proper:
* Are changes that could enable rapid construction of revision graphs
on the svn future feature list?  I imagine this would be quite an
undertaking, but it can't hurt to ask.
* Are there 3rd party scripts that will cook up revision graphs, or
perhaps, a database which could be queried dynamically to make
revision graphs? I'm imagining a tool that could be run nightly to
build the database indices.
* We're on fsfs now, but would the performance be dramatically
different with bdb?

Thanks for any comments,
Kylo

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Revision graph functionality?

Posted by Kylo Ginsberg <ky...@gmail.com>.
On 3/22/07, Ryan Schmidt <su...@ryandesign.com> wrote:
> On Mar 22, 2007, at 23:18, Kylo Ginsberg wrote:
>
> > We've just converted a cvs repository to svn, and the resultant
> > repository is 5 GB with about 79k revs.  A number of cvs users were
> > accustomed to using TortoiseCVS to view revision graphs of salient
> > files.  Of course, this is dead easy and lightning fast with cvs since
> > every file's genealogy is represented in a single file in the
> > repository.  TortoiseSVN will produce revision graphs, but since that
> > requires parsing the log history for the entire repository, it is
> > impractically slow to put it mildly.
> >
> > Although I reference the Tortoise guis as examples, my real questions
> > are wrt subversion proper:
> > * Are changes that could enable rapid construction of revision graphs
> > on the svn future feature list?  I imagine this would be quite an
> > undertaking, but it can't hurt to ask.
> > * Are there 3rd party scripts that will cook up revision graphs, or
> > perhaps, a database which could be queried dynamically to make
> > revision graphs? I'm imagining a tool that could be run nightly to
> > build the database indices.
> > * We're on fsfs now, but would the performance be dramatically
> > different with bdb?
>
> I don't know if any of the existing tools do this, but it sounds to
> me like it should be possible for a post-commit hook to record
> relevant information about the commit in a database, and for a
> revision graph maker to query that database more quickly than
> querying the repository directly.
>
> I don't have experience with revision graphs... what does one look
> like? Can you send me a sample?
>

Hi Ryan

Here's a sample revision graph from the Tortoise site.  It's actually
kind of a weak example, since it doesn't show a heavily branched node
but it gives you an idea:

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-revgraph.html

It looks like the tortoise graph only follows copies/branches, but
with svn (perhaps post merge-tracking?) it could potentially follow
merges as well.  Powerful visualization aid.

And yes, a post-commit hook could commit add entries to a database
queriable by a visualization tool.  That would be slick.

Kylo

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Revision graph functionality?

Posted by Rajko Albrecht <ra...@alwins-world.de>.
Quoting Kylo Ginsberg <ky...@gmail.com>:


>> So, what would help: a log-call where only log entries belonging to an item
>> existing at a specific revision would send.
>
> Can you elaborate?  Do you mean an svn log command which would show
> not just ancestry, but descent and "cousins" for a given file?  That
> is quite literally what one wants, but I'm not sure if that's what you
> mean or something else?

I want: svn history -p <rev> <item>

and I get log where <item> and revision <rev> belongs to. eg. copies,  
moving, modifications, deletions. Nothing else. Eg., not a range of  
revision like in "svn log" now but a range of associated items.


>> TortoiseSvn and kdesvn must get
>> the whole log, parsing it twice (from newest to oldest and back) to detect
>> copies/moves and so on.
>
> Why parsing it twice?  Once, newest to oldest to find the root parent,
> then back from the root to find all descendents?

Yes.
Newest to oldest for find the root (at this stage kdesvn modifies the  
origin log-entries that way, that in a specific entry is set where the  
item in next revision is copied to. how tortoise does it i don't know  
exactly but should be same), assigning the copies to the logentries of  
the copy-from-revision is 	necessary 'cause otherwise it isn't able to  
detect the branches.

example: /trunk/a at rev 1 is copied to /branches/dev/a on rev 20
so log for rev 20 has copied from "/trunk/a" at rev 1.
Now both clients enhance the logentry for rev 1 internal so: "copy-to  
/branches/dev/a in rev 20". you'll understand that this is only  
possible when going from newest to oldest log, eg, to addition of  
item. eg, newest to oldest must first stage.

oldest to newest is the converting/painting stuff itself (kdesvn  
produces a dot-file, tortoise paints direct)
A lot details more but them are real offtopic here I think. but the  
cost for such revision tree isn't the smalles one.


>
>> When only getting a specific subset of log....
>
> Does this sentence end: "it would be much faster"?  Of have I missed
> your point?
Yes... much faster, less memory usage, less cpu glowing. Sorry.

I'm not sure if this is possible, if this makes sense for subversion  
itself or ever should be a client side problem nor if this makes  
sense. 'Cause - traffic is the one, the server load the other side.  
And I think on a public repository like kde such a feature will kill  
the server if a lot clients tries to fetch such a history. Or  
subversion tracks this copy-to in a second database on serverside so  
the history must not parsed.


so. just my long thougts. hope, i could make a bit clear whats the  
problem behind such history feature.

but of course, if I think complete wrong, tell me ;)

Rajko


Re: Revision graph functionality?

Posted by Kylo Ginsberg <ky...@gmail.com>.
On 3/23/07, Rajko Albrecht <ra...@alwins-world.de> wrote:
> Am Freitag, 23. März 2007 schrieb Ryan Schmidt:
> > I don't know if any of the existing tools do this, but it sounds to
> > me like it should be possible for a post-commit hook to record
> > relevant information about the commit in a database, and for a
> > revision graph maker to query that database more quickly than
> > querying the repository directly.
> >
> > I don't have experience with revision graphs... what does one look
> > like? Can you send me a sample?
>
>
> http://www.alwins-world.de/wiki/programs/kdesvn/ScreenShots, the last image is
> such an example, too.
>
> The problem behind is: you must fetch it. With my tests with kdesvn it shows,
> the most time costs the fetch. Parsing that bunch of revisions isn't a
> problem. I'd somettimes tried for testing generating a graph of a item in dke
> repository with at this time more then 500k entries, this is impossible. You
> have wait hours getting all logs.

Yes, this was my understanding -- the log retrieval time is where most
of the time is spent.

> So, what would help: a log-call where only log entries belonging to an item
> existing at a specific revision would send.

Can you elaborate?  Do you mean an svn log command which would show
not just ancestry, but descent and "cousins" for a given file?  That
is quite literally what one wants, but I'm not sure if that's what you
mean or something else?

>TortoiseSvn and kdesvn must get
> the whole log, parsing it twice (from newest to oldest and back) to detect
> copies/moves and so on.

Why parsing it twice?  Once, newest to oldest to find the root parent,
then back from the root to find all descendents?

> When only getting a specific subset of log....

Does this sentence end: "it would be much faster"?  Of have I missed your point?

> Hooks into a database isn't real usable for both clients, 'cause them have to

Agreed, not a solution that would support multiple clients (unless it
exposed its own api, but this could be prohibitively elaborate).

Thanks,
Kylo

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org


Re: Revision graph functionality?

Posted by Rajko Albrecht <ra...@alwins-world.de>.
Am Freitag, 23. März 2007 schrieb Ryan Schmidt:
> I don't know if any of the existing tools do this, but it sounds to
> me like it should be possible for a post-commit hook to record
> relevant information about the commit in a database, and for a
> revision graph maker to query that database more quickly than
> querying the repository directly.
>
> I don't have experience with revision graphs... what does one look
> like? Can you send me a sample?


http://www.alwins-world.de/wiki/programs/kdesvn/ScreenShots, the last image is 
such an example, too.

The problem behind is: you must fetch it. With my tests with kdesvn it shows, 
the most time costs the fetch. Parsing that bunch of revisions isn't a 
problem. I'd somettimes tried for testing generating a graph of a item in dke 
repository with at this time more then 500k entries, this is impossible. You 
have wait hours getting all logs.

So, what would help: a log-call where only log entries belonging to an item 
existing at a specific revision would send. TortoiseSvn and kdesvn must get 
the whole log, parsing it twice (from newest to oldest and back) to detect 
copies/moves and so on. When only getting a specific subset of log....

Hooks into a database isn't real usable for both clients, 'cause them have to 
know about. (but for the users, of course, it is, thats why the answer to 
this post and not to the answer of Kylo)

Hope, its now a little bit clear whats the problem behind, but I think its 
a "nice to have" not a "must be".

bye

Rajko

Re: Revision graph functionality?

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Mar 22, 2007, at 23:18, Kylo Ginsberg wrote:

> We've just converted a cvs repository to svn, and the resultant
> repository is 5 GB with about 79k revs.  A number of cvs users were
> accustomed to using TortoiseCVS to view revision graphs of salient
> files.  Of course, this is dead easy and lightning fast with cvs since
> every file's genealogy is represented in a single file in the
> repository.  TortoiseSVN will produce revision graphs, but since that
> requires parsing the log history for the entire repository, it is
> impractically slow to put it mildly.
>
> Although I reference the Tortoise guis as examples, my real questions
> are wrt subversion proper:
> * Are changes that could enable rapid construction of revision graphs
> on the svn future feature list?  I imagine this would be quite an
> undertaking, but it can't hurt to ask.
> * Are there 3rd party scripts that will cook up revision graphs, or
> perhaps, a database which could be queried dynamically to make
> revision graphs? I'm imagining a tool that could be run nightly to
> build the database indices.
> * We're on fsfs now, but would the performance be dramatically
> different with bdb?

I don't know if any of the existing tools do this, but it sounds to  
me like it should be possible for a post-commit hook to record  
relevant information about the commit in a database, and for a  
revision graph maker to query that database more quickly than  
querying the repository directly.

I don't have experience with revision graphs... what does one look  
like? Can you send me a sample?


-- 

To reply to the mailing list, please use your mailer's Reply To All  
function


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org