[darcs-users] [patch368] Fix for issue1932
Dmitry Astapov
dastapov at gmail.com
Wed Sep 1 20:43:02 UTC 2010
Hi.
I've just identified the nasty regression this patch causes somewhere deep
inside "darcs pull". I'll investigate and get back to you.
On Wed, Sep 1, 2010 at 6:39 PM, Florent Becker <bugs at darcs.net> wrote:
>
> Florent Becker <florent.becker at ens-lyon.org> added the comment:
>
> >
> >New patches:
> >
> >[Fix for issue1932
> >Dmitry Astapov <dastapov at gmail.com>**20100825173045
> > Ignore-this: 68db2c42ef376307271a7f609e62481c
> > Do _not_ check for colons in "isRelative" - everything is covered
> > inside Add.lhs and governed by use of "--reserved-ok" option.
> >
> > Replace isRelative and isAbsolute with functions from System.FilePath
> > for correct handling of platform specifics.
> >] hunk ./src/Darcs/Commands/Add.lhs 48
> > , doesFileReallyExist, treeHas, treeHasDir,
> treeHasAnycase )
> > import Darcs.RepoPath ( SubPath, toFilePath, simpleSubPath, toPath )
> > import Darcs.Repository.Prefs ( darcsdirFilter, boringFileFilter )
> >-import Data.Maybe ( maybeToList, fromJust )
> >+import Data.Maybe ( maybeToList )
> > import System.FilePath.Posix ( takeDirectory, (</>) )
> > import qualified System.FilePath.Windows as WindowsFilePath
> > import Printer( text )
> >hunk ./src/Darcs/Commands/Add.lhs 54
> >
> > #include "gadts.h"
> >+#include "impossible.h"
> >
> > addDescription :: String
> > addDescription = "Add one or more new files or directories."
> >
> Why exchange the import of fromJust for the inclusion of impossible? I
> don't
> see the point.
>
> >hunk ./src/Darcs/URL.hs 30
> > * A URL contains the sequence @\":\/\/\"@.
> >
> > * A local filepath does not contain colons, except
> >- as second character (windows drives).
> >+ as second character (windows drives) when this
> >+ filepath is meant to be used as repository name
> >
> > * A path that is neither a URL nor a local file
> > is an ssh-path.
> >hunk ./src/Darcs/URL.hs 56
> > isSshNopath
> > ) where
> >
> >+import qualified System.FilePath as FP (isRelative, isAbsolute, isValid)
> >+
> > #include "impossible.h"
> >
> > isRelative :: String -> Bool
> >hunk ./src/Darcs/URL.hs 61
> >-isRelative (_:':':_) = False
> >-isRelative f@(c:_) = isFile f && c /= '/' && c /= '~'
> > isRelative "" = bug "Empty filename in isRelative"
> >hunk ./src/Darcs/URL.hs 62
> >+isRelative f = FP.isRelative f
> >
> > isAbsolute :: String -> Bool
> > isAbsolute "" = bug "isAbsolute called with empty filename"
> >hunk ./src/Darcs/URL.hs 66
> >-isAbsolute f = isFile f && (not $ isRelative f)
> >+isAbsolute f = FP.isAbsolute f
> >
> We are now using the stdlib isRelative and isAbsolute. We still have
> isAbsolute = not . isRelative .
>
> > isFile :: String -> Bool
> >hunk ./src/Darcs/URL.hs 69
> >-isFile (_:_:fou) = ':' `notElem` fou
> >-isFile _ = True
> >+isFile f@(_:_:fou) = ':' `notElem` fou && FP.isValid f
> >+isFile f = FP.isValid f
> >
> > isUrl :: String -> Bool
> > isUrl (':':'/':'/':_:_) = True
> >
>
> We still have :
>
> isSsh :: String -> Bool
> isSsh s = not (isFile s || isUrl s)
>
> This means (IIUC) that on windows, trying to use a "special" filename
> such as "prn" would try to do an "ssh prn". I'm applying this anyway,
> but we should give some other error message ("darcs pull prn" --> "no
> route to host prn" would be a bit puzzling). Can you do that in a
> followup patch?
>
> ----------
> status: review-in-progress -> accepted-pending-tests
>
> __________________________________
> Darcs bug tracker <bugs at darcs.net>
> <http://bugs.darcs.net/patch368>
> __________________________________
>
--
Dmitry Astapov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osuosl.org/pipermail/darcs-users/attachments/20100901/2ec6389f/attachment-0001.html>
More information about the darcs-users
mailing list