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:marc.mor...@csem.ch] 
Sent: vrijdag 26 juni 2015 11:41
To: Bert Huijben; users@subversion.apache.org
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:b...@qqmail.nl] 
Sent: vendredi 26 juin 2015 05:17
To: MORGAN Marc; users@subversion.apache.org 
<mailto:users@subversion.apache.org> 
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:marc.mor...@csem.ch> 
Sent: ‎Thursday‎, ‎June‎ ‎25‎, ‎2015 ‎3‎:‎47‎ ‎PM
To: users@subversion.apache.org <mailto:users@subversion.apache.org> 
Cc: MORGAN Marc <mailto:marc.mor...@csem.ch> 

 

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

Reply via email to