From 1093d82f6b6fb7844ca11b136f03767ca4460a98 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 26 Jun 2012 22:58:44 -0400 Subject: Got rid of the last place that did utf8 decoding. Probably fixes bugs/git-annex:_Cannot_decode_byte___39____92__xfc__39__/ although I don't know how to reproduce that bug. --- Git/UnionMerge.hs | 11 +++++++---- debian/changelog | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Git/UnionMerge.hs b/Git/UnionMerge.hs index 0987f9131..504147e1d 100644 --- a/Git/UnionMerge.hs +++ b/Git/UnionMerge.hs @@ -10,8 +10,7 @@ module Git.UnionMerge ( mergeIndex ) where -import qualified Data.Text.Lazy as L -import qualified Data.Text.Lazy.Encoding as L +import qualified Data.ByteString.Lazy as L import qualified Data.Set as S import Common @@ -79,10 +78,14 @@ mergeFile info file h repo = case filter (/= nullSha) [Ref asha, Ref bsha] of =<< calcMerge . zip shas <$> mapM getcontents shas where [_colonmode, _bmode, asha, bsha, _status] = words info - getcontents s = map L.unpack . L.lines . - L.decodeUtf8 <$> catObject h s use sha = return $ Just $ updateIndexLine sha FileBlob $ asTopFilePath file + -- We don't know how the file is encoded, but need to + -- split it into lines to union merge. Using the + -- FileSystemEncoding for this is a hack, but ensures there + -- are no decoding errors. Note that this works because + -- streamUpdateIndex sets fileEncoding on its write handle. + getcontents s = lines . encodeW8 . L.unpack <$> catObject h s {- Calculates a union merge between a list of refs, with contents. - diff --git a/debian/changelog b/debian/changelog index 59eb63b64..5968d8560 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,7 @@ git-annex (3.20120625) UNRELEASED; urgency=low which disables the watch command. * Avoid ugly failure mode when moving content from a local repository that is not available. + * Got rid of the last place that did utf8 decoding. -- Joey Hess Mon, 25 Jun 2012 11:38:12 -0400 -- cgit v1.2.3