Daniel Shahaf wrote: > > > #if (SVN_VER_MAJOR > 1 || SVN_VER_MINOR >= 16) > > (in which I assume you meant MINOR >= 15)... > > I assumed it would be a warning in 1.15 and an error in 1.16.
Oh, OK. I was thinking nearer term (back-porting to 1.14.x as a warning, then error in 1.15), but I haven't any particular reason except to get on with it. I have just confirmed that the back-portable way of adding a warning in the client layer does indeed need to open additional RA-sessions at the wire protocol level, at least for RA-svn. The patch I have prepared opens 4 extra RA-sessions, which I could reduce to 3 or 2 or maybe 1 extra for typical cases with a couple hours more work; and each additional RA-session takes maybe 2 network round-trips at a guess (I could find out of course). That's per "svn merge" invocation, varying a bit depending on what form of merge. I know folks would be very reluctant to accept any added overhead. If we are not looking at back-porting it to 1.14.x, then we could instead add the warnings in a way that doesn't add any additional RA-session opens, but requires bumping APIs, so a bunch of boiler-plate work. There are several potential approaches to choose from, such as (roughly ordered from easiest to best): - use the checks in libsvn_client; add a new warnings callback - use the checks in libsvn_client; add a new 'notification' type for the warnings - add checks in the app layer; pass the open sessions through to new (bumped) merge APIs - add checks in the app layer; add general RA session caching (I wish we had addressed the technical debt that I perceive in the lack of RA session caching. I know some of us have looked into it before -- e.g. the 'reuse-ra-session' branch -- but it seems we didn't ever complete a solution.) -- - Julian