Windows: Fix v6 unlocked files to actually work.

Pointer files were not being treated as annex content, so "git annex get"
didn't replace them with the object.
This commit is contained in:
Joey Hess 2016-02-15 16:12:18 -04:00
parent dcf42949cb
commit f9d79d194b
Failed to extract signature
4 changed files with 19 additions and 10 deletions

View file

@ -12,6 +12,8 @@
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE CPP #-}
module Annex.Link where
import Annex.Common
@ -155,3 +157,18 @@ formatPointer k =
isPointerFile :: FilePath -> IO (Maybe Key)
isPointerFile f = catchDefaultIO Nothing $
parseLinkOrPointer <$> L.readFile f
{- Checks a symlink target or pointer file first line to see if it
- appears to point to annexed content.
-
- We only look for paths inside the .git directory, and not at the .git
- directory itself, because GIT_DIR may cause a directory name other
- than .git to be used.
-}
isLinkToAnnex :: FilePath -> Bool
isLinkToAnnex s = (pathSeparator:objectDir) `isInfixOf` s
#ifdef mingw32_HOST_OS
-- '/' is still used inside pointer files on Windows, not the native
-- '\'
|| ('/':objectDir) `isInfixOf` s
#endif

View file

@ -63,7 +63,6 @@ module Annex.Locations (
gitAnnexSshDir,
gitAnnexRemotesDir,
gitAnnexAssistantDefaultDir,
isLinkToAnnex,
HashLevels(..),
hashDirMixed,
hashDirLower,
@ -386,15 +385,6 @@ gitAnnexRemotesDir r = addTrailingPathSeparator $ gitAnnexDir r </> "remotes"
gitAnnexAssistantDefaultDir :: FilePath
gitAnnexAssistantDefaultDir = "annex"
{- Checks a symlink target to see if it appears to point to annexed content.
-
- We only look at paths inside the .git directory, and not at the .git
- directory itself, because GIT_DIR may cause a directory name other
- than .git to be used.
-}
isLinkToAnnex :: FilePath -> Bool
isLinkToAnnex s = (pathSeparator:objectDir) `isInfixOf` s
{- Sanitizes a String that will be used as part of a Key's keyName,
- dealing with characters that cause problems on substandard filesystems.
-

View file

@ -13,6 +13,7 @@ import Data.Default
import Annex.Common
import Annex.Content
import Annex.Link
import Logs.Presence
import qualified Annex.Queue
import qualified Git

1
debian/changelog vendored
View file

@ -13,6 +13,7 @@ git-annex (6.20160212) UNRELEASED; urgency=medium
present in annex/objects but didn't reach the work tree.
* When initializing a v6 repo on a crippled filesystem, don't force it
into direct mode.
* Windows: Fix v6 unlocked files to actually work.
-- Joey Hess <id@joeyh.name> Fri, 12 Feb 2016 14:03:46 -0400