summaryrefslogtreecommitdiff
path: root/Command/Add.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-06-12 13:43:16 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-06-12 13:54:08 -0400
commit624a9aba5adf8df8f0d9583454bf808842c3e15c (patch)
tree1cfbed8db158ad1e2d9b902cd8082f14a2e13fd9 /Command/Add.hs
parent34c9eab951a73f06de70170cc2c2d40ce490ea70 (diff)
finish fixing windows timezone madness
Rather than calculating the TSDelta once, and caching it, this now reads the inode sential file's InodeCache file once, and then each time a new InodeCache is generated, looks at the sentinal file to get the current delta. This way, if the time zone changes while git-annex is running, it will adapt. This adds some inneffiency, but only on Windows, and only 1 stat per new file added. The worst innefficiency is that `git annex status` and `git annex sync` will now (on Windows) stat the inode sentinal file once per file in the repo. It would be more efficient to use getCurrentTimeZone, rather than needing to stat the sentinal file. This should be easy to do, once the time package gets my bugfix patch. This commit was sponsored by Jürgen Lüters.
Diffstat (limited to 'Command/Add.hs')
-rw-r--r--Command/Add.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/Command/Add.hs b/Command/Add.hs
index fc55eb655..ae895464e 100644
--- a/Command/Add.hs
+++ b/Command/Add.hs
@@ -155,7 +155,7 @@ ingest (Just source) = withTSDelta $ \delta -> do
backend <- chooseBackend $ keyFilename source
k <- genKey source backend
ms <- liftIO $ catchMaybeIO $ getFileStatus $ contentLocation source
- let mcache = toInodeCache delta =<< ms
+ mcache <- maybe (pure Nothing) (liftIO . toInodeCache delta) ms
case (mcache, inodeCache source) of
(_, Nothing) -> go k mcache ms
(Just newc, Just c) | compareStrong c newc -> go k mcache ms