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

Reply via email to