On Wed, Aug 29, 2007 at 01:10:47AM +0300, Yitzchak Gale
wrote:
> I wrote:
> >> rcp... man page says:
> >> Each file or directory argument is
> >> either a remote file name of the form
``rname rhost:path'',
> >> or a local file name
> >> (containing no `:' characters, or a `/'
before any `:'s).
> >> Perhaps darcs should follow that convention.
>
> David Roundy wrote:
> > Yeah, checking for '/' before ':' would make a lot
of sense.
>
> >> How does darcs distinguish a URL from an
rcp-style
> >> remote file?
> >> ...Am I correct that not every legal URL
conforming
> > > to RFC 3986 can be accepted?
>
> > Don't URLs always have :// in them?
>
> No. But I think it is reasonable for darcs to
recognize
> only those that do. So that answers both of my
> questions.
>
> >> ..."file:" URLs are allowed to
> >> contain ':'. Does darcs support this?
>
> > In the original poster's situation, any URL is
invalid,
> > and it's a pure and simple darcs bug.
>
> Well, OK, but what is the correct behavior?
>
> I propose the following algorithm:
I agree, except for one bit (see below)
> In contexts where only local paths make sense,
> we interpret every file spec as a local path.
> (Can that include UNC paths on Windows?
> It would be nice.)
I'm not sure what an UNC path is on windows.
Note, implementing this will require a rather extensive code
review.
Eric's put together some code implementing specific data
types that
are intended to describe what sort of object a given String
is. I think
switching functions over to use a "LocalPath" type
when this is what is
intended should fix this. Then when reading a
"LocalPath" we'll never try
to treat it as a URL.
> Otherwise:
In this case, I think we should have a "UrlPath"
data type, which could be
any of the below. We use UrlPaths almost exclusively for
identifying
(possibly remote) repositories, but also (of course) for
accessing files
within a repository.
Along the way, we might find it helpful to refactor
Repository into two
types: ReadableRepository and LockedRepository (which is
writeable), with
the latter holding a LocalPath describing its absolute
path.
> 1. If a file spec begins with a valid URI scheme
> name followed by "://", it is a URL.
>
> 2. If it contains a ':' that is not after a '/', then
it is
> an rcp-style remote file. (Even on Windows,
> for consistency.)
On windows, I think we should treat c:/path/to... as a local
path (i.e. c
is the drive letter). If someone really has a one-character
hostname, they
can always use a fully-qualified domain name for their scp
path.
> 3. Otherwise, it is a local file path (or UNC on
> Windows).
>
> Note that according to RFC3986, a valid URI
> scheme name is:
>
> scheme = ALPHA *( ALPHA / DIGIT / "+" /
"-" / "." )
--
David Roundy
http://www.darcs.net
_______________________________________________
darcs-users mailing list
darcs-users darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-users
|