aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-11-13 16:03:25 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-11-13 16:03:25 -0400
commit498c8e8544f04841d3221ce7a47b2409858e9f38 (patch)
treefb01cd7884ba68d6522c7dc3ad13821b555892a5
parentd9d79a7980b5c9a84823c0cf38750a0189d03b0a (diff)
fsck: avoid global checks if files specified
-rw-r--r--Command.hs6
-rw-r--r--Command/Fsck.hs19
-rw-r--r--Command/Init.hs2
-rw-r--r--doc/walkthrough.mdwn2
4 files changed, 17 insertions, 12 deletions
diff --git a/Command.hs b/Command.hs
index 4180155fa..3f68cf661 100644
--- a/Command.hs
+++ b/Command.hs
@@ -126,8 +126,8 @@ backendPairs :: SubCmdSeekBackendFiles
backendPairs a files = do
pairs <- Backend.chooseBackends files
return $ map a pairs
-withDescription :: SubCmdSeekStrings
-withDescription a params = return [a $ unwords params]
+withString :: SubCmdSeekStrings
+withString a params = return [a $ unwords params]
withFilesToBeCommitted :: SubCmdSeekStrings
withFilesToBeCommitted a params = do
repo <- Annex.gitRepo
@@ -143,8 +143,6 @@ withKeys :: SubCmdSeekStrings
withKeys a params = return $ map a params
withTempFile :: SubCmdSeekStrings
withTempFile a params = return $ map a params
-withNothing :: SubCmdSeekNothing
-withNothing a _ = return [a]
{- Default to acting on all files matching the seek action if
- none are specified. -}
diff --git a/Command/Fsck.hs b/Command/Fsck.hs
index b0b9f7bb6..85a26a89b 100644
--- a/Command/Fsck.hs
+++ b/Command/Fsck.hs
@@ -16,13 +16,20 @@ import Messages
import qualified Command.FsckFile
seek :: [SubCmdSeek]
-seek = [withNothing start, withAll withFilesInGit Command.FsckFile.start]
+seek = [withString start, withAll withFilesInGit Command.FsckFile.start]
-{- Checks the whole annex for problems. -}
-start :: SubCmdStart
-start = do
- showStart "fsck" ""
- return $ Just perform
+{- Checks the whole annex for problems, only if specific files were not
+ - specified. -}
+start :: SubCmdStartString
+start whatspecified = do
+ if (null whatspecified)
+ then do
+ showStart "fsck" ""
+ return $ Just perform
+ else do
+ showStart "fsck" ""
+ showNote "only checking specified files"
+ return $ Just $ return $ Just $ return True
perform :: SubCmdPerform
perform = do
diff --git a/Command/Init.hs b/Command/Init.hs
index e3b05a83f..8110948a4 100644
--- a/Command/Init.hs
+++ b/Command/Init.hs
@@ -19,7 +19,7 @@ import Version
import Messages
seek :: [SubCmdSeek]
-seek = [withDescription start]
+seek = [withString start]
{- Stores description for the repository etc. -}
start :: SubCmdStartString
diff --git a/doc/walkthrough.mdwn b/doc/walkthrough.mdwn
index a15f0a9a4..cdb2392e7 100644
--- a/doc/walkthrough.mdwn
+++ b/doc/walkthrough.mdwn
@@ -295,7 +295,7 @@ You can also specifiy the files to check. This is particularly useful if
you're using sha1 and don't want to spend a long time checksumming everything.
# git annex fsck my_cool_big_file
- fsck (checking for unused data...) ok
+ fsck (only checking specified files) ok
fsck my_cool_big_file (checksum...) ok
## fsck: When things go wrong