Hi Marc,
It has nothing to do with cross compilation. (I don’t know how Cygwin produces
their binaries… doesn’t matter)
But Cygwin is a fake unix environment for Windows. As such it expects unix
style paths. And when you compile Subversion for Cygwin, Subversion assumes
that it is not on Windows so the path processing combines multiple slashes to
one.
The APR library that Subversion uses provides full Windows compatibility and
Subversion itself also adds many Windows specific features, but only if you
compile Subversion for Windows… which is what the Cygwin developers explicitly
don’t. They explicitly disable the Windows portions to make Subversion behave
as on other platforms.
This is the problem you see here.
Subversion 1.6 was very sloppy in its path handling, which required a lot of
unneeded path processing all through the code. With Subversion 1.7 the path
processing was completely updated to fully work with canonical and in most
cases absolute paths, to avoid all kinds of errors.
In 1.6 we didn’t catch all kinds of user errors, including file:////
<file:///\\> style paths, or even file:///\\\ <file:///\\> , but for 1.7 we
declared these non canonical and convert them to a supported format before we
use them. But depending on the platform we use different rules. Things like
‘c:hi’ are a valid filename on platforms like linux, while they are a drive
relative path on Windows. The unix/posix code in Subversion doesn’t support UNC
paths, while the Windows code does.
We support a Windows version of Subversion, to handle the Windows platform.
And the Cygwin developers support their compilation… but when they decide not
to use our platform support, we can’t help you.
That’s why I recommended mapping the drive (to work around the problem) or to
use a proper Windows subversion client.
Bert
From: MORGAN Marc [mailto:[email protected]]
Sent: vrijdag 26 juni 2015 11:41
To: Bert Huijben; [email protected]
Subject: RE: Subversion 1.8.13 on Cygwin: E170000 or E180001: Unable to connect
to a repository at URL , Unable to open an ra_local session to URL
Hi Bert,
Thanks for your reply.
1) Are you suggesting that Cygwin executables are cross-compiled for
Cygwin under Linux? Are you sure of this? I’ve never come across a Linux
environment for cross-compiling code for Cygwin execution. Do you have more
information about this?
2) Access to the same repository worked fine with the previous svn on
Cygwin on the same Windows computer, same Linux server, same network. Are you
suggesting that someone removed the path mapping capability from svn between
versions 1.6 and 1.8?
Marc
From: Bert Huijben [mailto:[email protected]]
Sent: vendredi 26 juin 2015 05:17
To: MORGAN Marc; [email protected]
<mailto:[email protected]>
Subject: Re: Subversion 1.8.13 on Cygwin: E170000 or E180001: Unable to connect
to a repository at URL , Unable to open an ra_local session to URL
The cygwin version of Subversion is a unix compilation of subversion running on
Windows, via the cygwin libraries. As such it doesn't understand special
Windoes paths.
If you would use a normal windows client (compiled for windows; not cygwin) it
would understand that it should transform file://myserver/share/path
<file:///\\myserver\share\path> to \\myserver\share\path
<file:///\\myserver\share\path> .
If you would like to use the cygwin version, you should probably map the
network share and then relocate your working copy.
Bert
Sent from Surface
From: MORGAN Marc <mailto:[email protected]>
Sent: Thursday, June 25, 2015 3:47 PM
To: [email protected] <mailto:[email protected]>
Cc: MORGAN Marc <mailto:[email protected]>
Hi,
I’ve been using subversion on my Windows 7 PC with Cygwin with a repository on
a Linux server accessed via file:// <file:///\\> .
I installed a brand new Cygwin version yesterday.
My local workspace lost its connection to the repository.
I can no longer access via svn the repository which I was previously using on
the same PC.
% svn status -u
svn: E170000: Unable to connect to a repository at URL
'file://server/path/repository/trunk'
svn: E170000: Unable to open an ra_local session to URL
svn: E170000: Local URL 'file://server/path/repository/trunk'contains
unsupported hostname
% svn ls file:////server/path/repository <file:///\\server\path\repository>
svn: E180001: Unable to connect to a repository at URL
'file:///server/path/repository'
svn: E180001: Unable to open an ra_local session to URL
svn: E180001: Unable to open repository 'file:///server/path/repository'
% ls //server/path/repository
conf dav db format hooks locks README.txt
The new svn version is 1.8.13 (r1667537) on i686-pc-cygwin. The previous svn
version I was using is 1.6.17.
With file:// I get the E170000 error. With file:/// <file:///\\> or file:////
<file:///\\> I get the E180001 error.
The repository directory is technically on another computer but is seen as
local on my PC (I guess it’s NFS or SAMBA) when accessed with the // prefix
from the shell.
I tried touch-ing a new file in the repository’s directory and that worked,
with correct owner, group and file permissions when checked from the Linux
server.
If I copy the repository folder to my local /tmp, I can access it correctly via
svn. But that’s obviously not my goal.
If I access the repository via the URL
svn+ssh://somelinuxcomputer/nfspath/repository, that works. But my experience
with the SSH tunnel is that it tends to slow down access.
Has anyone experienced this problem before? Any suggestions?
Thanks in advance