aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Command/Fsck.hs21
-rw-r--r--debian/changelog6
-rw-r--r--doc/design/assistant/blog/day_165__release_day.mdwn16
-rw-r--r--git-annex.cabal2
4 files changed, 37 insertions, 8 deletions
diff --git a/Command/Fsck.hs b/Command/Fsck.hs
index 7ea4294a5..870dac07d 100644
--- a/Command/Fsck.hs
+++ b/Command/Fsck.hs
@@ -16,6 +16,7 @@ import qualified Types.Backend
import qualified Types.Key
import qualified Backend
import Annex.Content
+import Annex.Content.Direct
import Annex.Perms
import Logs.Location
import Logs.Trust
@@ -301,14 +302,20 @@ checkKeySizeOr bad key file = case Types.Key.keySize key of
{- Runs the backend specific check on a key's content.
-
- - In direct mode, this is skipped, because files can change at any time. -}
+ - In direct mode this is not done if the file has clearly been modified,
+ - because modification of direct mode files is allowed. It's still done
+ - if the file does not appear modified, to catch disk corruption, etc.
+ -}
checkBackend :: Backend -> Key -> Annex Bool
-checkBackend backend key = ifM isDirect
- ( return True
- , do
- file <- inRepo $ gitAnnexLocation key
- checkBackendOr badContent backend key file
- )
+checkBackend backend key = do
+ file <- inRepo $ gitAnnexLocation key
+ ifM isDirect
+ ( ifM (goodContent key file)
+ ( checkBackendOr badContent backend key file
+ , return True
+ )
+ , checkBackendOr badContent backend key file
+ )
checkBackendRemote :: Backend -> Key -> Remote -> Maybe FilePath -> Annex Bool
checkBackendRemote backend key remote = maybe (return True) go
diff --git a/debian/changelog b/debian/changelog
index d4fe3df69..c3b1adf30 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+git-annex (3.20130108) UNRELEASED; urgency=low
+
+ * fsck: Better checking of file content in direct mode.
+
+ -- Joey Hess <joeyh@debian.org> Tue, 08 Jan 2013 12:37:38 -0400
+
git-annex (3.20130107) unstable; urgency=low
* webapp: Add UI to stop and restart assistant.
diff --git a/doc/design/assistant/blog/day_165__release_day.mdwn b/doc/design/assistant/blog/day_165__release_day.mdwn
new file mode 100644
index 000000000..725dd6dd7
--- /dev/null
+++ b/doc/design/assistant/blog/day_165__release_day.mdwn
@@ -0,0 +1,16 @@
+(Posted a day late.)
+
+Got `git annex add` (and `addurl`) working in direct mode. This allowed me
+to make `git annex sync` in direct mode no longer automatically add new
+files.
+
+It's also now safe to mix direct mode annexed files with regular files in
+git, in the same repository. Might have been safe all along, but I've
+tested it, and it certianly works now. You just have to be careful to not
+use `git commit -a` to commit changes to such files, since that'll also
+stage the entire content of direct mode files.
+
+Made a minor release for these recent changes and bugfixes. Recommended if
+you're using direct mode. Had to chase down a stupid typo I made yesterday
+that caused fsck to infinite loop if it found a corrupted file. Thank
+goodness for test suites.
diff --git a/git-annex.cabal b/git-annex.cabal
index 23773d02d..be739bb34 100644
--- a/git-annex.cabal
+++ b/git-annex.cabal
@@ -1,5 +1,5 @@
Name: git-annex
-Version: 3.20130107
+Version: 3.20130108
Cabal-Version: >= 1.8
License: GPL
Maintainer: Joey Hess <joey@kitenet.net>