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

Reply via email to