diff options
-rw-r--r-- | Messages.hs | 7 | ||||
-rw-r--r-- | Remote/Git.hs | 11 |
2 files changed, 16 insertions, 2 deletions
diff --git a/Messages.hs b/Messages.hs index 63c628108..d79c91aa0 100644 --- a/Messages.hs +++ b/Messages.hs @@ -23,6 +23,7 @@ module Messages ( showEndResult, showErr, warning, + warningIO, fileNotFound, indent, maybeShowJSON, @@ -158,6 +159,12 @@ warning' w = do hFlush stdout hPutStrLn stderr w +warningIO :: String -> IO () +warningIO w = do + putStr "\n" + hFlush stdout + hPutStrLn stderr w + {- Displays a warning one time about a file the user specified not existing. -} fileNotFound :: FilePath -> Annex () fileNotFound file = do diff --git a/Remote/Git.hs b/Remote/Git.hs index 7f9f95e2a..d39e0afe2 100644 --- a/Remote/Git.hs +++ b/Remote/Git.hs @@ -161,8 +161,15 @@ tryGitConfigRead r =<< liftIO (try a :: IO (Either SomeException Git.Repo)) pipedconfig cmd params = - withHandle StdoutHandle createProcessSuccess p $ - Git.Config.hRead r + withHandle StdoutHandle createProcessSuccess p $ \h -> do + fileEncoding h + val <- hGetContentsStrict h + r' <- Git.Config.store val r + when (getUncachedUUID r' == NoUUID && not (null val)) $ do + warningIO $ "Failed to get annex.uuid configuration of repository " ++ Git.repoDescribe r + warningIO $ "Instead, got: " ++ show val + warningIO $ "This is unexpected; please check the network transport!" + return r' where p = proc cmd $ toCommand params |