+git-annex (6.20161032) UNRELEASED; urgency=medium
+
+ * Restarting a crashing git process could result in filename encoding
+ issues when not in a unicode locale, as the restarted processes's
+ handles were not read in raw mode.
+
+ -- Joey Hess <id@joeyh.name> Tue, 01 Nov 2016 14:02:06 -0400
+
git-annex (6.20161031) unstable; urgency=medium
* Assistant, repair: Fix ignoring of git fsck errors due to
<$> startp "--batch"
<*> startp "--batch-check=%(objectname) %(objecttype) %(objectsize)"
where
- startp p = CoProcess.rawMode =<< gitCoProcessStart restartable
+ startp p = gitCoProcessStart restartable
[ Param "cat-file"
, Param p
] repo
checkAttrStart :: [Attr] -> Repo -> IO CheckAttrHandle
checkAttrStart attrs repo = do
currdir <- getCurrentDirectory
- h <- CoProcess.rawMode =<< gitCoProcessStart True params repo
+ h <- gitCoProcessStart True params repo
oldgit <- Git.Version.older "1.7.7"
return (h, attrs, oldgit, currdir)
where
-}
checkIgnoreStart :: Repo -> IO (Maybe CheckIgnoreHandle)
checkIgnoreStart repo = ifM supportedGitVersion
- ( Just <$> (CoProcess.rawMode =<< gitCoProcessStart True params repo')
+ ( Just <$> gitCoProcessStart True params repo'
, return Nothing
)
where
type HashObjectHandle = CoProcess.CoProcessHandle
hashObjectStart :: Repo -> IO HashObjectHandle
-hashObjectStart = CoProcess.rawMode <=< gitCoProcessStart True
+hashObjectStart = gitCoProcessStart True
[ Param "hash-object"
, Param "-w"
, Param "--stdin-paths"
withMkTreeHandle :: (MonadIO m, MonadMask m) => Repo -> (MkTreeHandle -> m a) -> m a
withMkTreeHandle repo a = bracketIO setup cleanup (a . MkTreeHandle)
where
- setup = CoProcess.rawMode =<< gitCoProcessStart False ps repo
+ setup = gitCoProcessStart False ps repo
ps = [Param "mktree", Param "--batch", Param "-z"]
cleanup = CoProcess.stop
start,
stop,
query,
- rawMode
) where
import Common
start' :: CoProcessSpec -> IO CoProcessState
start' s = do
(pid, from, to) <- startInteractiveProcess (coProcessCmd s) (coProcessParams s) (coProcessEnv s)
+ rawMode from
+ rawMode to
return $ CoProcessState pid to from s
+ where
+ rawMode h = do
+ fileEncoding h
+#ifdef mingw32_HOST_OS
+ hSetNewlineMode h noNewlineTranslation
+#endif
stop :: CoProcessHandle -> IO ()
stop ch = do
{ coProcessNumRestarts = coProcessNumRestarts (coProcessSpec s) - 1 }
putMVar ch s'
query ch send receive
-
-rawMode :: CoProcessHandle -> IO CoProcessHandle
-rawMode ch = do
- s <- readMVar ch
- raw $ coProcessFrom s
- raw $ coProcessTo s
- return ch
- where
- raw h = do
- fileEncoding h
-#ifdef mingw32_HOST_OS
- hSetNewlineMode h noNewlineTranslation
-#endif