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

Re: Feature request: svn log constrained by line range

From: Joel Polowin <jpolowin_at_hotmail.com>
Date: Fri, 7 Apr 2017 22:56:25 +0000

On Friday, April 7, 2017 8:16 AM, Johan Corveleyn <jcorvel_at_gmail.com> wrote:
> On Fri, Apr 7, 2017 at 4:50 AM, Joel Polowin <jpolowin_at_hotmail.com> wrote:
>> In case posting to this list is sufficient... I'd like to be able
>> to specify a line range for a file so that _svn log filename_ would
>> show the change log for only those lines, allowing for the movements
>> of the first and last lines through the file's history. So if my file
>> 'blargh' has a function which currently begins at line 1500 and ends at
>> line 1800, the command "svn log blargh --lines 1500:1800" would give
>> me the commit messages for that function even if that block of lines
>> was originally added to occupy, say, lines 2700 to 3500. And wouldn't
>> report the messages for commits that didn't touch that block of lines.
>
> Interesting question. In theory svn could do this ... it's sort of a
> combination of 'blame' and 'log'. The information is there. But at
> present there is no functionality exposed for this in the client.
>
> * 'svn blame' works by invoking 'get_file_revs2' on the repository,
> retrieving all revisions, and processing the diffs between them,
> sequentially. It keeps track of which rev / author last touched each
> line (in the end it outputs the final result: each line with its
> corresponding "last rev / author"). See the source of
> libsvn_client/blame.c [1] for a starting point.
>
> * Your 'svn log Filename --lines 1500:1800' could similarly walk the
> history of the file with get_file_revs2. It would need to keep a list,
> per line, of all revisions that touched the line. And at the end
> output the log of all revisions that are applicable to the range of
> lines given.
>
> You might be able to write this, purely client-side, in C, or using
> one of the language bindings (python bindings or JavaHL), invoking the
> get_file_rev2 API.

Hm. Would that cover lines that were deleted, rather than added or
merely altered? That's one of my objections to a colleague's "just
use 'svn blame'!"

I was, of course, hoping to get away without undertaking a big
programming task in a language I'm comfortable with (C), much less
ones I'm essentially unfamiliar with (python, any flavour of Java).
Ah, well.

Joel
Received on 2017-04-08 00:56:37 CEST

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.