summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GitRepo.hs10
-rw-r--r--debian/changelog2
2 files changed, 11 insertions, 1 deletions
diff --git a/GitRepo.hs b/GitRepo.hs
index 2bf320eda..9ecaa8ffc 100644
--- a/GitRepo.hs
+++ b/GitRepo.hs
@@ -78,6 +78,7 @@ import Data.Word (Word8)
import Codec.Binary.UTF8.String (encode)
import Text.Printf
import Data.List (isInfixOf, isPrefixOf)
+import System.Exit
import Utility
@@ -482,7 +483,14 @@ checkAttr repo attr files = do
-- in its output back to relative.
cwd <- getCurrentDirectory
let absfiles = map (absPathFrom cwd) files
- (_, s) <- pipeBoth "git" (toCommand params) $ join "\0" absfiles
+ (_, fromh, toh) <- hPipeBoth "git" (toCommand params)
+ _ <- forkProcess $ do
+ hClose fromh
+ hPutStr toh $ join "\0" absfiles
+ hClose toh
+ exitSuccess
+ hClose toh
+ s <- hGetContents fromh
return $ map (topair $ cwd++"/") $ lines s
where
params = gitCommandLine repo [Param "check-attr", Param attr, Params "-z --stdin"]
diff --git a/debian/changelog b/debian/changelog
index 991c9e0bb..a69f03f5e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ git-annex (0.20110426) UNRELEASED; urgency=low
Debian stable.
* Added rsync special remotes. This could be used, for example, to
store annexed content on rsync.net (encrypted naturally). Or anywhere else.
+ * Bugfix: Avoid pipeline stall when running git annex drop or fsck on a
+ lot of files. Possibly only occured with ghc 7.
-- Joey Hess <joeyh@debian.org> Tue, 26 Apr 2011 11:23:54 -0400