fix gitAnnexLink to not be absolute on Windows
Windows: Fix reversion that caused the path used to link to annexed
content include the drive letter and full path, rather than being
relative. (`git annex fix` will fix up after this problem).
I've not identified the commit that brought the reversion (probably it
happened this spring when I was removing MisingH and last touched
Utility.Path). Likely commit 18b9a4b802
?
The problem is that relPathDirToFile got called two paths that had the
slashes different ways around. Since takeDrive includes the first slash,
this made two paths on the same drive seem different and it bailed.
(ifdefs around this to avoid doing extra work on non-windows)
This commit was sponsored by Jack Hill on Patreon.
This commit is contained in:
parent
d428f66cdd
commit
0ae2ac282e
3 changed files with 11 additions and 1 deletions
|
@ -9,6 +9,9 @@ git-annex (6.20171019) UNRELEASED; urgency=medium
|
||||||
Thanks, Sean T Parsons
|
Thanks, Sean T Parsons
|
||||||
* Add day to metadata when annex.genmetadata is enabled.
|
* Add day to metadata when annex.genmetadata is enabled.
|
||||||
Thanks, Sean T Parsons
|
Thanks, Sean T Parsons
|
||||||
|
* Windows: Fix reversion that caused the path used to link
|
||||||
|
to annexed content include the drive letter and full path, rather than
|
||||||
|
being relative. (`git annex fix` will fix up after this problem).
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Tue, 24 Oct 2017 13:12:52 -0400
|
-- Joey Hess <id@joeyh.name> Tue, 24 Oct 2017 13:12:52 -0400
|
||||||
|
|
||||||
|
|
|
@ -136,7 +136,9 @@ relPathDirToFile from to = relPathDirToFileAbs <$> absPath from <*> absPath to
|
||||||
-}
|
-}
|
||||||
relPathDirToFileAbs :: FilePath -> FilePath -> FilePath
|
relPathDirToFileAbs :: FilePath -> FilePath -> FilePath
|
||||||
relPathDirToFileAbs from to
|
relPathDirToFileAbs from to
|
||||||
| takeDrive from /= takeDrive to = to
|
#ifdef mingw32_HOST_OS
|
||||||
|
| normdrive from /= normdrive to = to
|
||||||
|
#endif
|
||||||
| otherwise = joinPath $ dotdots ++ uncommon
|
| otherwise = joinPath $ dotdots ++ uncommon
|
||||||
where
|
where
|
||||||
pfrom = sp from
|
pfrom = sp from
|
||||||
|
@ -147,6 +149,9 @@ relPathDirToFileAbs from to
|
||||||
uncommon = drop numcommon pto
|
uncommon = drop numcommon pto
|
||||||
dotdots = replicate (length pfrom - numcommon) ".."
|
dotdots = replicate (length pfrom - numcommon) ".."
|
||||||
numcommon = length common
|
numcommon = length common
|
||||||
|
#ifdef mingw32_HOST_OS
|
||||||
|
normdrive = map toLower . takeWhile (/= ':') . takeDrive
|
||||||
|
#endif
|
||||||
|
|
||||||
prop_relPathDirToFile_basics :: FilePath -> FilePath -> Bool
|
prop_relPathDirToFile_basics :: FilePath -> FilePath -> Bool
|
||||||
prop_relPathDirToFile_basics from to
|
prop_relPathDirToFile_basics from to
|
||||||
|
|
|
@ -2,3 +2,5 @@ On windows, the links to .git/annex/objects are no longer relative; include
|
||||||
drive letter and full path.
|
drive letter and full path.
|
||||||
|
|
||||||
This used to not be the case; it must have gotten broken. --[[Joey]]
|
This used to not be the case; it must have gotten broken. --[[Joey]]
|
||||||
|
|
||||||
|
> [[fixed|done]]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue