subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joel Polowin <>
Subject Re: Feature request: svn log constrained by line range
Date Fri, 07 Apr 2017 22:56:25 GMT
On Friday, April 7, 2017 8:16 AM, Johan Corveleyn <> wrote:
> On Fri, Apr 7, 2017 at 4:50 AM, Joel Polowin <> 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.

View raw message