work around absNormPath not working on Windows
When making git-annex links, we want unix-style paths in the link targets.
This commit is contained in:
parent
28cabd9909
commit
897d877472
5 changed files with 27 additions and 5 deletions
|
@ -436,8 +436,8 @@ removeAnnex key = withObjectLoc key remove removedirect
|
|||
l <- inRepo $ gitAnnexLink f key
|
||||
top <- fromRepo Git.repoPath
|
||||
cwd <- liftIO getCurrentDirectory
|
||||
let top' = fromMaybe top $ absNormPath cwd top
|
||||
let l' = relPathDirToFile top' (fromMaybe l $ absNormPath top' l)
|
||||
let top' = fromMaybe top $ absNormPathUnix cwd top
|
||||
let l' = relPathDirToFile top' (fromMaybe l $ absNormPathUnix top' l)
|
||||
secureErase f
|
||||
replaceFile f $ makeAnnexLink l'
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@ gitAnnexLocation' key r crippled
|
|||
gitAnnexLink :: FilePath -> Key -> Git.Repo -> IO FilePath
|
||||
gitAnnexLink file key r = do
|
||||
cwd <- getCurrentDirectory
|
||||
let absfile = fromMaybe whoops $ absNormPath cwd file
|
||||
let absfile = fromMaybe whoops $ absNormPathUnix cwd file
|
||||
loc <- gitAnnexLocation' key r False
|
||||
return $ relPathDirToFile (parentDir absfile) loc
|
||||
where
|
||||
|
|
|
@ -21,10 +21,10 @@ import Control.Applicative
|
|||
import Data.Char
|
||||
import qualified System.FilePath.Posix as Posix
|
||||
#else
|
||||
import qualified "MissingH" System.Path as MissingH
|
||||
import System.Posix.Files
|
||||
#endif
|
||||
|
||||
import qualified "MissingH" System.Path as MissingH
|
||||
import Utility.Monad
|
||||
import Utility.UserInfo
|
||||
|
||||
|
@ -42,7 +42,18 @@ absNormPath :: FilePath -> FilePath -> Maybe FilePath
|
|||
#ifndef mingw32_HOST_OS
|
||||
absNormPath dir path = MissingH.absNormPath dir path
|
||||
#else
|
||||
absNormPath dir path = Just $ combine dir path
|
||||
absNormPath dir path = MissingH.absNormPath dir path
|
||||
#endif
|
||||
|
||||
{- On Windows, this converts the paths to unix-style, in order to run
|
||||
- MissingH's absNormPath on them. Resulting path will use / separators. -}
|
||||
#ifndef mingw32_HOST_OS
|
||||
absNormPathUnix dir path = MissingH.absNormPath dir path
|
||||
#else
|
||||
absNormPathUnix dir path = Just $ combine dir path
|
||||
absNormPathUnix dir path = MissingH.absNormPath (fromdos dir) (fromdos path)
|
||||
where
|
||||
fromdos = replace "\\" "/"
|
||||
#endif
|
||||
|
||||
{- Returns the parent directory of a path.
|
||||
|
|
1
debian/changelog
vendored
1
debian/changelog
vendored
|
@ -28,6 +28,7 @@ git-annex (5.20140128) UNRELEASED; urgency=medium
|
|||
directories.
|
||||
* Windows: Fix deletion of repositories by test suite and webapp.
|
||||
* Windows: Test suite 100% passes again.
|
||||
* Windows: Fix bug in symlink calculation code.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Tue, 28 Jan 2014 13:57:19 -0400
|
||||
|
||||
|
|
|
@ -90,3 +90,13 @@ The output of `git log -p` for me:
|
|||
@@ -0,0 +1 @@
|
||||
+.git/annex/objects/5X/qQ/SHA256E-s19915186--c6dc288ec8a77404c0ebc22cbe9b4ec911103fd022c3ca74eec582604dff80a7.exe/SHA256E-s19915186--c6dc288ec8a77404c0ebc22cbe9b4ec911103fd022c3ca74eec582604dff80a7.exe
|
||||
\ No newline at end of file
|
||||
|
||||
> [[fixed|done]] -- I didn't notice this before because it happened to do
|
||||
> the right thing if you cd'd into the subdir before adding the file there.
|
||||
>
|
||||
> WRT the slow down issue, I don't see how it could matter to git-annex on
|
||||
> Windows whether the symlinks point to the right place. It only looks at
|
||||
> the basename of the symlink target to get the key. If you have a
|
||||
> repository that behaves poorly, you can probably use --debug to see if
|
||||
> git-annex is calling some expensive series of git commands somehow.
|
||||
> --[[Joey]]
|
||||
|
|
Loading…
Reference in a new issue