There are now two different issues brought up in these thread:
1. For 'svn log -rX:Y PATH@PEG, where Y> PEG, don't croak when PATH@Y
doesn't exist. Instead, automatically substitute for Y the last revision
in
which PATH@THAT-REV *did* exist, and continue the operation. I believe
this
is something that we can reasonably achieve without too much trouble and,
more importantly, in a client-side change (which helps with client/server
compatibility).
As far as i know the history is always collected from youngest to oldest
revision (not the other way around).
Your suggestion to modify Y to the latest revision where PATH@PEG still
exists looks like the easiest approach.
But i could not yet figure out how to perform this operation.
Could you give me an advice how this could be realized or point me to some
other code area where a similar "forward" traversal/search is performed?
May be with some hints i can carry on with this by myself.
This might help: http://svn.haxx.se/dev/archive-2011-04/0215.shtml
Indeed - this helped a lot - thank you for this valuable hint.
Now i have a prototype working which can partly handle the previously mentioned
case (1):
svn log -rX:Y PATH@PEG
where Y > X and Y > PEG even if PATH@PEG has been deleted in revision Z, where
PEG < Z < Y
(Until now it only works for Y = HEAD but this is hopefully easy to fix)
Since this is my first time digging into subversion it is very likely that i
did something totally wrong (any suggestions are highly appreciated).
Currently i do use these additional functions:
- svn_ra_get_session_url
- svn_client__path_relative_to_root
- svn_ra_get_deleted_rev
in order to modify Y before calling svn_ra_get_log2 in
subversion/libsvn_client/log.c:svn_client_log5().
I will try to get the case Y != HEAD working [and check if anything is broken]
and send a diff as soon as i have is working.
Dirk