Thanks for the quick reply! Den ons 1 maj 2024 kl 13:51 skrev Yasuhito FUTATSUKI < futat...@yf.bsdclub.org>:
> Hello, > > On 2024/05/01 18:28, Daniel Sahlberg wrote: > > Hi, > > > > This is based on a problem we have in the TortoiseSVN project and I'm not > > proficient enough in the API to resolve it myself. > > > > We know of a path that existed at one point in time (basically a peg > > revision). We would like to connect to the repository and figure out the > > current HEAD revision (we don't care about the repository content at this > > time). > > > > We use svn_client_open_ra_session2() for the connection and send in the > > path. This may fail if the path has subsequently been removed. So we > > instead tried to send in "/", but that failed for some users who don't > have > > read access to the repository root but only on certain subdirectories. > > const char *wri_abspath in svn_client_open_ra_session2() can be NULL, > and const char *url can be pointed to non-exist node within the repository. > > Here is an example using Python bindings > (svn_client_open_ra_session() acts as wri_abspath is NULL): > [[[ > $ sudo -u mailman -g mailman svn ls svn+ssh://svn-agent-sysadmin@localhost > /@ > svn: E170001: Authorization failed > $ sudo -u mailman -g mailman python > Python 2.7.5 (default, Nov 14 2023, 16:14:06) > [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> from svn import core,client,ra > >>> ctx = client.create_context() > >>> session = > client.open_ra_session('svn+ssh://svn-agent-sysadmin@localhost/', ctx) > >>> ra.get_latest_revnum(session) > 2221 > >>> session2 = client.open_ra_session(' > https://svn.apache.org/repos/asf/non-existent/',ctx) > >>> ra.get_latest_revnum(session2) > 1917447 > >>> quit() > ]]] > > Thanks for the example, you were absolutely right of course and my initial investigation was not correct. The svn_client_open_ra_session2() call returned absolutely fine and the issue was later in the code where we tried to do an svn_ra_stat(). It was a matter of bad design where one function did more than it was supposed to do. My bad, sorry for the noise! Kind regards, Daniel