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
From: Bert Huijben <bert_at_qqmail.nl>
Date: Fri, 26 Jun 2015 17:39:22 +0200
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.
From: MORGAN Marc [mailto:Marc.MORGAN_at_csem.ch]
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?
From: Bert Huijben [mailto:bert_at_qqmail.nl]
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.
Sent from Surface
From: MORGAN Marc <mailto:Marc.MORGAN_at_csem.ch>
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
This is an archived mail posted to the Subversion Users mailing list.