[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [TSVN] Re: symbolic links - unix to unix via Tortoise

From: Joseph Galbraith <galb_at_vandyke.com>
Date: 2005-08-09 15:41:11 CEST

Mark Richards wrote:
> Jens,
>
> >>Windows has no notion of "unix files". So no, there's no way for TSVN
> knowing it is talking to unix.
>
> My understanding is that a windows symbolic link is a file with a special
> bit set to indicate to the O/S how it should be dealt with.

Unfortunately, there is no such thing as a windows symbolic
link file. (And hence no special bit, and no way to specify
what the target of the link is.)

The CIFS (SMB) protocol doesn't support the creation of a
symbolic links. There is no protocol command or element
for creating a symbolic link over CIFS.

The windows filesystem API has no API to create a symbolic
link.

Windows has two features that, to some degree mimic a symbolic
link.

The first is shortcuts. A shortcut has no special attributes,
and is not interpreted by the file system in any way. A shortcut
is a special file extension (.lnk) along with some binary content
specifying the target, that is interpreted by windows explorer
(or other application using API's from windows explorer.)

Clearly the creation of such a file on a samba share would not
give you what you want. You would simple end up with a file
call mylink.lnk with garbage in it.

Windows also supports a feature called junctions that allow
a directory to be redirected to another directory. Junction
points can only be used on NTFS partitions, can only be used
to redirect directories, not files, are relatively uncommon,
and no windows tool (i.e., explorer) really understands them,
making them dangerous (there is no way to delete a junction
w/o deleting the target content.)

Windows Longhorn (AKA Vista) has true support for symbolic links.
The CIFS protocol may (or may not) be updated to reflect this.
If MS updates CIFS the samba folk will pick it up pretty soon
and sometime in 2006 or early 2007 you may expect this particular
scenario to at least be possible.

> If the file attributes (including this bit) cannot be read by Tortoise, that
> seems to me bad news. If these attributes are not available through DAV,
> that's worse. It's clear to me (now!) that Samba doesn't do this task when
> working through the windows "exploder" because exploder wasn't designed to
> handle these attributes. However I'm uncertain if Samba is even used when
> SVN is accessed using Tortoise through the web interface. Besides, if the
> Tortoise Repository Browser and other extensions are built from the ground
> up, isn't it possible to accommodate symbolic links?

TortoiseSVN (and SVN running on windows) MUST use the windows
API to do their work.

The windows API does not support symbolic links.

Therefore it is not possible to accommodate symbolic links.

> If the attribute bit is readable, is there a programming or other issue that
> prevents Tortoise from handling these files?

No such attribute bit.

> Perhaps users who would like to use Tortoise SVN as a fully-featured front
> end to SVN for Linux development would be willing to set a configuration
> switch that says:
>
> [ ] Repository = unix
> [ ] Target = unix

Unfortunately, this won't help you. Even if SVN knew that it
was a unix box hosting the filesystem, their is no mechanism
it can use to communicate the needed information to the unix
box. The windows API is simply not capable of doing what you
want.

Wait for longhorn or try one of the unix based GUIs. Or work
like us poor windows saps and don't use symbolic links.

Thanks,

Joseph

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org
Received on Tue Aug 9 15:34:30 2005

This is an archived mail posted to the TortoiseSVN Dev mailing list.