[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Revisions being involved while comparing branches

From: Daniel Shahaf <d.s_at_daniel.shahaf.name>
Date: Wed, 22 Dec 2010 02:25:45 +0200

Pablo Beltran wrote on Tue, Dec 21, 2010 at 23:29:23 +0100:
> Maybe the point is efficiency.
>

OK.

> the *svn log -v* output for a revision range could be represented by a
> matrix with the revision numbers as rows and the changed paths as columns.
>
> So, for each revision is easy inquire the revised paths. That is simple
> because all the results are retrieved from one execution.
>
> But, how does efficiently transpose the matrix? -> paths as rows and
> revisions as columns? and do it for the same set of values?
>

In other words, how does one compute for a set of paths which revisions
touched each of the paths?

> For example, when two *tags* are compared with TortoiseSVN the result is a
> list of revised paths. But revisions are missing from that view. That is
> because TortoiseSVN dispalys the *svn diff -summarize* results. So, how to
> display also the involved revisions for each path? The *svn info* displays
> only the last revision and not all involved so you should execute the *svn
> log* command for each revised path. And that is not efficient.
>

You could use the #2 syntax of 'svn log':

% $svn h log | head
log: Show the log messages for a set of revision(s) and/or path(s).
usage: 1. log [PATH][@REV]
       2. log URL[@REV] [PATH...]

I'm not sure offhand at what layer the looping on paths is implemented,
though; but I hope it's done server-side.

> The goal is adding the involved revisions on the compare directories view of
> TortoiseSVN and do it in the most efficient way.
>

Solving the problem for the most general case of comparing any two
directories is a hard problem.

>

HTH,

Daniel

> On Tue, Dec 21, 2010 at 12:21 PM, Daniel Shahaf <d.s_at_daniel.shahaf.name>wrote:
>
> > 'svn info' on the 1.6.15 file will tell you that. (thanks cheap copies)
> >
> > 'dig the logs' is "lookup the copyfrom revisions of the tags, and run
> > log on replay.c for that revision range". What's wrong with that?
> >
> > Pablo Beltran wrote on Mon, Dec 20, 2010 at 19:22:20 +0100:
> > > Is there a direct way (via cmd line) to find out the revisions involved
> > in
> > > the summary result of differencing two branches?
> > >
> > > An easy example:
> > >
> > >
> > > ========================
> > >
> > > svn diff
> > >
> > http://svn.apache.org/repos/asf/subversion/tags/1.6.14/subversion/libsvn_repos
> > >
> > http://svn.apache.org/repos/asf/subversion/tags/1.6.15/subversion/libsvn_repos--summarize
> > >
> > > M
> > >
> > http://svn.apache.org/repos/asf/subversion/tags/1.6.14/subversion/libsvn_repos/replay.c
> > >
> > > ========================
> > >
> > > The two tags were created in r1036188 and r1038150, but the replay.c file
> > > was modified in
> > >
> > http://svn.apache.org/repos/asf/subversion/branches/1.6.x/subversion/libsvn_repos/replay.c@1037005
> > >
> > > Is there anyway to find out the 1037005 revision number without having to
> > > analyze the logs?
> >
Received on 2010-12-22 01:28:48 CET

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.