git-annex 5.20150317 → 5.20150327
raw patch · 240 files changed
+9493/−3870 lines, 240 files
Files
- .gitignore +1/−2
- Annex.hs +0/−2
- Annex/Branch.hs +20/−8
- Annex/Hook.hs +3/−0
- Annex/Path.hs +17/−8
- Assistant/Threads/Committer.hs +9/−3
- Build/mdwn2man +2/−0
- CHANGELOG +25/−0
- CmdLine/GitAnnex.hs +4/−0
- CmdLine/GitAnnex/Options.hs +3/−0
- CmdLine/Option.hs +0/−3
- CmdLine/Seek.hs +2/−3
- Command.hs +0/−6
- Command/Assistant.hs +1/−1
- Command/CheckPresentKey.hs +36/−0
- Command/Copy.hs +14/−8
- Command/DiffDriver.hs +1/−1
- Command/Drop.hs +22/−18
- Command/Fsck.hs +1/−1
- Command/Get.hs +9/−6
- Command/Help.hs +12/−2
- Command/MetaData.hs +2/−2
- Command/Migrate.hs +3/−1
- Command/Mirror.hs +7/−9
- Command/Move.hs +1/−5
- Command/ReadPresentKey.hs +30/−0
- Command/Reinit.hs +1/−1
- Command/VCycle.hs +1/−1
- Command/Watch.hs +1/−1
- Command/Whereis.hs +1/−1
- Git/RefLog.hs +11/−6
- Makefile +10/−7
- Utility/SafeCommand.hs +4/−2
- Utility/Url.hs +6/−5
- debian/changelog +25/−0
- doc/bugs/--list-tests_runs_tests.mdwn +25/−0
- doc/bugs/GETURLS_doesn__39__t_return_URLs_if_prefix_is_provided.mdwn +35/−0
- doc/bugs/Google_Cloud_Storage_Nearline.mdwn +24/−0
- doc/bugs/One_Client_Not_Syncing_Content.mdwn +54/−0
- doc/bugs/Podcast_filename_encoding_breaks_Android_client.mdwn +34/−0
- doc/bugs/assistant_committer_crash_on_OSX_when_adding_lots_of_files.mdwn +22/−0
- doc/bugs/git_pack-objects_eats_all_teh_ram.mdwn +21/−0
- doc/bugs/stderr_of_special_external_remotes_is_swallowed.mdwn +10/−0
- doc/devblog/day_265__at_Dartmouth.mdwn +4/−0
- doc/devblog/day_266-267__man_page_split.mdwn +16/−0
- doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite.mdwn +10/−0
- doc/forum/Case-insensitive_search_with_find_list_whereis__63__.mdwn +1/−0
- doc/forum/How_to_delete_a_file_in_direct_mode__63__.mdwn +31/−0
- doc/forum/copy_and_move__63__.mdwn +19/−0
- doc/forum/git-annex_on_openSUSE.mdwn +20/−0
- doc/forum/notify-start_and_notify-finish_for_the_assistant.mdwn +5/−0
- doc/forum/remote-specific_meta-data.mdwn +5/−0
- doc/git-annex-add.mdwn +47/−0
- doc/git-annex-addunused.mdwn +24/−0
- doc/git-annex-addurl.mdwn +66/−0
- doc/git-annex-assistant.mdwn +47/−0
- doc/git-annex-checkpresentkey.mdwn +26/−0
- doc/git-annex-copy.mdwn +68/−0
- doc/git-annex-dead.mdwn +25/−0
- doc/git-annex-describe.mdwn +29/−0
- doc/git-annex-diffdriver.mdwn +32/−0
- doc/git-annex-direct.mdwn +28/−0
- doc/git-annex-drop.mdwn +51/−0
- doc/git-annex-dropkey.mdwn +28/−0
- doc/git-annex-dropunused.mdwn +39/−0
- doc/git-annex-edit.mdwn +18/−0
- doc/git-annex-enableremote.mdwn +56/−0
- doc/git-annex-examinekey.mdwn +51/−0
- doc/git-annex-find.mdwn +65/−0
- doc/git-annex-findref.mdwn +27/−0
- doc/git-annex-fix.mdwn +32/−0
- doc/git-annex-forget.mdwn +37/−0
- doc/git-annex-fromkey.mdwn +33/−0
- doc/git-annex-fsck.mdwn +93/−0
- doc/git-annex-fuzztest.mdwn +23/−0
- doc/git-annex-get.mdwn +58/−0
- doc/git-annex-group.mdwn +29/−0
- doc/git-annex-groupwanted.mdwn +32/−0
- doc/git-annex-import.mdwn +75/−0
- doc/git-annex-importfeed.mdwn +46/−0
- doc/git-annex-indirect.mdwn +26/−0
- doc/git-annex-info.mdwn +51/−0
- doc/git-annex-init.mdwn +27/−0
- doc/git-annex-initremote.mdwn +57/−0
- doc/git-annex-list.mdwn +34/−0
- doc/git-annex-lock.mdwn +29/−0
- doc/git-annex-log.mdwn +42/−0
- doc/git-annex-lookupkey.mdwn +24/−0
- doc/git-annex-map.mdwn +40/−0
- doc/git-annex-matching-options.mdwn +164/−0
- doc/git-annex-merge.mdwn +27/−0
- doc/git-annex-metadata.mdwn +83/−0
- doc/git-annex-migrate.mdwn +48/−0
- doc/git-annex-mirror.mdwn +57/−0
- doc/git-annex-move.mdwn +53/−0
- doc/git-annex-numcopies.mdwn +31/−0
- doc/git-annex-pre-commit.mdwn +27/−0
- doc/git-annex-preferred-content.mdwn +49/−0
- doc/git-annex-proxy.mdwn +38/−0
- doc/git-annex-readpresentkey.mdwn +28/−0
- doc/git-annex-registerurl.mdwn +28/−0
- doc/git-annex-reinit.mdwn +28/−0
- doc/git-annex-reinject.mdwn +32/−0
- doc/git-annex-rekey.mdwn +33/−0
- doc/git-annex-remotedaemon.mdwn +34/−0
- doc/git-annex-repair.mdwn +55/−0
- doc/git-annex-resolvemerge.mdwn +27/−0
- doc/git-annex-rmurl.mdwn +21/−0
- doc/git-annex-schedule.mdwn +47/−0
- doc/git-annex-semitrust.mdwn +24/−0
- doc/git-annex-setpresentkey.mdwn +25/−0
- doc/git-annex-status.mdwn +32/−0
- doc/git-annex-sync.mdwn +64/−0
- doc/git-annex-test.mdwn +32/−0
- doc/git-annex-testremote.mdwn +39/−0
- doc/git-annex-transferkey.mdwn +37/−0
- doc/git-annex-transferkeys.mdwn +29/−0
- doc/git-annex-trust.mdwn +25/−0
- doc/git-annex-unannex.mdwn +43/−0
- doc/git-annex-undo.mdwn +33/−0
- doc/git-annex-ungroup.mdwn +21/−0
- doc/git-annex-uninit.mdwn +25/−0
- doc/git-annex-unlock.mdwn +32/−0
- doc/git-annex-untrust.mdwn +25/−0
- doc/git-annex-unused.mdwn +39/−0
- doc/git-annex-upgrade.mdwn +32/−0
- doc/git-annex-vadd.mdwn +36/−0
- doc/git-annex-vcycle.mdwn +32/−0
- doc/git-annex-version.mdwn +30/−0
- doc/git-annex-vfilter.mdwn +30/−0
- doc/git-annex-vicfg.mdwn +23/−0
- doc/git-annex-view.mdwn +51/−0
- doc/git-annex-vpop.mdwn +32/−0
- doc/git-annex-wanted.mdwn +29/−0
- doc/git-annex-watch.mdwn +43/−0
- doc/git-annex-webapp.mdwn +49/−0
- doc/git-annex-whereis.mdwn +43/−0
- doc/git-annex-xmppgit.mdwn +23/−0
- doc/git-annex.mdwn +1176/−1882
- doc/install/Android/comment_11_3e7980603749665fafbdeb1b7ab068a5._comment +8/−0
- doc/internals.mdwn +1/−1
- doc/internals/hashing/comment_7_843592cf125be06fb316be43b85b0524._comment +8/−0
- doc/news/version_5.20150317.mdwn +3/−0
- doc/news/version_5.20150327.mdwn +22/−0
- doc/todo/Specify_a_version_for_the___39__feed__39___build_dependency..mdwn +9/−0
- doc/todo/What_if_the_active_annex__39__ed_files_were_not_symlinks__63__.mdwn +26/−0
- git-annex-shell.1 +0/−113
- git-annex.1 +0/−1758
- git-annex.cabal +1/−1
- man/git-annex-.1 +18/−0
- man/git-annex-add.1 +40/−0
- man/git-annex-addunused.1 +21/−0
- man/git-annex-addurl.1 +58/−0
- man/git-annex-assistant.1 +40/−0
- man/git-annex-checkpresentkey.1 +23/−0
- man/git-annex-copy.1 +56/−0
- man/git-annex-dead.1 +22/−0
- man/git-annex-describe.1 +26/−0
- man/git-annex-diffdriver.1 +29/−0
- man/git-annex-direct.1 +25/−0
- man/git-annex-drop.1 +44/−0
- man/git-annex-dropkey.1 +26/−0
- man/git-annex-dropunused.1 +34/−0
- man/git-annex-edit.1 +16/−0
- man/git-annex-enableremote.1 +53/−0
- man/git-annex-examinekey.1 +45/−0
- man/git-annex-find.1 +58/−0
- man/git-annex-findref.1 +23/−0
- man/git-annex-fix.1 +28/−0
- man/git-annex-forget.1 +33/−0
- man/git-annex-fromkey.1 +29/−0
- man/git-annex-fsck.1 +79/−0
- man/git-annex-fuzztest.1 +20/−0
- man/git-annex-get.1 +49/−0
- man/git-annex-group.1 +26/−0
- man/git-annex-groupwanted.1 +29/−0
- man/git-annex-import.1 +66/−0
- man/git-annex-importfeed.1 +40/−0
- man/git-annex-indirect.1 +23/−0
- man/git-annex-info.1 +44/−0
- man/git-annex-init.1 +24/−0
- man/git-annex-initremote.1 +53/−0
- man/git-annex-list.1 +29/−0
- man/git-annex-lock.1 +25/−0
- man/git-annex-log.1 +35/−0
- man/git-annex-lookupkey.1 +21/−0
- man/git-annex-map.1 +36/−0
- man/git-annex-matching-options.1 +142/−0
- man/git-annex-merge.1 +24/−0
- man/git-annex-metadata.1 +69/−0
- man/git-annex-migrate.1 +42/−0
- man/git-annex-mirror.1 +50/−0
- man/git-annex-move.1 +44/−0
- man/git-annex-numcopies.1 +28/−0
- man/git-annex-pre-commit.1 +24/−0
- man/git-annex-preferred-content.1 +47/−0
- man/git-annex-proxy.1 +35/−0
- man/git-annex-readpresentkey.1 +25/−0
- man/git-annex-registerurl.1 +25/−0
- man/git-annex-reinit.1 +25/−0
- man/git-annex-reinject.1 +29/−0
- man/git-annex-rekey.1 +28/−0
- man/git-annex-remotedaemon.1 +31/−0
- man/git-annex-repair.1 +51/−0
- man/git-annex-resolvemerge.1 +24/−0
- man/git-annex-rmurl.1 +18/−0
- man/git-annex-schedule.1 +43/−0
- man/git-annex-semitrust.1 +21/−0
- man/git-annex-setpresentkey.1 +22/−0
- man/git-annex-shell.1 +113/−0
- man/git-annex-status.1 +28/−0
- man/git-annex-sync.1 +57/−0
- man/git-annex-test.1 +28/−0
- man/git-annex-testremote.1 +34/−0
- man/git-annex-transferkey.1 +31/−0
- man/git-annex-transferkeys.1 +26/−0
- man/git-annex-trust.1 +22/−0
- man/git-annex-unannex.1 +38/−0
- man/git-annex-undo.1 +30/−0
- man/git-annex-ungroup.1 +18/−0
- man/git-annex-uninit.1 +22/−0
- man/git-annex-unlock.1 +28/−0
- man/git-annex-untrust.1 +22/−0
- man/git-annex-unused.1 +34/−0
- man/git-annex-upgrade.1 +29/−0
- man/git-annex-vadd.1 +33/−0
- man/git-annex-vcycle.1 +29/−0
- man/git-annex-version.1 +27/−0
- man/git-annex-vfilter.1 +27/−0
- man/git-annex-vicfg.1 +20/−0
- man/git-annex-view.1 +48/−0
- man/git-annex-vpop.1 +29/−0
- man/git-annex-wanted.1 +26/−0
- man/git-annex-watch.1 +38/−0
- man/git-annex-webapp.1 +44/−0
- man/git-annex-whereis.1 +38/−0
- man/git-annex-xmppgit.1 +20/−0
- man/git-annex.1 +1079/−0
- standalone/linux/skel/git-annex +3/−0
- standalone/windows/build-simple.sh +1/−2
.gitignore view
@@ -13,8 +13,7 @@ Build/LinuxMkLibs Build/BuildVersion git-annex-git-annex.1-git-annex-shell.1+man git-union-merge git-union-merge.1 doc/.ikiwiki
Annex.hs view
@@ -100,7 +100,6 @@ , output :: MessageState , force :: Bool , fast :: Bool- , auto :: Bool , daemon :: Bool , branchstate :: BranchState , repoqueue :: Maybe Git.Queue.Queue@@ -146,7 +145,6 @@ , output = defaultMessageState , force = False , fast = False- , auto = False , daemon = False , branchstate = startBranchState , repoqueue = Nothing
Annex/Branch.hs view
@@ -38,6 +38,7 @@ import qualified Git import qualified Git.Command import qualified Git.Ref+import qualified Git.RefLog import qualified Git.Sha import qualified Git.Branch import qualified Git.UnionMerge@@ -55,6 +56,7 @@ import qualified Annex.Queue import Annex.Branch.Transitions import qualified Annex+import Annex.Hook {- Name of the branch that is used to store git-annex's information. -} name :: Git.Ref@@ -166,13 +168,16 @@ mapM_ checkBranchDifferences refs mergeIndex jl refs let commitrefs = nub $ fullname:refs- unlessM (handleTransitions jl localtransitions commitrefs) $ do- ff <- if dirty- then return False- else inRepo $ Git.Branch.fastForward fullname refs- if ff- then updateIndex jl branchref- else commitIndex jl branchref merge_desc commitrefs+ ifM (handleTransitions jl localtransitions commitrefs)+ ( runAnnexHook postUpdateAnnexHook+ , do+ ff <- if dirty+ then return False+ else inRepo $ Git.Branch.fastForward fullname refs+ if ff+ then updateIndex jl branchref+ else commitIndex jl branchref merge_desc commitrefs+ ) liftIO cleanjournal {- Gets the content of a file, which may be in the journal, or in the index@@ -201,7 +206,13 @@ getRaw = getRef fullname getHistorical :: RefDate -> FilePath -> Annex String-getHistorical date = getRef (Git.Ref.dateRef fullname date)+getHistorical date file =+ -- This check avoids some ugly error messages when the reflog+ -- is empty.+ ifM (null <$> inRepo (Git.RefLog.get' [Param "-n1"] fullname))+ ( error ("No reflog for " ++ fromRef fullname)+ , getRef (Git.Ref.dateRef fullname date) file+ ) getRef :: Ref -> FilePath -> Annex String getRef ref file = withIndex $ decodeBS <$> catFile ref file@@ -384,6 +395,7 @@ f <- fromRepo gitAnnexIndexStatus liftIO $ writeFile f $ fromRef ref ++ "\n" setAnnexFilePerm f+ runAnnexHook postUpdateAnnexHook {- Stages the journal into the index and returns an action that will - clean up the staged journal files, which should only be run once
Annex/Hook.hs view
@@ -25,6 +25,9 @@ preCommitAnnexHook :: Git.Hook preCommitAnnexHook = Git.Hook "pre-commit-annex" "" +postUpdateAnnexHook :: Git.Hook+postUpdateAnnexHook = Git.Hook "post-update-annex" ""+ mkHookScript :: String -> String mkHookScript s = unlines [ shebang_local
Annex/Path.hs view
@@ -11,23 +11,32 @@ import Common import Config.Files-import System.Environment+import Utility.Env +import System.Environment (getExecutablePath)+ {- A fully qualified path to the currently running git-annex program. - - getExecutablePath is available since ghc 7.4.2. On OSs it supports - well, it returns the complete path to the program. But, on other OSs, - it might return just the basename. Fall back to reading the programFile, - or searching for the command name in PATH.+ -+ - The standalone build runs git-annex via ld.so, and defeats+ - getExecutablePath. It sets GIT_ANNEX_PROGRAMPATH to the correct path+ - to the wrapper script to use. -} programPath :: IO FilePath-programPath = do+programPath = go =<< getEnv "GIT_ANNEX_PROGRAMPATH"+ where+ go (Just p) = return p+ go Nothing = do #if MIN_VERSION_base(4,6,0)- exe <- getExecutablePath- p <- if isAbsolute exe- then return exe- else readProgramFile+ exe <- getExecutablePath+ p <- if isAbsolute exe+ then return exe+ else readProgramFile #else- p <- readProgramFile+ p <- readProgramFile #endif- maybe cannotFindProgram return =<< searchPath p+ maybe cannotFindProgram return =<< searchPath p
Assistant/Threads/Committer.hs view
@@ -285,11 +285,17 @@ return $ r ++ added ++ otherchanges where (incomplete, otherchanges) = partition (\c -> isPendingAddChange c || isInProcessAddChange c) cs- + + -- Find files that are actually new, and not unlocked annexed+ -- files. The ls-files is run on a batch of files. findnew [] = return ([], noop) findnew pending@(exemplar:_) = do- (newfiles, cleanup) <- liftAnnex $- inRepo (Git.LsFiles.notInRepo False $ map changeFile pending)+ let segments = segmentXargs $ map changeFile pending+ rs <- liftAnnex $ forM segments $ \fs ->+ inRepo (Git.LsFiles.notInRepo False fs)+ let (newfiles, cleanup) = foldl'+ (\(l1, a1) (l2, a2) -> (l1 ++ l2, a1 >> a2))+ ([], return True) rs -- note: timestamp info is lost here let ts = changeTime exemplar return (map (PendingAddChange ts) newfiles, void $ liftIO cleanup)
Build/mdwn2man view
@@ -2,6 +2,8 @@ # Warning: hack my $prog=shift;+$prog=~s/\.\d+$//;+$prog=~s/man\///; my $section=shift; print ".TH $prog $section\n";
CHANGELOG view
@@ -1,3 +1,28 @@+git-annex (5.20150327) unstable; urgency=medium++ * readpresentkey: New plumbing command for checking location log.+ * checkpresentkey: New plumbing command to check if a key can be verified+ to be present on a remote.+ * Added a post-update-annex hook, which is run after the git-annex branch+ is updated. Needed for git update-server-info.+ * migrate: --force will force migration of keys already using the+ destination backend. Useful in rare cases.+ * Man pages for individual commands now available, and can be+ opened using "git annex help <command>"+ * --auto is no longer a global option; only get, drop, and copy+ accept it. (Not a behavior change unless you were passing it to a+ command that ignored it.)+ * Improve error message when --in @date is used and there is no+ reflog for the git-annex branch.+ * assistant: Committing a whole lot of files at once could overflow+ command-line length limits and cause the commit to fail. This+ only happened when using the assistant in an indirect mode repository.+ * Work around curl bug when asked to download an empty url to a file.+ * Fix bug introduced in the last release that broke git-annex sync+ when git-annex was installed from the standalone tarball.++ -- Joey Hess <id@joeyh.name> Fri, 27 Mar 2015 13:10:59 -0400+ git-annex (5.20150317) unstable; urgency=medium * fsck: Incremental fsck uses sqlite to store its records, instead
CmdLine/GitAnnex.hs view
@@ -29,6 +29,8 @@ import qualified Command.TransferKey import qualified Command.TransferKeys import qualified Command.SetPresentKey+import qualified Command.ReadPresentKey+import qualified Command.CheckPresentKey import qualified Command.ReKey import qualified Command.MetaData import qualified Command.View@@ -156,6 +158,8 @@ , Command.TransferKey.cmd , Command.TransferKeys.cmd , Command.SetPresentKey.cmd+ , Command.ReadPresentKey.cmd+ , Command.CheckPresentKey.cmd , Command.ReKey.cmd , Command.MetaData.cmd , Command.View.cmd
CmdLine/GitAnnex/Options.hs view
@@ -142,3 +142,6 @@ timeLimitOption = Option ['T'] ["time-limit"] (ReqArg Limit.addTimeLimit paramTime) "stop after the specified amount of time"++autoOption :: Option+autoOption = flagOption ['a'] "auto" "automatic mode"
CmdLine/Option.hs view
@@ -30,8 +30,6 @@ "allow actions that may lose annexed data" , Option ['F'] ["fast"] (NoArg (setfast True)) "avoid slow operations"- , Option ['a'] ["auto"] (NoArg (setauto True))- "automatic mode" , Option ['q'] ["quiet"] (NoArg (Annex.setOutput QuietOutput)) "avoid verbose output" , Option ['v'] ["verbose"] (NoArg (Annex.setOutput NormalOutput))@@ -50,7 +48,6 @@ where setforce v = Annex.changeState $ \s -> s { Annex.force = v } setfast v = Annex.changeState $ \s -> s { Annex.fast = v }- setauto v = Annex.changeState $ \s -> s { Annex.auto = v } setforcebackend v = Annex.changeState $ \s -> s { Annex.forcebackend = Just v } setdebug = Annex.changeGitConfig $ \c -> c { annexDebug = True } unsetdebug = Annex.changeGitConfig $ \c -> c { annexDebug = False }
CmdLine/Seek.hs view
@@ -173,13 +173,12 @@ - - Otherwise, fall back to a regular CommandSeek action on - whatever params were passed. -}-withKeyOptions :: (Key -> CommandStart) -> CommandSeek -> CommandSeek-withKeyOptions keyop fallbackop params = do+withKeyOptions :: Bool -> (Key -> CommandStart) -> CommandSeek -> CommandSeek+withKeyOptions auto keyop fallbackop params = do bare <- fromRepo Git.repoIsLocalBare allkeys <- Annex.getFlag "all" unused <- Annex.getFlag "unused" specifickey <- Annex.getField "key"- auto <- Annex.getState Annex.auto when (auto && bare) $ error "Cannot use --auto in a bare repository" case (allkeys, unused, null params, specifickey) of
Command.hs view
@@ -17,13 +17,11 @@ whenAnnexed, ifAnnexed, isBareRepo,- checkAuto, module ReExported ) where import Common.Annex import qualified Backend-import qualified Annex import qualified Git import Types.Command as ReExported import Types.Option as ReExported@@ -79,7 +77,3 @@ isBareRepo :: Annex Bool isBareRepo = fromRepo Git.repoIsLocalBare--checkAuto :: Annex Bool -> Annex Bool-checkAuto checker = ifM (Annex.getState Annex.auto)- ( checker , return True )
Command/Assistant.hs view
@@ -22,7 +22,7 @@ cmd :: [Command] cmd = [noRepo checkAutoStart $ dontCheck repoExists $ withOptions options $ notBareRepo $ command "assistant" paramNothing seek SectionCommon- "automatically handle changes"]+ "automatically sync changes"] options :: [Option] options =
+ Command/CheckPresentKey.hs view
@@ -0,0 +1,36 @@+{- git-annex command+ -+ - Copyright 2015 Joey Hess <id@joeyh.name>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Command.CheckPresentKey where++import Common.Annex+import Command+import Types.Key+import qualified Remote+import Annex+import Types.Messages++cmd :: [Command]+cmd = [noCommit $ command "checkpresentkey" (paramPair paramKey paramRemote) seek+ SectionPlumbing "check if key is present in remote"] ++seek :: CommandSeek+seek = withWords start++start :: [String] -> CommandStart+start (ks:rn:[]) = do+ setOutput QuietOutput+ maybe (error "Unknown remote") (go <=< flip Remote.hasKey k)+ =<< Remote.byNameWithUUID (Just rn)+ where+ k = fromMaybe (error "bad key") (file2key ks)+ go (Right True) = liftIO exitSuccess+ go (Right False) = liftIO exitFailure+ go (Left e) = liftIO $ do+ hPutStrLn stderr e+ exitWith $ ExitFailure 100+start _ = error "Wrong number of parameters"
Command/Copy.hs view
@@ -15,26 +15,32 @@ import Config.NumCopies cmd :: [Command]-cmd = [withOptions Command.Move.moveOptions $ command "copy" paramPaths seek+cmd = [withOptions copyOptions $ command "copy" paramPaths seek SectionCommon "copy content of files to/from another repository"] +copyOptions :: [Option]+copyOptions = Command.Move.moveOptions ++ [autoOption]+ seek :: CommandSeek seek ps = do to <- getOptionField toOption Remote.byNameWithUUID from <- getOptionField fromOption Remote.byNameWithUUID- withKeyOptions+ auto <- getOptionFlag autoOption+ withKeyOptions auto (Command.Move.startKey to from False)- (withFilesInGit $ whenAnnexed $ start to from)+ (withFilesInGit $ whenAnnexed $ start auto to from) ps {- A copy is just a move that does not delete the source file.- - However, --auto mode avoids unnecessary copies, and avoids getting or+ - However, auto mode avoids unnecessary copies, and avoids getting or - sending non-preferred content. -}-start :: Maybe Remote -> Maybe Remote -> FilePath -> Key -> CommandStart-start to from file key = stopUnless shouldCopy $ +start :: Bool -> Maybe Remote -> Maybe Remote -> FilePath -> Key -> CommandStart+start auto to from file key = stopUnless shouldCopy $ Command.Move.start to from False file key where- shouldCopy = checkAuto (check <||> numCopiesCheck file key (<))- check = case to of+ shouldCopy+ | auto = want <||> numCopiesCheck file key (<)+ | otherwise = return True+ want = case to of Nothing -> wantGet False (Just key) (Just file) Just r -> wantSend False (Just key) (Just file) (Remote.uuid r)
Command/DiffDriver.hs view
@@ -15,7 +15,7 @@ cmd :: [Command] cmd = [dontCheck repoExists $- command "diffdriver" ("[-- cmd --opts]") seek+ command "diffdriver" ("[-- cmd --]") seek SectionPlumbing "external git diff driver shim"] seek :: CommandSeek
Command/Drop.hs view
@@ -27,7 +27,7 @@ SectionCommon "indicate content of files not currently wanted"] dropOptions :: [Option]-dropOptions = dropFromOption : annexedMatchingOptions+dropOptions = dropFromOption : annexedMatchingOptions ++ [autoOption] dropFromOption :: Option dropFromOption = fieldOption ['f'] "from" paramRemote "drop content from a remote"@@ -35,11 +35,12 @@ seek :: CommandSeek seek ps = do from <- getOptionField dropFromOption Remote.byNameWithUUID- withFilesInGit (whenAnnexed $ start from) ps+ auto <- getOptionFlag autoOption+ withFilesInGit (whenAnnexed $ start auto from) ps -start :: Maybe Remote -> FilePath -> Key -> CommandStart-start from file key = checkDropAuto from file key $ \numcopies ->- stopUnless (checkAuto $ wantDrop False (Remote.uuid <$> from) (Just key) (Just file)) $+start :: Bool -> Maybe Remote -> FilePath -> Key -> CommandStart+start auto from file key = checkDropAuto auto from file key $ \numcopies ->+ stopUnless want $ case from of Nothing -> startLocal (Just file) numcopies key Nothing Just remote -> do@@ -47,6 +48,10 @@ if Remote.uuid remote == u then startLocal (Just file) numcopies key Nothing else startRemote (Just file) numcopies key remote+ where+ want+ | auto = wantDrop False (Remote.uuid <$> from) (Just key) (Just file)+ | otherwise = return True startLocal :: AssociatedFile -> NumCopies -> Key -> Maybe Remote -> CommandStart startLocal afile numcopies key knownpresentremote = stopUnless (inAnnex key) $ do@@ -182,17 +187,16 @@ {- In auto mode, only runs the action if there are enough - copies on other semitrusted repositories. -}-checkDropAuto :: Maybe Remote -> FilePath -> Key -> (NumCopies -> CommandStart) -> CommandStart-checkDropAuto mremote file key a = do- numcopies <- getFileNumCopies file- Annex.getState Annex.auto >>= auto numcopies+checkDropAuto :: Bool -> Maybe Remote -> FilePath -> Key -> (NumCopies -> CommandStart) -> CommandStart+checkDropAuto auto mremote file key a = go =<< getFileNumCopies file where- auto numcopies False = a numcopies- auto numcopies True = do- locs <- Remote.keyLocations key- uuid <- getUUID- let remoteuuid = fromMaybe uuid $ Remote.uuid <$> mremote- locs' <- trustExclude UnTrusted $ filter (/= remoteuuid) locs- if NumCopies (length locs') >= numcopies- then a numcopies- else stop+ go numcopies+ | auto = do+ locs <- Remote.keyLocations key+ uuid <- getUUID+ let remoteuuid = fromMaybe uuid $ Remote.uuid <$> mremote+ locs' <- trustExclude UnTrusted $ filter (/= remoteuuid) locs+ if NumCopies (length locs') >= numcopies+ then a numcopies+ else stop+ | otherwise = a numcopies
Command/Fsck.hs view
@@ -69,7 +69,7 @@ from <- getOptionField fsckFromOption Remote.byNameWithUUID u <- maybe getUUID (pure . Remote.uuid) from i <- getIncremental u- withKeyOptions+ withKeyOptions False (\k -> startKey i k =<< getNumCopies) (withFilesInGit $ whenAnnexed $ start from i) ps
Command/Get.hs view
@@ -21,20 +21,23 @@ SectionCommon "make content of annexed files available"] getOptions :: [Option]-getOptions = fromOption : annexedMatchingOptions ++ keyOptions+getOptions = fromOption : annexedMatchingOptions ++ keyOptions ++ [autoOption] seek :: CommandSeek seek ps = do from <- getOptionField fromOption Remote.byNameWithUUID- withKeyOptions+ auto <- getOptionFlag autoOption+ withKeyOptions auto (startKeys from)- (withFilesInGit $ whenAnnexed $ start from)+ (withFilesInGit $ whenAnnexed $ start auto from) ps -start :: Maybe Remote -> FilePath -> Key -> CommandStart-start from file key = start' expensivecheck from key (Just file)+start :: Bool -> Maybe Remote -> FilePath -> Key -> CommandStart+start auto from file key = start' expensivecheck from key (Just file) where- expensivecheck = checkAuto (numCopiesCheck file key (<) <||> wantGet False (Just key) (Just file))+ expensivecheck+ | auto = numCopiesCheck file key (<) <||> wantGet False (Just key) (Just file)+ | otherwise = return True startKeys :: Maybe Remote -> Key -> CommandStart startKeys from key = start' (return True) from key Nothing
Command/Help.hs view
@@ -23,7 +23,7 @@ cmd :: [Command] cmd = [noCommit $ noRepo startNoRepo $ dontCheck repoExists $- command "help" paramNothing seek SectionQuery "display help"]+ command "help" (paramOptional "COMMAND") seek SectionCommon "display help"] seek :: CommandSeek seek = withWords start@@ -38,6 +38,7 @@ start' :: [String] -> IO () start' ["options"] = showCommonOptions+start' [c] = showGitHelp c start' _ = showGeneralHelp showCommonOptions :: IO ()@@ -58,8 +59,17 @@ , Command.Fsck.cmd ] , "Run 'git-annex' for a complete command list."- , "Run 'git-annex command --help' for help on a specific command."+ , "Run 'git-annex help command' for help on a specific command." , "Run `git annex help options' for a list of common options." ] where cmdline c = "\t" ++ cmdname c ++ "\t" ++ cmddesc c++showGitHelp :: String -> IO ()+showGitHelp c = + unlessM (githelp) $+ putStrLn $ "View online help at " ++ url+ where+ githelp = boolSystem "git" [Param "help", Param fullc]+ fullc = "git-annex-" ++ c+ url = "https://git-annex.branchable.com/" ++ fullc ++ "/"
Command/MetaData.hs view
@@ -19,7 +19,7 @@ cmd :: [Command] cmd = [withOptions metaDataOptions $ command "metadata" paramPaths seek- SectionMetaData "sets metadata of a file"]+ SectionMetaData "sets or gets metadata of a file"] metaDataOptions :: [Option] metaDataOptions =@@ -61,7 +61,7 @@ let seeker = if null modmeta then withFilesInGit else withFilesInGitNonRecursive- withKeyOptions+ withKeyOptions False (startKeys now getfield modmeta) (seeker $ whenAnnexed $ start now getfield modmeta) ps
Command/Migrate.hs view
@@ -16,6 +16,7 @@ import Annex.Content import qualified Command.ReKey import qualified Command.Fsck+import qualified Annex cmd :: [Command] cmd = [notDirect $ withOptions annexedMatchingOptions $@@ -27,13 +28,14 @@ start :: FilePath -> Key -> CommandStart start file key = do+ forced <- Annex.getState Annex.force v <- Backend.getBackend file key case v of Nothing -> stop Just oldbackend -> do exists <- inAnnex key newbackend <- choosebackend =<< chooseBackend file- if (newbackend /= oldbackend || upgradableKey oldbackend key) && exists+ if (newbackend /= oldbackend || upgradableKey oldbackend key || forced) && exists then do showStart "migrate" file next $ perform file key oldbackend newbackend
Command/Mirror.hs view
@@ -14,19 +14,20 @@ import qualified Command.Get import qualified Remote import Annex.Content-import qualified Annex import Config.NumCopies cmd :: [Command]-cmd = [withOptions (fromToOptions ++ annexedMatchingOptions ++ keyOptions) $- command "mirror" paramPaths seek- SectionCommon "mirror content of files to/from another repository"]+cmd = [withOptions mirrorOptions $ command "mirror" paramPaths seek+ SectionCommon "mirror content of files to/from another repository"] +mirrorOptions :: [Option]+mirrorOptions = fromToOptions ++ annexedMatchingOptions ++ keyOptions+ seek :: CommandSeek seek ps = do to <- getOptionField toOption Remote.byNameWithUUID from <- getOptionField fromOption Remote.byNameWithUUID- withKeyOptions+ withKeyOptions False (startKey to from Nothing) (withFilesInGit $ whenAnnexed $ start to from) ps@@ -35,16 +36,13 @@ start to from file = startKey to from (Just file) startKey :: Maybe Remote -> Maybe Remote -> Maybe FilePath -> Key -> CommandStart-startKey to from afile key = do- noAuto+startKey to from afile key = case (from, to) of (Nothing, Nothing) -> error "specify either --from or --to" (Nothing, Just r) -> mirrorto r (Just r, Nothing) -> mirrorfrom r _ -> error "only one of --from or --to can be specified" where- noAuto = whenM (Annex.getState Annex.auto) $- error "--auto is not supported for mirror" mirrorto r = ifM (inAnnex key) ( Command.Move.toStart r False afile key , do
Command/Move.hs view
@@ -28,7 +28,7 @@ seek ps = do to <- getOptionField toOption Remote.byNameWithUUID from <- getOptionField fromOption Remote.byNameWithUUID- withKeyOptions+ withKeyOptions False (startKey to from True) (withFilesInGit $ whenAnnexed $ start to from True) ps@@ -41,15 +41,11 @@ start' :: Maybe Remote -> Maybe Remote -> Bool -> AssociatedFile -> Key -> CommandStart start' to from move afile key = do- noAuto case (from, to) of (Nothing, Nothing) -> error "specify either --from or --to" (Nothing, Just dest) -> toStart dest move afile key (Just src, Nothing) -> fromStart src move afile key _ -> error "only one of --from or --to can be specified"- where- noAuto = when move $ whenM (Annex.getState Annex.auto) $ error- "--auto is not supported for move" showMoveAction :: Bool -> Key -> AssociatedFile -> Annex () showMoveAction move = showStart' (if move then "move" else "copy")
+ Command/ReadPresentKey.hs view
@@ -0,0 +1,30 @@+{- git-annex command+ -+ - Copyright 2015 Joey Hess <id@joeyh.name>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Command.ReadPresentKey where++import Common.Annex+import Command+import Logs.Location+import Types.Key++cmd :: [Command]+cmd = [noCommit $ command "readpresentkey" (paramPair paramKey paramUUID) seek+ SectionPlumbing "read records of where key is present"] ++seek :: CommandSeek+seek = withWords start++start :: [String] -> CommandStart+start (ks:us:[]) = do+ ls <- loggedLocations k+ if toUUID us `elem` ls+ then liftIO exitSuccess+ else liftIO exitFailure+ where+ k = fromMaybe (error "bad key") (file2key ks)+start _ = error "Wrong number of parameters"
Command/Reinit.hs view
@@ -16,7 +16,7 @@ cmd :: [Command] cmd = [dontCheck repoExists $- command "reinit" (paramUUID ++ " or " ++ paramDesc) seek SectionUtility ""]+ command "reinit" (paramUUID ++ "|" ++ paramDesc) seek SectionUtility "initialize repository, reusing old UUID"] seek :: CommandSeek seek = withWords start
Command/VCycle.hs view
@@ -16,7 +16,7 @@ cmd :: [Command] cmd = [notBareRepo $ notDirect $- command "vcycle" paramNothing seek SectionUtility+ command "vcycle" paramNothing seek SectionMetaData "switch view to next layout"] seek :: CommandSeek
Command/Watch.hs view
@@ -14,7 +14,7 @@ cmd :: [Command] cmd = [notBareRepo $ withOptions [foregroundOption, stopOption] $ - command "watch" paramNothing seek SectionCommon "watch for changes"]+ command "watch" paramNothing seek SectionCommon "watch for changes and autocommit"] seek :: CommandSeek seek ps = do
Command/Whereis.hs view
@@ -23,7 +23,7 @@ seek :: CommandSeek seek ps = do m <- remoteMap id- withKeyOptions+ withKeyOptions False (startKeys m) (withFilesInGit $ whenAnnexed $ start m) ps
Git/RefLog.hs view
@@ -14,9 +14,14 @@ {- Gets the reflog for a given branch. -} get :: Branch -> Repo -> IO [Sha]-get b = mapMaybe extractSha . lines <$$> pipeReadStrict- [ Param "log"- , Param "-g"- , Param "--format=%H"- , Param (fromRef b)- ]+get = get' []++get' :: [CommandParam] -> Branch -> Repo -> IO [Sha]+get' ps b = mapMaybe extractSha . lines <$$> pipeReadStrict ps'+ where+ ps' = + [ Param "log"+ , Param "-g"+ , Param "--format=%H"+ , Param (fromRef b)+ ] ++ ps
Makefile view
@@ -1,4 +1,4 @@-mans=git-annex.1 git-annex-shell.1+mans=$(shell find doc -maxdepth 1 -name git-annex*.mdwn | sed -e 's/^doc/man/' -e 's/\.mdwn/\.1/') all=git-annex $(mans) docs CABAL?=cabal # set to "./Setup" if you lack a cabal program@@ -24,10 +24,8 @@ $(CABAL) build ln -sf dist/build/git-annex/git-annex git-annex -git-annex.1: doc/git-annex.mdwn- ./Build/mdwn2man git-annex 1 doc/git-annex.mdwn > git-annex.1-git-annex-shell.1: doc/git-annex-shell.mdwn- ./Build/mdwn2man git-annex-shell 1 doc/git-annex-shell.mdwn > git-annex-shell.1+man/%.1: doc/%.mdwn+ ./Build/mdwn2man $@ 1 $< > $@ # These are not built normally. git-union-merge.1: doc/git-union-merge.mdwn@@ -35,7 +33,7 @@ git-union-merge: $(GHC) --make -threaded $@ -install-mans: $(mans)+install-mans: mans install -d $(DESTDIR)$(PREFIX)/$(SHAREDIR)/man/man1 install -m 0644 $(mans) $(DESTDIR)$(PREFIX)/$(SHAREDIR)/man/man1 @@ -69,7 +67,12 @@ IKIWIKI=ikiwiki endif -docs: $(mans)+mans: man $(mans)++man:+ mkdir -p man++docs: mans $(IKIWIKI) doc html -v --wikiname git-annex --plugin=goodstuff \ --no-usedirs --disable-plugin=openid --plugin=sidebar \ --underlaydir=/dev/null --disable-plugin=shortcut \
Utility/SafeCommand.hs view
@@ -114,6 +114,8 @@ len = length f newlen = accumlen + len - {- 10k of filenames per command, well under Linux's 20k limit;- - allows room for other parameters etc. -}+ {- 10k of filenames per command, well under 100k limit+ - of Linux (and OSX has a similar limit);+ - allows room for other parameters etc. Also allows for+ - eg, multibyte characters. -} maxlen = 10240
Utility/Url.hs view
@@ -209,9 +209,6 @@ case parseURIRelaxed url of Just u | uriScheme u == "file:" -> do- -- curl does not create destination file- -- for an empty file:// url, so pre-create- writeFile file "" curl | otherwise -> ifM (inPath "wget") (wget , curl) _ -> return False@@ -240,8 +237,12 @@ - the remainder to download as the whole file, - and not indicating how much percent was - downloaded before the resume. -}- curl = go "curl" $ headerparams ++ quietopt "-s" ++- [Params "-f -L -C - -# -o"]+ curl = do+ -- curl does not create destination file+ -- if the url happens to be empty, so pre-create.+ writeFile file ""+ go "curl" $ headerparams ++ quietopt "-s" +++ [Params "-f -L -C - -# -o"] go cmd opts = boolSystem cmd $ addUserAgent uo $ reqParams uo++opts++[File file, File url] quietopt s
debian/changelog view
@@ -1,3 +1,28 @@+git-annex (5.20150327) unstable; urgency=medium++ * readpresentkey: New plumbing command for checking location log.+ * checkpresentkey: New plumbing command to check if a key can be verified+ to be present on a remote.+ * Added a post-update-annex hook, which is run after the git-annex branch+ is updated. Needed for git update-server-info.+ * migrate: --force will force migration of keys already using the+ destination backend. Useful in rare cases.+ * Man pages for individual commands now available, and can be+ opened using "git annex help <command>"+ * --auto is no longer a global option; only get, drop, and copy+ accept it. (Not a behavior change unless you were passing it to a+ command that ignored it.)+ * Improve error message when --in @date is used and there is no+ reflog for the git-annex branch.+ * assistant: Committing a whole lot of files at once could overflow+ command-line length limits and cause the commit to fail. This+ only happened when using the assistant in an indirect mode repository.+ * Work around curl bug when asked to download an empty url to a file.+ * Fix bug introduced in the last release that broke git-annex sync+ when git-annex was installed from the standalone tarball.++ -- Joey Hess <id@joeyh.name> Fri, 27 Mar 2015 13:10:59 -0400+ git-annex (5.20150317) unstable; urgency=medium * fsck: Incremental fsck uses sqlite to store its records, instead
+ doc/bugs/--list-tests_runs_tests.mdwn view
@@ -0,0 +1,25 @@+### Please describe the problem.+Running "git annex test --list-tests" seems to produce the same output as "git annex test" rather than list tests.++### What steps will reproduce the problem?+git annex test --list-tests++### What version of git-annex are you using? On what operating system?+5.20150317-g237d5b0 on Centos 6.6 and Ubuntu 12.04.5++5.20141125 on Mac OS X 10.10.2++### Please provide any additional information below.++[[!format sh """+# this is version 5.20150317-g237d5b0 on Ubuntu+$ ./git-annex test --list-tests+Tests+ QuickCheck+ prop_idempotent_deencode_git: OK (0.15s)+ +++ OK, passed 1000 tests.+ prop_idempotent_deencode: OK (0.12s)+ +++ OK, passed 1000 tests.+[snip all the passing tests]+All 140 tests passed (305.69s)+"""]]
+ doc/bugs/GETURLS_doesn__39__t_return_URLs_if_prefix_is_provided.mdwn view
@@ -0,0 +1,35 @@+### Please describe the problem.++docs say+GETURLS Key Prefix+Gets the recorded urls where a Key can be downloaded from. Only urls that start with the Prefix will be returned. The Prefix may be empty to get all urls. (git-annex replies one or more times with VALUE for each url. The final VALUE has an empty value, indicating the end of the url list.++but when I am trying with a prefix -- doesn't return any... expected that one which is present and returned if I don't provide any prefix++### What steps will reproduce the problem?++git clone git://github.com/yarikoptic/datalad -b nf-custom-remotes+cd datalad+# there are requirements in requirements.txt, which you might need to install... or just do on smaug+git checkout 5b9cfd5008151c515f8bccadf39451055ab61b4b +DATALAD_LOGLEVEL=1 DATALAD_LOGTARGET=stderr tools/testing/make_test_repo archive r1++### What version of git-annex are you using? On what operating system?+5.20150302~nd80+1 now tried also with 5.20150318+yoh20150323+1~nd80+1 (ie snapshot from march 23) with the same success++### Please provide any additional information below.++[[!format sh """+# If you can, paste a complete transcript of the problem occurring here.+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log++2015-03-26 15:56:05,612 [Level 1] Sending 'GETURLS SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat' (base.py:120)+2015-03-26 15:56:05,613 [Level 1] Received ['VALUE', 'dl+archive:SHA256E-s153--f378a42b6ff4d90091a7dfa37ebe1fe2fc5926eafd12cde1f2ba5fd1bcbf5e1e.tar.gz/d/test.dat'] (base.py:120)+2015-03-26 15:56:05,613 [Level 1] Received ['VALUE'] (base.py:120)+++2015-03-26 15:57:37,389 [Level 1] Sending 'GETURLS SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat dl+archive:' (base.py:120)+2015-03-26 15:57:37,391 [Level 1] Received ['VALUE'] (base.py:120)++# End of transcript or log.+"""]]
+ doc/bugs/Google_Cloud_Storage_Nearline.mdwn view
@@ -0,0 +1,24 @@+### Please describe the problem.++Google's Nearline Storage does not work with git-annex.++### What steps will reproduce the problem?++Create a remote on google cloud storage. AFAIK there is no way to tell annex to create a nearline bucket so what I did was to let it create a regular bucket. At this point everything works I can store retrieve files from the remote. Then I download the buckets content delete the bucket and recreate a nearline bucket with the same name as the old one and re-upload the content. With the new nearline bucket trying to put files there results in a 400 bad request error.+++### What version of git-annex are you using? On what operating system?++Mac OS X, git-annex version: 5.20150219-g52daae5++### Please provide any additional information below.++[[!format sh """+# If you can, paste a complete transcript of the problem occurring here.+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log+++# End of transcript or log.+"""]]++> This is a dup of [[todo/Nearline_support]] ; [[done]] --[[Joey]]
+ doc/bugs/One_Client_Not_Syncing_Content.mdwn view
@@ -0,0 +1,54 @@+### Please describe the problem.++I am fairly new to git annex - so I may have a misconception about how it should work.++I have two laptop clients A and B that each have a single ssh remote, server C, setup as a full backup. Both of the laptops were setup through the web and have the assistant running.++The problem I am seeing is that laptop A does not seem to sync contents created on laptop B. If i do the following:++ laptopA# echo "foo" > bar+ laptopB# cat bar+ > foo++ laptopB# echo "baz" > bang+ laptopA# cat bang+ > No such file or directory++Laptop A has the symlink for bang but no contents. ++if i run the following:++ laptopA# git annex find --want-get --not --in .+it returns 'bang'++So it seems that laptopA wants the contents of the file created on laptopB, but doesn't sync it. If I manually run git annex sync --content everything is good. But when running the assistant should I not care about this?+++### What steps will reproduce the problem?++See above.++### What version of git-annex are you using? On what operating system?++laptopA: OSX 10.10++ git-annex version: 5.20150205+ build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA TorrentParser+ key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL+ remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external+ local repository version: 5+ supported repository version: 5+ upgrade supported from repository versions: 0 1 2 4++laptopB: Archlinux++ git-annex version: 5.20150219-g7751a05+ build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA TorrentParser+ key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL+ remote types: git gcrypt S3 bup directory rsync web bittorrent glacier ddar hook external+ local repository version: 5+ supported repository version: 5+ upgrade supported from repository versions: 0 1 2 4+++### Please provide any additional information below.
+ doc/bugs/Podcast_filename_encoding_breaks_Android_client.mdwn view
@@ -0,0 +1,34 @@+### Please describe the problem.++Imported podcast files with iso-8859-1 encoding and swedish+characters break repo on Android client with errors like.++``error: unable to create file pod/Pennypodden___om_bostadspolitik/E54___�se_Richard__Gr�nby_.mp3 (Invalid argument)``++Android clients empty direct repo is then distributed to all clients. Whole+annex repo appears empty on all clients. Old revision has to be checked out to+get files back. As soon as Android client syncs again however, all repos are+emptied.++### What steps will reproduce the problem?+Set up indirect repo on linux laptop and direct repo on Android phone. On the+laptop do:++``git-annex importfeed http://www.pennygangen.se/podcast/podcast.xml``++Wait for changes to propagate if using the assistant or sync manually.++### What version of git-annex are you using? On what operating system?++ - Debian sid and testing with 5.20141125 on various clients and + - Android 4.4 with 5.20150219-gd24cfd3 on the phone.++### Please provide any additional information below.++After failing to write the files with problematic filenames git annex appears+to belive it should commit the fact that the repo is empty and sync this+emptiness to everyone.++``convmv -f iso-8859-1 -t utf8 $problemfile --notest`` on the laptop fixes the+filenames and the Android client stops wrecking everything.+
+ doc/bugs/assistant_committer_crash_on_OSX_when_adding_lots_of_files.mdwn view
@@ -0,0 +1,22 @@+I've had a report of the assistant failing to commit when there are a lot+of files on OSX Yosemite.++<pre>+Committer crashed: git: createProcess: runInteractiveProcess: exec: resource exhausted (Argument list too long)+[2015-03-22 23:14:42 CET] Committer: warning Committer crashed: git: createProcess: runInteractiveProcess: exec: resource exhausted (Argument list too+long)+</pre>++Probably need to tune the command length limit for !linux. --[[Joey]]++> Investigation suggests this is the problem:++ inRepo (Git.LsFiles.notInRepo False $ map changeFile pending)++> If a lot of new files have been added, the `pending` list can be+> arbitrarily large, and this passes it to git ls-files as parameters.a+> +> It's not the actual commit that fails; that uses Git.Queue and xargs.+> --[[Joey]] ++>> [[fixed|done]] --[[Joey]]
+ doc/bugs/git_pack-objects_eats_all_teh_ram.mdwn view
@@ -0,0 +1,21 @@+### Please describe the problem.++I'm running git annex sync <remote> sync'ing a local direct mode remote to a local indirect mode remote.++As part of this process, git annex is running git pack-objects --keep-true-parents --honor-pack-keep --non-empty --all.++This eats all of my raspberry pi's ram for lunch. I think it even starts swapping, which would explain why it never seems to complete.++It's unclear why this is eating all my RAM, as I don't think I used to have this problem, and my repo didn't recently dramatically grow in size. (I added < 100 multi-gb files, but that shouldn't make a difference here, I think.)++Anyway It would be nice if there were a way to get git-annex to pass a sensible -window-memory here. I'm trying to use a wimpy machine, but I'm sure this could be a problem on a bigger machine too.++### What version of git-annex are you using? On what operating system?++$ git-annex version+git-annex version: 5.20141024-g613f396++$ uname -a+Linux raspberrypi 3.18.5+ #744 PREEMPT Fri Jan 30 18:19:07 GMT 2015 armv6l GNU/Linux++> [[done]]; not a git-annex bug AFAICS. --[[Joey]]
+ doc/bugs/stderr_of_special_external_remotes_is_swallowed.mdwn view
@@ -0,0 +1,10 @@+### Please describe the problem.++complicates troubleshooting of custom special remotes since annex seems to swallow all output, including stderr++### What version of git-annex are you using? On what operating system?++5.20150302++> I have debugged external special remotes using stdderr, so I +> know this is not the case. [[done]] --[[Joey]]
+ doc/devblog/day_265__at_Dartmouth.mdwn view
@@ -0,0 +1,4 @@+Spent a couple of days at Dartmouth hanging out in the neuroscience+department with the [Datalad](http://datalad.org/) developers.+Added several new plumbing commands and a new post-update-annex hook,+based on their feedback of how they're using git-annex.
+ doc/devblog/day_266-267__man_page_split.mdwn view
@@ -0,0 +1,16 @@+While traveling for several days, I filled dead time with a rather massive+reorganization of the git-annex man page, and I finished that up this+morning.++That man page had gotten rather massive, at around 3 thousand lines. I+split out 87 man pages, one for each git-annex command. Many of these were+expanded with additional details, and have become a lot better thanks+to the added focus and space. See for example, [[git-annex-find]],+or any of the links on the new [[git-annex]] man page. (Which is still over+1 thousand lines long..)++Also, `git annex help <command>` can be used to pull up a command's man+page now!++I'm taking the rest of the day off to R&R from the big trip north, and+expect to get back into the backlog of 143 messages starting tomorrow.
+ doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite.mdwn view
@@ -0,0 +1,10 @@+I've been trying to get all image files added to git annex with a wildcard, with no luck. If I use 'git annex add image.jpg', the file gets added and I can commit it. Also using 'git annex add .' works for adding all files. ++Comands I've tried-++git annex add *.jpg * This outputs to the screen that it's adding each .jpg it finds, but when I go to commit there are 0 files staged.++git annex add . --include='*.jpg' * This doesn't return any results.+++What command should I be using on a Mac to just add all files with a specific extension?
+ doc/forum/Case-insensitive_search_with_find_list_whereis__63__.mdwn view
@@ -0,0 +1,1 @@+Are case-insensitive searchs possible with find, list, and whereis?
+ doc/forum/How_to_delete_a_file_in_direct_mode__63__.mdwn view
@@ -0,0 +1,31 @@+My use case is that I'm organising my media in a staging area called **uploadme/**.++At this staging area, I add all the media into git-annex and then I go to work pruning, editing & [adding metadata](https://github.com/muennich/sxiv/blob/master/exec/key-handler#L29).++# Pruning++If I find an image I don't like I move it to `/tmp`.++I expected to maybe type `git status` to see the missing file and later confirm that I don't want it. But when I type `git status` I get:++ X1C3:~/media/uploadme$ git status+ fatal: This operation must be run in a work tree++What should I be doing?++++My use case is that I'm organising my media in a staging area called **uploadme/**.++At this staging area, I add all the media into git-annex and then I go to work pruning, editing & [adding metadata](https://github.com/muennich/sxiv/blob/master/exec/key-handler#L29).++# Pruning++If I find an image I don't like I move it to `/tmp`.++I expected to maybe type `git status` to see the missing file and later confirm that I don't want it. But when I type `git status` I get:++ X1C3:~/media/uploadme$ git status+ fatal: This operation must be run in a work tree++What should I be doing?
+ doc/forum/copy_and_move__63__.mdwn view
@@ -0,0 +1,19 @@+My use case is that I [import media](http://ix.io/h6m) from my iphone/gopro to my laptop. I then want to upload them to [Flickr](https://www.flickr.com/) (JPG/PNG) and S3 (MP4). However I want to keep a backup using git-annex onto a external USB drive.++# How do I quickly copy and drop?++I realise I can:++1. git-annex add 2014-*+* git-annex copy --to 2tbusbdrive+* git-annex drop 2014-*++But that's several steps. Is there a quicker way?++# How do drop only files I've actually uploaded?++In the past, I've just marked files as uploaded by `touch "$media.uploaded"` once my python Flickr script returns a successful error code. But I have no idea how to tell git-annex that this means the file can now be dropped, providing a copy exists on my **2tbusbdrive**.++# Furthermore keeping a clean deck++Tbh I don't want the old upload files/directories cluttering up my _uploadme_ directory. Can I just delete them or configure drop to remove the filename too?
+ doc/forum/git-annex_on_openSUSE.mdwn view
@@ -0,0 +1,20 @@+I run into some problems installing git-annex on openSuSE:++1) cabal install ends up with the failure:++-->>> ExitFailure 1 network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.++2) with the tarball the files are not synchronized, only linked++Here the link to the discussion in a suseforum:++https://forums.opensuse.org/showthread.php/506098-How-to-install-git-annex-on-13-1-2++It would be great to see git-annex in the opensuse repos,+maybe via the open build service, https://build.opensuse.org++Are there other ways to install git-annex on opensuse successfully?++Thanks in advance++saneP
+ doc/forum/notify-start_and_notify-finish_for_the_assistant.mdwn view
@@ -0,0 +1,5 @@+Is there a way to use notify-start and notify-finish, not when using git annex+on the command line but also when using the assistant ?++I would like to get notifications when I move files to annexed folders for when+the transfer to the server is finished and such things.
+ doc/forum/remote-specific_meta-data.mdwn view
@@ -0,0 +1,5 @@+I know we can associate arbitrary [[metadata]] to files. I'd like to be able to sync *remote* specific metadata (say `ip = 10.0.0.1`) fields around. I was originally thinking of shoving this in the description but I am not sure that (a) it gets synced around and (b) it will scale well enough.++Then I thought we could use the key/value storage, but then the keyname would change with metadata changes so maybe that won't work...? Another option I thought of was to just throw stuff in a separate directory in the git-annex branch.++Thoughts? --[[anarcat]]
+ doc/git-annex-add.mdwn view
@@ -0,0 +1,47 @@+# NAME++git-annex add - adds files to the git annex++# SYNOPSIS++git annex add `[path ...]`++# DESCRIPTION++Adds files in the path to the annex. If no path is specified, adds+files from the current directory and below.++Normally, files that are already checked into git, or that git has been+configured to ignore will be silently skipped.++# OPTIONS++* `--include-dotfiles`++ Dotfiles are skipped unless explicitly listed, or unless this option is+ used.++* `--force`++ Add gitignored files.++* `--backend`++ Specifies which key-value backend to use.++* file matching options++ Many of the [[git-annex-matching-options]](1)+ can be used to specify files to add.++ For example: `--largerthan=1GB`++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-addunused.mdwn view
@@ -0,0 +1,24 @@+# NAME++git-annex addunused - add back unused files++# SYNOPSIS++git annex addunused `[number|range ...]`++# DESCRIPTION++Adds back files for the content corresponding to the numbers or ranges,+as listed by the last `git annex unused`. ++The files will have names starting with "unused."++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-addurl.mdwn view
@@ -0,0 +1,66 @@+# NAME++git-annex addurl - add urls to annex++# SYNOPSIS++git annex addurl `[url ...]`++# DESCRIPTION++Downloads each url to its own file, which is added to the annex.++When `quvi` is installed, urls are automatically tested to see if they+point to a video hosting site, and the video is downloaded instead.+ +Urls to torrent files (including magnet links) will cause the content of+the torrent to be downloaded, using `aria2c`.++Normally the filename is based on the full url, so will look like+"www.example.com_dir_subdir_bigfile". In some cases, addurl is able to+come up with a better filename based on other information. Options can also+be used to get better filenames.++# OPTIONS++* `--fast`++ Avoid immediately downloading the url.++* `--relaxed`++ Avoid storing the size of the url's content, and accept whatever+ content is there at a future point. (Implies `--fast`.)++* `--raw`++ Prevent special handling of urls by quvi, bittorrent, and other+ special remotes. This will for example, make addurl+ download the .torrent file and not the contents it points to.++* `--file=name`++ Use with a filename that does not yet exist to add a new file+ with the specified name and the content downloaded from the url.++ If the file already exists, addurl will record that it can be downloaded+ from the specified url(s).++* `--pathdepth=N`++ This causes a shorter filename to be used. For example,+ `--pathdepth=1` will use "dir/subdir/bigfile",+ while `--pathdepth=3` will use "bigfile". ++ It can also be negative; `--pathdepth=-2` will use the last+ two parts of the url.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-assistant.mdwn view
@@ -0,0 +1,47 @@+# NAME++git-annex assistant - automatically sync changes++# SYNOPSIS++git annex assistant++# DESCRIPTION++Watches for changes to files in the current directory and its subdirectories,+and automatically syncs them to other remotes.++For more details about the git-annex assistant, see+<https://git-annex.branchable.com/assistant/>++# OPTIONS++* `--autostart`++ Automatically starts the assistant running in each repository listed+ in the file `~/.config/git-annex/autostart`++ This is typically started at boot, or when you log in.++* `--startdelay=N`++ Wait N seconds before running the startup scan. This process can+ be expensive and you may not want to run it immediatly upon login.++* `--foreground`++ Avoid forking to the background.++* `--stop`++ Stop a running daemon.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-checkpresentkey.mdwn view
@@ -0,0 +1,26 @@+# NAME++git-annex checkpresentkey - check if key is present in remote++# SYNOPSIS++git annex `key remote`++# DESCRIPTION++This plumbing-level command verifies if the specified key's content+is present in the specified remote.++Exits 0 if the content is verified present, or 1 if it is verified to not+be present. If there is a problem checking the remote, the special+exit code 100 is used, and an error message is output to stderr.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-copy.mdwn view
@@ -0,0 +1,68 @@+# NAME++git-annex copy - copy content of files to/from another repository++# SYNOPSIS++git annex copy `[path ...] [--from=remote|--to=remote]`++# DESCRIPTION++Copies the content of files from or to another remote.++# OPTIONS++* `--from=remote`++ Use this option to copy the content of files from the specified+ remote to the local repository.++* `--to=remote`++ Use this option to copy the content of files from the local repository+ to the specified remote.++* `--auto`++ Rather than copying all files, only copy files that don't yet have+ the desired number of copies, or that are preferred content of the+ destination repository. See [[git-annex-preferred-content]](1)++* `--fast`++ Avoid contacting the remote to check if it has every file when copying+ --to it.++* `--force`++ Force checking the remote for every file when copying --from it.++* `--all`++ Rather than specifying a filename or path to copy, this option can be+ used to copy all available versions of all files.++ This is the default behavior when running git-annex in a bare repository.++* `--unused`++ Operate on files found by last run of git-annex unused.++* `--key=keyname`++ Use this option to move a specified key.++* file matching options++ The [[git-annex-matching-options]](1)+ can be used to specify files to copy.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-dead.mdwn view
@@ -0,0 +1,25 @@+# NAME++git-annex trust - hide a lost repository++# SYNOPSIS++git annex dead `[repository ...]`++# DESCRIPTION++Indicates that the repository has been irretrievably lost.+(To undo, use semitrust.)++Repositories can be specified using their remote name, their+description, or their UUID.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-describe.mdwn view
@@ -0,0 +1,29 @@+# NAME++git-annex describe - change description of a repository++# SYNOPSIS++git annex describe repository description++# DESCRIPTION++Changes the description of a repository.++The repository to describe can be specified by git remote name or+by uuid. To change the description of the current repository, use+"here".++Repository descriptions are displayed by git-annex in various places.+They are most useful when git-annex knows about a repository, but there is+no git remote corresponding to it.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-diffdriver.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex diffdriver - external git diff driver shim++# SYNOPSIS++git annex diffdriver `-- cmd --opts --`++# DESCRIPTION++This is an external git diff driver shim. Normally, when using `git diff`+with an external git driver, the symlinks to annexed files are not set up+right, so the external git driver cannot read them in order to perform+smart diffing of their contents. This command works around the problem,+by passing the fixed up files to the real external diff driver.++To use, just configure git to use "git-annex diffdriver -- cmd params --"+as the external diff command, where cmd is the real external diff+command you want to use, and params are any extra parameters to pass+to it. Note the trailing "--", which is required.++For example, set `GIT_EXTERNAL_DIFF=git-annex diffdriver -- j-c-diff --`++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-direct.mdwn view
@@ -0,0 +1,28 @@+# NAME++git-annex direct - switch repository to direct mode++# SYNOPSIS++git annex direct++# DESCRIPTION++Switches a repository to use direct mode, where rather than symlinks to+files, the files are directly present in the repository.+ +As part of the switch to direct mode, any changed files will be committed.++Note that git commands that operate on the work tree will refuse to+run in direct mode repositories. Use `git annex proxy` to safely run such+commands.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-drop.mdwn view
@@ -0,0 +1,51 @@+# NAME++git-annex drop - indicate content of files not currently wanted++# SYNOPSIS++git annex drop `[path ...]`++# DESCRIPTION++Drops the content of annexed files from this repository, when+possible.++git-annex will refuse to drop content if it cannot verify it is+safe to do so.++# OPTIONS++* `--from=remote`++ Rather than dropping the content of files in the local repository,+ this option can specifiy a remote from which the files'+ contents should be removed.++* `--auto`++ Rather than trying to drop all specified files, drop only files that+ are not preferred content of the repository.+ See [[git-annex-preferred-content]](1)++* `--force`++ Use this option with care! It bypasses safety checks, and forces+ git-annex to delete the content of the specified files, even from+ the last repository that is storing their content. Data loss can+ result from using this option.++* file matching options++ The [[git-annex-matching-options]](1)+ can be used to specify files to drop.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-dropkey.mdwn view
@@ -0,0 +1,28 @@+# NAME++git-annex dropkey - drops annexed content for specified keys++# SYNOPSIS++git annex dropkey `[key ...]`++# DESCRIPTION++This plumbing-level command drops the annexed data for the specified+keys from this repository.++This can be used to drop content for arbitrary keys, which do not need+to have a file in the git repository pointing at them.++Warning: This command does not check that enough other copies of the content+exist; using it can easily result in data loss.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-dropunused.mdwn view
@@ -0,0 +1,39 @@+# NAME++git-annex dropunused - drop unused file content++# SYNOPSIS++git annex dropunused `[number|range ...]`++# DESCRIPTION++Drops the data corresponding to the numbers, as listed by the last+git annex unused`++You can also specify ranges of numbers, such as "1-1000".+Or, specify "all" to drop all unused data.++# OPTIONS++* `--from=remote`++ Rather than dropping the unused files from the local repository,+ drop them from the remote repository.++* `--force`++ Use this option with care! It bypasses safety checks, and forces+ git-annex to delete the content of the specified files, even from+ the last repository that is storing their content. Data loss can+ result from using this option.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-edit.mdwn view
@@ -0,0 +1,18 @@+# NAME++git-annex unlock - unlock files for modification++# SYNOPSIS++git annex edit `[path ...]`++# DESCRIPTION++This is an alias for the `unlock` command; see [[git-annex-unlock]](1)+for details.++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-enableremote.mdwn view
@@ -0,0 +1,56 @@+# NAME++git-annex enableremote - enables use of an existing special remote++# SYNOPSIS++git annex enableremote `name [param=value ...]`++# DESCRIPTION++Enables use of an existing special remote in the current repository,+which may be a different repository than the one in which it was+originally created with the initremote command.++The name of the remote is the same name used when originally+creating that remote with `git annex initremote`. Run +`git annex enableremote` without any name to get a list of+special remote names.+ +Some special remotes may need parameters to be specified every time they are+enabled. For example, the directory special remote requires a directory=+parameter.+ +This command can also be used to modify the configuration of an existing+special remote, by specifying new values for parameters that were+originally set when using initremote. (However, some settings such as+the as the encryption scheme cannot be changed once a special remote+has been created.)+ +The GPG keys that an encrypted special remote is encrypted with can be+changed using the keyid+= and keyid-= parameters. These respectively+add and remove keys from the list. However, note that removing a key+does NOT necessarily prevent the key's owner from accessing data+in the encrypted special remote+(which is by design impossible, short of deleting the remote).+ +One use-case of keyid-= is to replace a revoked key with+a new key:+ + git annex enableremote mys3 keyid-=revokedkey keyid+=newkey+ +Also, note that for encrypted special remotes using plain public-key+encryption (encryption=pubkey), adding or removing a key has NO effect+on files that have already been copied to the remote. Hence using+keyid+= and keyid-= with such remotes should be used with care, and+make little sense except in cases like the revoked key example above.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-examinekey.mdwn view
@@ -0,0 +1,51 @@+# NAME++git-annex examinekey - prints information from a key++# SYNOPSIS++git annex examinekey `[key ...]`++# DESCRIPTION++This plumbing-level command is given a key, and prints information+that can be determined purely by looking at the key.++# OPTIONS++* `--format=value`++ Use custom output formatting.++ The value is a format string, in which '${var}' is expanded to the+ value of a variable. To right-justify a variable with whitespace,+ use '${var;width}' ; to left-justify a variable, use '${var;-width}';+ to escape unusual characters in a variable, use '${escaped_var}'++ These variables are available for use in formats: key, backend,+ bytesize, humansize, keyname, hashdirlower, hashdirmixed, mtime (for+ the mtime field of a WORM key).++ Also, '\\n' is a newline, '\\000' is a NULL, etc.++* `--json`++ Enable JSON output. This is intended to be parsed by programs that use+ git-annex. Each line of output is a JSON object.++# EXAMPLES++The location a key's value is stored (in indirect mode)+can be looked up by running:++ git annex examinekey $KEY --format='.git/annex/objects/${hashdirmixed}${key}/${key}'++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-find.mdwn view
@@ -0,0 +1,65 @@+# NAME++git-annex find - lists available files++# SYNOPSIS++git annex find `[path ...]`++# DESCRIPTION++Outputs a list of annexed files in the specified path. With no path,+finds files in the current directory and its subdirectories.++# OPTIONS++* `--print0`++ Output filenames terminated with nulls, for use with `xargs -0`++* `--format=value`++ Use custom output formatting.++ The value is a format string, in which '${var}' is expanded to the+ value of a variable. To right-justify a variable with whitespace,+ use '${var;width}' ; to left-justify a variable, use '${var;-width}';+ to escape unusual characters in a variable, use '${escaped_var}'++ These variables are available for use in formats: file, key, backend,+ bytesize, humansize, keyname, hashdirlower, hashdirmixed, mtime (for+ the mtime field of a WORM key).++ Also, '\\n' is a newline, '\\000' is a NULL, etc.++ The default output format is the same as `--format='${file}\\n'`++* `--json`++ Output the list of files in JSON format.++ This is intended to be parsed by programs that use+ git-annex. Each line of output is a JSON object.++* matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to list.++ By default, the find command only lists annexed files whose content is+ currently present. Specifying any of the matching options will override+ this default behavior.++ To list all annexed files, present or not, specify `--include "*"`.++ To list annexed files whose content is not present, specify `--not --in=here`++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-findref.mdwn view
@@ -0,0 +1,27 @@+# NAME++git-annex findref - lists files in a git ref++# SYNOPSIS++git annex findref `[ref]`++# DESCRIPTION++This is very similar to the `git-annex find` command, but instead of+finding files in the current work tree, it finds files in the+specified git ref.++# OPTIONS++Same as [[git-annex-find]](1)++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-fix.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex fix - fix up symlinks to point to annexed content++# SYNOPSIS++git annex fix `[path ...]`++# DESCRIPTION++Fixes up symlinks that have become broken to again point to annexed+content.++This is useful to run if you have been moving the symlinks around,+but is done automatically when committing a change with git too.++# OPTIONS++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to fix.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-forget.mdwn view
@@ -0,0 +1,37 @@+# NAME++git-annex forget - prune git-annex branch history++# SYNOPSIS++git annex forget++# DESCRIPTION++Causes the git-annex branch to be rewritten, throwing away historical+data about past locations of files. The resulting branch will use less+space, but `git annex log` will not be able to show where+files used to be located.++When this rewritten branch is merged into other clones of+the repository, `git-annex` will automatically perform the same rewriting+to their local `git-annex` branches. So the forgetfulness will automatically+propagate out from its starting point until all repositories running+git-annex have forgotten their old history. (You may need to force+git to push the branch to any git repositories not running git-annex.)++# OPTIONS++* `--drop-dead`++ Also prune references to repositories that have been marked as dead.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-fromkey.mdwn view
@@ -0,0 +1,33 @@+# NAME++git-annex fromkey - adds a file using a specific key++# SYNOPSIS++git annex fromkey `[key file]`++# DESCRIPTION++This plumbing-level command can be used to manually set up a file+in the git repository to link to a specified key.++If the key and file are not specified on the command line, they are+instead read from stdin. Any number of lines can be provided in this+mode, each containing a key and filename, sepearated by whitespace.++# OPTIONS++* `--force`++ Allow making a file link to a key whose content is not in the local+ repository. The key may not be known to git-annex at all. ++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-fsck.mdwn view
@@ -0,0 +1,93 @@+# NAME++git-annex fsck - check for problems++# SYNOPSIS++git annex fsck `[path ...]`++# DESCRIPTION++With no parameters, this command checks the whole annex for consistency,+and warns about or fixes any problems found. This is a good complement to+`git fsck`.++With parameters, only the specified files are checked.++# OPTIONS++* `--from=remote`++ Check a remote, rather than the local repository.++ Note that by default, files will be copied from the remote to check+ their contents. To avoid this expensive transfer, and only+ verify that the remote still has the files that are expected to be on it,+ add the `--fast` option.++* `--fast`++ Avoids expensive checksum calculations (and expensive transfers when+ fscking a remote).++* `--incremental`++ Start a new incremental fsck pass. An incremental fsck can be interrupted+ at any time, with eg ctrl-c.++* `--more`++ Continue the last incremental fsck pass, where it left off.++* `--incremental-schedule=time`++ This makes a new incremental fsck be started only a specified+ time period after the last incremental fsck was started.++ The time is in the form "10d" or "300h".++ Maybe you'd like to run a fsck for 5 hours at night, picking up each+ night where it left off. You'd like this to continue until all files+ have been fscked. And once it's done, you'd like a new fsck pass to start,+ but no more often than once a month. Then put this in a nightly cron job:++ git annex fsck --incremental-schedule 30d --time-limit 5h++* `--numcopies=N`++ Override the normally configured number of copies. ++ To verify data integrity only while disregarding required number of copies,+ use `--numcopies=1`.++* `--all`++ Normally only the files in the currently checked out branch+ are fscked. This option causes all versions of all files to be fscked.++ This is the default behavior when running git-annex in a bare repository.++* `--unused`++ Operate on files found by last run of git-annex unused.++* `--key=keyname`++ Use this option to fsck a specified key.+ +* file matching options++ The [[git-annex-matching-options]](1)+ can be used to specify files to fsck.++# OPTIONS++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-fuzztest.mdwn view
@@ -0,0 +1,23 @@+# NAME++git-annex fuzztest - generates fuzz test files++# SYNOPSIS++git annex fuzztest++# DESCRIPTION++Generates random changes to files in the current repository,+for use in testing the assistant. This is dangerous, so it will not+do anything unless --forced.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-get.mdwn view
@@ -0,0 +1,58 @@+# NAME++git-annex get - make content of annexed files available++# SYNOPSIS++git annex get `[path ...]`++# DESCRIPTION++Makes the content of annexed files available in this repository. This+will involve copying them from a remote repository, or downloading them,+or transferring them from some kind of key-value store.++# OPTIONS++* `--auto`++ Rather than getting all files, get only files that don't yet have+ the desired number of copies, or that are preferred content of the+ repository. See [[git-annex-preferred-content]](1)++* `--from=remote`++ Normally git-annex will choose which remotes to get the content+ from. Use this option to specify which remote to use.++* `--all`++ Rather than specifying a filename or path to get, this option can be+ used to get all available versions of all files.++ This is the default behavior when running git-annex in a bare repository.++* `--unused`++ Operate on files found by last run of git-annex unused.++* `--key=keyname`++ Use this option to get a specified key.++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to get.++# SEE ALSO++[[git-annex]](1)++[[git-annex-drop]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-group.mdwn view
@@ -0,0 +1,29 @@+# NAME++git-annex group - add a repository to a group++# SYNOPSIS++git annex group `repository groupname`++# DESCRIPTION++Adds a repository to a group, such as "archival", "enduser", or "transfer".+The groupname must be a single word.+ +Omit the groupname to show the current groups that a repository is in.++There are some standard groups that have different default preferred content+settings. See <https://git-annex.branchable.com/preferred_content/standard_groups/>++A repository can be in multiple groups at the same time.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-groupwanted.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex groupwanted - get or set groupwanted expression++# SYNOPSIS++git annex groupwanted `groupname [expression]`++# DESCRIPTION++Sets or displays the groupwanted expression. This will be used by+repositories that are in the group, and that have their preferred+content expression set to "groupwanted".+ +For example, to configure a group named redundantarchive, and+make repositories in the group want to contain 3 copies of every file:+ + git annex groupwanted redundantarchive "not (copies=redundantarchive:3)"+ for repo in foo bar baz; do+ git annex group $repo redundantarchive+ git annex wanted $repo groupwanted+ done++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-import.mdwn view
@@ -0,0 +1,75 @@+# NAME++git-annex import - move and add files from outside git working copy++# SYNOPSIS++git annex import `[path ...]`++# DESCRIPTION++Moves files from somewhere outside the git working copy, and adds them to+the annex. Individual files to import can be specified.+If a directory is specified, the entire directory is imported.+ + git annex import /media/camera/DCIM/*++When importing files, there's a possibility of importing a duplicate+of a file that is already known to git-annex -- its content is either+present in the local repository already, or git-annex knows of anther+repository that contains it.++By default, importing a duplicate of a known file will result in+a new filename being added to the repository, so the duplicate file+is present in the repository twice. (With all checksumming backends,+including the default SHA256E, only one copy of the data will be stored.)++Several options can be used to adjust handling of duplicate files.++# OPTIONS++* `--duplicate`++ Do not delete files from the import location.++ This could allow importing the same files repeatedly+ to different locations in a repository. More likely, it could be used to+ import the same files to a number of different branches or separate git+ repositories.++* `--deduplicate`++ Only import files that are not duplicates;+ duplicate files will be deleted from the import location.++* `--skip-duplicates`++ Only import files that are not duplicates; and avoid deleting+ duplicate files from the import location.++* `--clean-duplicates`++ Does not import any files, but any files found in the import location+ that are duplicates are deleted.++* file matching options++ Many of the [[git-annex-matching-options]](1)+ can be used to specify files to import.++ git annex import /dir --include='*.png'++# CAVEATS++Note that using `--deduplicate` or `--clean-duplicates` with the WORM+backend does not look at file content, but filename and mtime.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-importfeed.mdwn view
@@ -0,0 +1,46 @@+# NAME++git-annex importfeed - import files from podcast feeds++# SYNOPSIS++git annex importfeed `[url ...]`++# DESCRIPTION++Imports the contents of podcast feeds. Only downloads files whose+urls have not already been added to the repository before, so you can+delete, rename, etc the resulting files and repeated runs won't duplicate+them.++When quvi is installed, links in the feed are tested to see if they+are on a video hosting site, and the video is downloaded. This allows+importing e.g., youtube playlists.++# OPTIONS++* `--force`++ Force downoading urls it's seen before.++* `--template`++ Controls where the files are stored.++ The default template is '${feedtitle}/${itemtitle}${extension}'+ + Other available variables for templates: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate, title, author++* `--relaxed`, `--fast`, `--raw`, `--template`++ These options behave the same as when using [[git-annex-addurl]](1).++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-indirect.mdwn view
@@ -0,0 +1,26 @@+# NAME++git-annex indirect - switch repository to indirect mode++# SYNOPSIS++git annex indirect++# DESCRIPTION++Switches a repository back from direct mode to the default, indirect+mode.++Some systems cannot support git-annex in indirect mode, because they+do not support symbolic links. Repositories on such systems instead+default to using direct mode.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-info.mdwn view
@@ -0,0 +1,51 @@+# NAME++git-annex info - shows information about the specified item or the repository as a whole++# SYNOPSIS++git annex info `[directory|file|remote|uuid ...]`++# DESCRIPTION++Displays statistics and other information for the specified item,+which can be a directory, or a file, or a remote, or the uuid of a+repository.+ +When no item is specified, displays statistics and information+for the repository as a whole.++# OPTIONS++* `--fast`++ Only show the data that can be gathered quickly.++* `--json`++ Enable JSON output. This is intended to be parsed by programs that use+ git-annex. Each line of output is a JSON object.++* file matching options++ When a directory is specified, the [[git-annex-matching-options]](1)+ can be used to select the files in the directory that are included+ in the statistics.++# EXAMPLES++Suppose you want to run "git annex get .", but+would first like to see how much disk space that will use.+Then run:+ + git annex info --fast . --not --in here++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-init.mdwn view
@@ -0,0 +1,27 @@+# NAME++git-annex init - initialize git-annex++# SYNOPSIS++git annex init `[description]`++# DESCRIPTION++Until a repository (or one of its remotes) has been initialized,+git-annex will refuse to operate on it, to avoid accidentally+using it in a repository that was not intended to have an annex.++It's useful, but not mandatory, to initialize each new clone+of a repository with its own description. If you don't provide one,+one will be generated using the username, hostname and the path.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-initremote.mdwn view
@@ -0,0 +1,57 @@+# NAME++git-annex initremote - creates a special (non-git) remote++# SYNOPSIS++git annex initremote `name type=value [param=value ...]`++# DESCRIPTION++Creates a new special remote, and adds it to `.git/config`.++Example Amazon S3 remote:+ + git annex initremote mys3 type=S3 encryption=hybrid keyid=me@example.com datacenter=EU++Many different types of special remotes are supported by git-annex.+For a list and details, see <https://git-annex.branchable.com/special_remotes/>+ +The remote's configuration is specified by the parameters passed+to this command. Different types of special remotes need different+configuration values. The command will prompt for parameters as needed.++All special remotes support encryption. You can either specify+`encryption=none` to disable encryption, or specify+`encryption=hybrid keyid=$keyid ...` to specify a GPG key id (or an email+address associated with a key).++There are actually three schemes that can be used for management of the+encryption keys. When using the encryption=hybrid scheme, additional+GPG keys can be given access to the encrypted special remote easily+(without re-encrypting everything). When using encryption=shared,+a shared key is generated and stored in the git repository, allowing+anyone who can clone the git repository to access it. Finally, when using+encryption=pubkey, content in the special remote is directly encrypted+to the specified GPG keys, and additional ones cannot easily be given+access.++# OPTIONS++* `--fast`++ When initializing a remote that uses encryption, a cryptographic key is+ created. This requires sufficient entropy. If initremote seems to hang+ or take a long time while generating the key, you may want to Ctrl-c it+ and re-run with `--fast`, which causes it to use a lower-quality source of+ randomness. (Ie, /dev/urandom instead of /dev/random)++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-list.mdwn view
@@ -0,0 +1,34 @@+# NAME++git-annex list - show which remotes contain files++# SYNOPSIS++git annex list `[path ...]`++# DESCRIPTION++Displays a table of remotes that contain the contents of the specified+files. This is similar to `git annex whereis` but a more compact display.++# OPTIONS++* `--allrepos`++ Only configured remotes are shown by default; this option+ adds all known repositories to the list.++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to list.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-lock.mdwn view
@@ -0,0 +1,29 @@+# NAME++git-annex lock - unco unlock command++# SYNOPSIS++git annex lock `[path ...]`++# DESCRIPTION++Use this to undo an unlock command if you don't want to modify+the files, or have made modifications you want to discard.++# OPTIONS++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to lock.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-log.mdwn view
@@ -0,0 +1,42 @@+# NAME++git-annex log - shows location log++# SYNOPSIS++git annex log `[path ...]`++# DESCRIPTION++Displays the location log for the specified file or files,+showing each repository they were added to ("+") and removed from ("-").++# OPTIONS++* `--since=date`, `--after=date`, `--until=date`, `--before=date`, `--max-count=N`++ These options are passed through to `git log`, and can be used to limit+ how far back to search for location log changes.+ + For example: `--since "1 month ago"`++* `--gource`++ Generates output suitable for the `gource` visualization program.++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to act on.++# OPTIONS++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-lookupkey.mdwn view
@@ -0,0 +1,24 @@+# NAME++git-annex lookupkey - looks up key used for file++# SYNOPSIS++git annex lookupkey `[file ...]`++# DESCRIPTION++This plumbing-level command looks up the key used for a file in the+index. The key is output to stdout. If there is no key (because+the file is not present in the index, or is not a git-annex managed file),+nothing is output, and it exits nonzero.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-map.mdwn view
@@ -0,0 +1,40 @@+# NAME++git-annex map - generate map of repositories++# SYNOPSIS++git annex map++# DESCRIPTION++Helps you keep track of your repositories, and the connections between them,+by going out and looking at all the ones it can get to, and generating a+Graphviz file displaying it all. If the `dot` command is available, it is+used to display the file to your screen (using x11 backend).+ +This command only connects to hosts that the host it's run on can+directly connect to. It does not try to tunnel through intermediate hosts.+So it might not show all connections between the repositories in the network+ +Also, if connecting to a host requires a password, you might have to enter+it several times as the map is being built.+ +Note that this subcommand can be used to graph any git repository; it+is not limited to git-annex repositories.++# OPTIONS++* `--fast`++ Disable using `dot` to display the generated Graphviz file.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-matching-options.mdwn view
@@ -0,0 +1,164 @@+# NAME++git-annex-matching-options - specifying files to act on++# DESCRIPTION++Many git-annex commands support using these options to specify which+files they act on.++Arbitrarily complicated expressions can be built using these options.+For example:++ --exclude '*.mp3' --and --not -( --in=usbdrive --or --in=archive -)++The above example prevents git-annex from working on mp3 files whose+file contents are present at either of two repositories.++# OPTIONS++* `--exclude=glob`++ Skips files matching the glob pattern. The glob is matched relative to+ the current directory. For example:++ --exclude='*.mp3' --exclude='subdir/*'++ Note that this will not match anything when using --all or --unused.++* `--include=glob`++ Skips files not matching the glob pattern. (Same as `--not --exclude`.)+ For example, to include only mp3 and ogg files:++ --include='*.mp3' --or --include='*.ogg'++ Note that this will not skip anything when using --all or --unused.++* `--in=repository`++ Matches only files that git-annex believes have their contents present+ in a repository. Note that it does not check the repository to verify+ that it still has the content.++ The repository should be specified using the name of a configured remote,+ or the UUID or description of a repository. For the current repository,+ use `--in=here`++* `--in=repository@{date}`++ Matches files currently in the work tree whose content was present in+ the repository on the given date.++ The date is specified in the same syntax documented in+ gitrevisions(7). Note that this uses the reflog, so dates far in the+ past cannot be queried.++ For example, you might need to run `git annex drop .` to temporarily+ free up disk space. The next day, you can get back the files you dropped+ using `git annex get . --in=here@{yesterday}`++* `--copies=number`++ Matches only files that git-annex believes to have the specified number+ of copies, or more. Note that it does not check remotes to verify that+ the copies still exist.++* `--copies=trustlevel:number`++ Matches only files that git-annex believes have the specified number of+ copies, on remotes with the specified trust level. For example,+ `--copies=trusted:2`++ To match any trust level at or higher than a given level,+ use 'trustlevel+'. For example, `--copies=semitrusted+:2`++* `--copies=groupname:number`++ Matches only files that git-annex believes have the specified number of+ copies, on remotes in the specified group. For example,+ `--copies=archive:2`++* `--lackingcopies=number`++ Matches only files that git-annex believes need the specified number or + more additional copies to be made in order to satisfy their numcopies+ settings.++* `--approxlackingcopies=number`++ Like lackingcopies, but does not look at .gitattributes annex.numcopies+ settings. This makes it significantly faster.++* `--inbackend=name`++ Matches only files whose content is stored using the specified key-value+ backend.++* `--inallgroup=groupname`++ Matches only files that git-annex believes are present in all repositories+ in the specified group.++* `--smallerthan=size`+* `--largerthan=size`++ Matches only files whose content is smaller than, or larger than the+ specified size.++ The size can be specified with any commonly used units, for example,+ "0.5 gb" or "100 KiloBytes"++* `--metadata field=glob`++ Matches only files that have a metadata field attached with a value that+ matches the glob. The values of metadata fields are matched case+ insensitively.++* `--want-get`++ Matches files that the preferred content settings for the repository+ make it want to get. Note that this will match even files that are+ already present, unless limited with e.g., `--not --in .`+ + Note that this will not match anything when using --all or --unused.++* `--want-drop`++ Matches files that the preferred content settings for the repository+ make it want to drop. Note that this will match even files that have+ already been dropped, unless limited with e.g., `--in .`+ + Note that this will not match anything when using --all or --unused.++* `--not`++ Inverts the next matching option. For example, to only act on+ files with less than 3 copies, use `--not --copies=3`++* `--and`++ Requires that both the previous and the next matching option matches.+ The default.++* `--or`++ Requires that either the previous, or the next matching option matches.++* `-(`++ Opens a group of matching options.++* `-)`++ Closes a group of matching options.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-merge.mdwn view
@@ -0,0 +1,27 @@+# NAME++git-annex merge - automatically merge changes from remotes++# SYNOPSIS++git annex merge++# DESCRIPTION++This performs the same merging (and merge conflict resolution)+that is done by the sync command, but without pushing or pulling any+data.++One way to use this is to put `git annex merge` into a repository's+post-receive hook. Then any syncs to the repository will update its+working copy automatically.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-metadata.mdwn view
@@ -0,0 +1,83 @@+# NAME++git-annex metadata - sets or gets metadata of a file++# SYNOPSIS++git annex metadata `[path ...]`++# DESCRIPTION++The content of an annexed file can have any number of metadata fields+attached to it to describe it. Each metadata field can in turn+have any number of values.++This command can be used to set metadata, or show the currently set+metadata.++When run without any -s or -t parameters, displays the current metadata.++# OPTIONS++* `-g field`++ Get the value(s) of a single field.++ The values will be output one per line, with no other output, so+ this is suitable for use in a script.++* `-s field=value`++ Set a field's value, removing any old values.++* `-s field+=value`++ Add an additional value, preserving any old values.++* `-s field-=value`++ Remove a value.++* `-s field?=value`++ Set a value, but only if the field does not already have a value set.+ +* `-t tag`++ Set a tag. Note that a tag is just a value of the "tag" field.++* `-u tag`++ Unset a tag.++* `--force`++ By default, `git annex metadata` refuses to recursively set metadata+ throughout the files in a directory. This option enables such recursive+ setting.++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to act on.++* `--json`++ Enable JSON output. This is intended to be parsed by programs that use+ git-annex. Each line of output is a JSON object.++# EXAMPLES++To set some tags on a file and also its author:++ git annex metadata annexscreencast.ogv -t video -t screencast -s author+=Alice++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-migrate.mdwn view
@@ -0,0 +1,48 @@+# NAME++git-annex migrate - switch data to different backend++# SYNOPSIS++git annex migrate `[path ...]`++# DESCRIPTION++Changes the specified annexed files to use the default key-value backend+(or the one specified with `--backend`). Only files whose content+is currently available are migrated.++Note that the content is also still available using the old key after+migration. Use `git annex unused` to find and remove the old key.++Normally, nothing will be done to files already using the new backend.+However, if a backend changes the information it uses to construct a key,+this can also be used to migrate files to use the new key format.++When you have multiple repositories that each contain a copy of a file,+it's best to run migrate in all of them.++# OPTIONS++* `--backend`++ Specify the new key-value backend to use for migrated data.++* `--force`++ Force migration of keys that are already using the new backend.++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to migrate.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-mirror.mdwn view
@@ -0,0 +1,57 @@+# NAME++git-annex mirror - mirror content of files to/from another repository++# SYNOPSIS++git annex mirror `[path ...] [--to=remote|--from=remote]`++# DESCRIPTION++This causes a destination repository to mirror a source repository.++Each specified file in the source repository is mirrored to the destination+repository. If a file's content is present in the source repository, it is+copied to the destination repository. If a file's content is not present in+the source repository, it will be dropped from the destination repository+when the numcopies setting allows.+ +Note that mirror does not sync the git repository, but only the file+contents.++# OPTIONS++* `--to=remote`++ Use the local repository as the source repository, and mirror its contents+ to the remote.++* `--from=remote`++ Use the remote as the source repository, and mirror its contents to the local+ repository.++* `--all`++ Mirror all objects stored in the git annex, not only objects used by+ currently existing files. + + However, this bypasses checking the .gitattributes annex.numcopies+ setting when dropping files.++ This is the default behavior when running git-annex in a bare repository.++* file matching options++ The [[git-annex-matching-options]](1)+ can be used to specify files to mirror.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-move.mdwn view
@@ -0,0 +1,53 @@+# NAME++git-annex move - move content of files to/from another repository++# SYNOPSIS++git annex move `[path ...] [--from=remote|--to=remote]`++# DESCRIPTION++Moves the content of files from or to another remote.++# OPTIONS++* `--from=remote`++ Use this option to move the content of files from the specified+ remote to the local repository.++* `--to=remote`++ Use this option to move the content of files from the local repository+ to the specified remote.++* `--all`++ Rather than specifying a filename or path to move, this option can be+ used to move all available versions of all files.++ This is the default behavior when running git-annex in a bare repository.++* `--unused`++ Operate on files found by last run of git-annex unused.++* `--key=keyname`++ Use this option to move a specified key.++* file matching options++ The [[git-annex-matching-options]](1)+ can be used to specify files to move.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-numcopies.mdwn view
@@ -0,0 +1,31 @@+# NAME++git-annex numcopies - configure desired number of copies++# SYNOPSIS++git annex numcopies `N`++# DESCRIPTION++Tells git-annex how many copies it should preserve of files, over all+repositories. The default is 1.++Run without a number to get the current value.++When git-annex is asked to drop a file, it first verifies that the+required number of copies can be satisfied among all the other+repositories that have a copy of the file.+ +This can be overridden on a per-file basis by the annex.numcopies setting+in .gitattributes files.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-pre-commit.mdwn view
@@ -0,0 +1,27 @@+# NAME++git-annex pre-commit - run by git pre-commit hook++# SYNOPSIS++git annex `[path ...]`++# DESCRIPTION++This is meant to be called from git's pre-commit hook. `git annex init`+automatically creates a pre-commit hook using this.++Fixes up symlinks that are staged as part of a commit, to ensure they+point to annexed content. Also handles injecting changes to unlocked+files into the annex. When in a view, updates metadata to reflect changes+made to files in the view.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-preferred-content.mdwn view
@@ -0,0 +1,49 @@+# NAME++git-annex-preferred-content - ++# DESCRIPTION++Each repository has a preferred content setting, which specifies content+that the repository wants to have present. These settings can be configured+using `git annex vicfg` or `git annex wanted`.+They are used by the `--auto` option, by `git annex sync --content`,+and by the git-annex assistant.++Preferred content expressions are similar, but not identical to+the [[git-annex-matching-options]](1), just without the dashes.+For example:++ exclude=archive/* and (include=*.mp3 or smallerthan=1mb)++The main differences are that `exclude=` and `include=` always+match relative to the top of the git repository, and that there is+no equivilant to `--in`.++For more details about preferred content expressions, see+See <https://git-annex.branchable.com/preferred_content/>++When a repository is in one of the standard predefined groups, like "backup"+and "client", setting its preferred content to "standard" will use a+built-in preferred content expression developed for that group. +See <https://git-annex.branchable.com/preferred_content/standard_groups/>++If you have set a groupwanted expression for a group, it will be used+when a repository in the group has its preferred content set to+"groupwanted".++# SEE ALSO++[[git-annex]](1)++[[git-annex-vicfg]](1)++[[git-annex-wanted]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++<http://git-annex.branchable.com/>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-proxy.mdwn view
@@ -0,0 +1,38 @@+# NAME++git-annex proxy - safely bypass direct mode guard++# SYNOPSIS++git annex proxy `-- git cmd [options]`++# DESCRIPTION++Only useful in a direct mode repository, this runs the specified git+command with a temporary work tree, and updates the working tree to+reflect any changes staged or committed by the git command.++For example, to revert the most recent change that was committed+to the repository:++ git annex proxy -- git revert HEAD+ +To check out a past version of the repository:++ git annex proxy -- git checkout HEAD^^+ +To rename a directory:++ git annex proxy -- git mv mydir newname++# SEE ALSO++[[git-annex]](1)++[[git-annex-direct]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-readpresentkey.mdwn view
@@ -0,0 +1,28 @@+# NAME++git-annex readpresentkey - read records of where key is present++# SYNOPSIS++git annex readpresentkey `key uuid`++# DESCRIPTION++This plumbing-level command reads git-annex's records about whether+the specified key's content is present in the remote with the speficied+uuid.+ +It exits 0 if the key is recorded to be present and 1 if not.++Note that this does not do an active check to verify if the key+is present. To do such a check, use [[checkpresentkey]](1)++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-registerurl.mdwn view
@@ -0,0 +1,28 @@+# NAME++git-annex registerurl - registers an url for a key++# SYNOPSIS++git annex registerurl `[key url]`++# DESCRIPTION++This plumbing-level command can be used to register urls where a+key can be downloaded from.++No verification is performed of the url's contents.++If the key and url are not specified on the command line, they are+instead read from stdin. Any number of lines can be provided in this+mode, each containing a key and url, sepearated by whitespace.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-reinit.mdwn view
@@ -0,0 +1,28 @@+# NAME++git-annex reinit - initialize repository, reusing old UUID++# SYNOPSIS++git annex reinit `uuid|description`++# DESCRIPTION++Normally, initializing a repository generates a new, unique identifier+(UUID) for that repository. Occasionally it may be useful to reuse a+UUID -- for example, if a repository got deleted, and you're+setting it back up.++Use this with caution; it can be confusing to have two existing+repositories with the same UUID. Also, you will probably want to run+a fsck.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-reinject.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex reinject - sets content of annexed file++# SYNOPSIS++git annex reinject `src dest`++# DESCRIPTION++Moves the src file into the annex as the content of the dest file,+which should be an already annexed file whose content is not present.++This can be useful if you have obtained the content of a file from+elsewhere and want to put it in the local annex.++Automatically runs fsck on dest to check that the expected content was+provided.++Example:++ git annex reinject /tmp/foo.iso foo.iso++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-rekey.mdwn view
@@ -0,0 +1,33 @@+# NAME++git-annex rekey - change keys used for files++# SYNOPSIS++git annex rekey `[file key ...]`++# DESCRIPTION++This plumbing-level command is similar to migrate, but you specify+both the file, and the new key to use for it.++Multiple pairs of file and key can be given in a single command line.++# OPTIONS++* `--force`++ Allow rekeying of even files whose content is not currently available.+ Use with caution.++# OPTIONS++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-remotedaemon.mdwn view
@@ -0,0 +1,34 @@+# NAME++git-annex remotedaemon - detects when remotes have changed, and fetches from them++# SYNOPSIS++git annex remotedaemon++# DESCRIPTION++This plumbing-level command is used by the assistant to detect+when remotes have received git pushes, so the changes can be promptly+fetched and the local repository updated.++This is a better alternative to the [[git-annex-xmppgit]](1)+hack.++For the remotedaemon to work, the git remote must have+[[git-annex-shell]](1) installed, with notifychanges support.+The first version of git-annex-shell that supports it is 5.20140405.++It's normal for this process to be running when the assistant is running.++# SEE ALSO++[[git-annex]](1)++[[git-annex-assistant]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-repair.mdwn view
@@ -0,0 +1,55 @@+# NAME++git-annex repair - recover broken git repository++# SYNOPSIS++git annex repair++# DESCRIPTION++This can repair many of the problems with git repositories that `git fsck`+detects, but does not itself fix. It's useful if a repository has become+badly damaged. One way this can happen is if a repository used by git-annex+is on a removable drive that gets unplugged at the wrong time.+ +This command can actually be used inside git repositories that do not+use git-annex at all; when used in a repository using git-annex, it+does additional repairs of the git-annex branch.+ +It works by deleting any corrupt objects from the git repository, and+retrieving all missing objects it can from the remotes of the repository.+ +If that is not sufficient to fully recover the repository, it can also+reset branches back to commits before the corruption happened, delete+branches that are no longer available due to the lost data, and remove any+missing files from the index. It will only do this if run with the+`--force` option, since that rewrites history and throws out missing data.+Note that the `--force` option never touches tags, even if they are no+longer usable due to missing data.+ +After running this command, you will probably want to run `git fsck` to+verify it fixed the repository. Note that fsck may still complain about+objects referenced by the reflog, or the stash, if they were unable to be+recovered. This command does not try to clean up either the reflog or the+stash.+ +It is also a good idea to run `git annex fsck --fast` after this command,+to make sure that the git-annex branch reflects reality.++# OPTIONS++* `--force`++ Enable repair actions that involve deleting data that has been+ lost due to git repository corruption.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-resolvemerge.mdwn view
@@ -0,0 +1,27 @@+# NAME++git-annex resolvemerge - resolve merge conflicts++# SYNOPSIS++git annex resolvemerge++# DESCRIPTION++Resolves a conflicted merge, by adding both conflicting versions of the+file to the tree, using variants of their filename. This is done+automatically when using `git annex sync` or `git annex merge`.++Note that only merge conflicts that involve an annexed file are resolved.+Merge conflicts between two files that are not annexed will not be+automatically resolved.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-rmurl.mdwn view
@@ -0,0 +1,21 @@+# NAME++git-annex rmurl - record file is not available at url++# SYNOPSIS++git annex rmurl `file url`++# DESCRIPTION++Record that the file is no longer available at the url.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-schedule.mdwn view
@@ -0,0 +1,47 @@+# NAME++git-annex schedule - get or set scheduled jobs++# SYNOPSIS++git annex schedule `repository [expression]`++# DESCRIPTION++The [[git-annex-assistant]](1) daemon can be configured to run scheduled jobs.+This is similar to cron and anacron (and you can use them if you prefer),+but has the advantage of being integrated into git-annex, and so being able+to e.g., fsck a repository on a removable drive when the drive gets+connected.++When run with an expression, configures scheduled jobs to run at a+particular time. This can be used to make the assistant periodically run+incremental fscks.++When run without an expression, outputs the current scheduled jobs for+the repository.++# EXPRESSIONS++These actions are available: "fsck self", "fsck UUID" (where UUID+is the UUID of a remote to fsck). After the action comes the duration+to allow the action to run, and finally the schedule of when to run it.+ +To schedule multiple jobs, separate them with "; ".+ + Some examples:+ + fsck self 30m every day at any time+ fsck self 1h every month at 3 AM+ fsck self 1h on day 1 of every month at any time+ fsck self 1h every week divisible by 2 at any time++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-semitrust.mdwn view
@@ -0,0 +1,24 @@+# NAME++git-annex semitrust - return repository to default trust level++# SYNOPSIS++git annex semitrust `[repository ...]`++# DESCRIPTION++Returns a repository to the default semi trusted state.++Repositories can be specified using their remote name, their+description, or their UUID. For the current repository, use "here".++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-setpresentkey.mdwn view
@@ -0,0 +1,25 @@+# NAME++git-annex setpresentkey - change records of where key is present++# SYNOPSIS++git annex setpresentkey `key uuid [1|0]`++# DESCRIPTION++This plumbing-level command changes git-annex's records about whether+the specified key's content is present in a remote with the specified uuid.++Use 1 to indicate the key is present, or 0 to indicate the key is+not present.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-status.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex status - show the working tree status++# SYNOPSIS++git annex status `[path ...]`++# DESCRIPTION++Similar to `git status --short`, this command displays the status of the files+in the working tree. Shows files that are not checked into git, files that have+been deleted, and files that have been modified.++Particularly useful in direct mode.++# OPTIONS++* `--json`++ Enable JSON output. This is intended to be parsed by programs that use+ git-annex. Each line of output is a JSON object.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-sync.mdwn view
@@ -0,0 +1,64 @@+# NAME++git-annex sync - synchronize local repository with remotes++# SYNOPSIS++git annex sync `[remote ...]`++# DESCRIPTION++Use this command when you want to synchronize the local repository with+one or more of its remotes. You can specify the remotes (or remote+groups) to sync with by name; the default if none are specified is to+sync with all remotes.++The sync process involves first committing any local changes to files+that have previously been added to the repository,+then fetching and merging the `synced/master` and the `git-annex` branch+from the remote repositories, and finally pushing the changes back to+those branches on the remote repositories. You can use standard git+commands to do each of those steps by hand, or if you don't want to+worry about the details, you can use sync.++Merge conflicts are automatically handled by sync. When two conflicting+versions of a file have been committed, both will be added to the tree,+under different filenames. For example, file "foo" would be replaced+with "foo.somekey" and "foo.otherkey".++Note that syncing with a remote will not update the remote's working+tree with changes made to the local repository. However, those changes+are pushed to the remote, so they can be merged into its working tree+by running "git annex sync" on the remote.+++# OPTIONS++* `--fast`++ Only sync with the remotes with the lowest annex-cost value configured.++* `--content`++ Normally, syncing does not transfer the contents of annexed files.+ This option causes the file contents to also be uploaded and downloaded+ as necessary. ++ By default, this tries to get each annexed file that the local repository + does not yet have, and then copies each file to every remote that it is+ syncing with. This behavior can be overridden by configuring the preferred+ content of a repository. See [git-annex-preferred-content](1)++* `--message=msg`++ Use this option to specify a commit message.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-test.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex test - run built-in test suite++# SYNOPSIS++git annex test++# DESCRIPTION++This runs git-annex's built-in test suite.++The test suite runs in the `.t` subdirectory of the current directory+(it refuses to run if `.t` already exists).++It can be useful to run the test suite on different filesystems,+or to verify your local installation of git-annex.++# OPTIONS+ +There are several options, provided by Haskell's tasty test+framework. Pass --help for details.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-testremote.mdwn view
@@ -0,0 +1,39 @@+# NAME++git-annex testremote - test transfers to/from a remote++# SYNOPSIS++git annex testremote `remote`++# DESCRIPTION++This tests a remote by generating some random objects and sending them to+the remote, then redownloading them, removing them from the remote, etc.++It's safe to run in an existing repository (the repository contents are+not altered), although it may perform expensive data transfers.++Testing a single remote will use the remote's configuration,+automatically varying the chunk sizes, and with simple shared encryption+enabled and disabled.++# OPTIONS++* `--fast`++ Perform a smaller set of tests.++* `--size=NUnits`++ Tune the base size of the generated objects. The default is 1MiB.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-transferkey.mdwn view
@@ -0,0 +1,37 @@+# NAME++git-annex transferkey - transfers a key from or to a remote++# SYNOPSIS++git annex transferkey `key [--from=remote|--to=remote]`++# DESCRIPTION++This plumbing-level command is used to request a single key be+transferred.++# OPTIONS++* `--from=remote`++ Download the content of the key from the remote.++* `--to=remote`++ Upload the content of the key to the remote.++* `--file=name`++ Provides a hint about the name of the file associated with the key.+ (This name is only used in progress displays.)++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-transferkeys.mdwn view
@@ -0,0 +1,29 @@+# NAME++git-annex transferkeys - transfers keys++# SYNOPSIS++git annex transferkeys++# DESCRIPTION++This plumbing-level command is used by the assistant to transfer data.+It is a long-running process, which is fed instructions about the keys+to transfer using an internal stdio protocol, which is+intentionally not documented (as it may change at any time).++It's normal to have a transferkeys process running when the assistant is+running.++# SEE ALSO++[[git-annex]](1)++[[git-annex-assistant]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-trust.mdwn view
@@ -0,0 +1,25 @@+# NAME++git-annex trust - trust a repository++# SYNOPSIS++git annex trust `[repository ...]`++# DESCRIPTION++Records that a repository is trusted to not unexpectedly lose+content. Use with care.++Repositories can be specified using their remote name, their+description, or their UUID. To trust the current repository, use "here".++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-unannex.mdwn view
@@ -0,0 +1,43 @@+# NAME++git-annex unannex - undo accidential add command++# SYNOPSIS++git annex unannex `[path ...]`++# DESCRIPTION++Use this to undo an accidental `git annex add` command. It puts the+file back how it was before the add.++Note that for safety, the content of the file remains in the annex,+until you use `git annex unused` and `git annex dropunused`.++This is not the command you should use if you intentionally annexed a+file and don't want its contents any more. In that case you should use+`git annex drop` instead, and you can also `git rm` the file.++# OPTIONS++* `--fast`++ Normally this does a slow copy of the file. In `--fast` mode, it+ instead makes a hard link from the file to the content in the annex.+ But use --fast mode with caution, because editing the file will+ change the content in the annex.++* file matching options++ The [[git-annex-matching-options]](1)+ can be used to specify files to unannex.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-undo.mdwn view
@@ -0,0 +1,33 @@+# NAME++git-annex undo - undo last change to a file or directory++# SYNOPSIS++git annex `[filename|directory] ...`++# DESCRIPTION++When passed a filename, undoes the last change that was made to that+file.+ +When passed a directory, undoes the last change that was made to the+contents of that directory.+ +Running undo a second time will undo the undo, returning the working+tree to the same state it had before. In order for undoing an undo of+staged changes, any staged changes are first committed by the+undo command.++Note that this does not undo get/drop of a file's content; it only+operates on the file tree committed to git.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-ungroup.mdwn view
@@ -0,0 +1,21 @@+# NAME++git-annex ungroup - remove a repository from a group++# SYNOPSIS++git annex ungroup `repository groupname`++# DESCRIPTION++Removes a repository from a group.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-uninit.mdwn view
@@ -0,0 +1,25 @@+# NAME++git-annex uninit - de-initialize git-annex and clean out repository++# SYNOPSIS++git annex uninit++# DESCRIPTION++Use this to stop using git annex. It will unannex every file in the+repository, and remove all of git-annex's other data, leaving you with a+git repository plus the previously annexed files.++# SEE ALSO++[[git-annex]](1)++[[git-annex-unannex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-unlock.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex unlock - unlock files for modification++# SYNOPSIS++git annex unlock `[path ...]`++# DESCRIPTION++Normally, the content of annexed files is protected from being changed.+Unlocking an annexed file allows it to be modified. This replaces the+symlink for each specified file with a copy of the file's content.+You can then modify it and `git annex add` (or `git commit`) to inject+it back into the annex.++# OPTIONS++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to unlock.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-untrust.mdwn view
@@ -0,0 +1,25 @@+# NAME++git-annex untrust - do not trust a repository++# SYNOPSIS++git annex untrust `[repository ...]`++# DESCRIPTION++Records that a repository is not trusted and could lose content+at any time.++Repositories can be specified using their remote name, their+description, or their UUID. To untrust the current repository, use "here".++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-unused.mdwn view
@@ -0,0 +1,39 @@+# NAME++git-annex unused - look for unused file content++# SYNOPSIS++git annex unused++# DESCRIPTION++Checks the annex for data that does not correspond to any files present+in any tag or branch, and prints a numbered list of the data.++After running this command, you can use the `--unused` option with many +other git-annex commands to operate on all the unused data that was found.++For example, to move all unused data to origin:+ + git annex unused; git annex move --unused --to origin++# OPTIONS++* `--fast`++ Only show unused temp and bad files.++* `--from=remote`++ Check for unused data on a remote.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-upgrade.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex upgrade - upgrade repository layout++# SYNOPSIS++git annex upgrade++# DESCRIPTION++Upgrades the repository to current layout.++Each git-annex repository has an annex.version in its git configuration,+that indicates the repository version. If git-annex changes to a new+layout, you must upgrade the repository before git-annex can be used in it.++To see version information, run `git annex version`. ++Currently, git-annex supports upgrades all the way back to version 0, which+was only used by its author. It's expected that git-annex will always+support upgrading from all past repository versions -- this is necessary to+allow archives to be taken offline for years and later used.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-vadd.mdwn view
@@ -0,0 +1,36 @@+# NAME++git-annex vadd - add subdirs to current view++# SYNOPSIS++git annex vadd `[field=glob ...] [field=value ...] [tag ...]`++# DESCRIPTION++Changes the current view, adding an additional level of directories+to categorize the files.++For example, when the view is by author/tag, `vadd year=*` will+change it to year/author/tag.++So will `vadd year=2014 year=2013`, but limiting the years in view+to only those two.++# SEE ALSO++[[git-annex]](1)++[[git-annex-view]](1)++[[git-annex-vpop]](1)++[[git-annex-vfilter]](1)++[[git-annex-vcycle]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-vcycle.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex vcycle - switch view to next layout++# SYNOPSIS++git annex vcycle++# DESCRIPTION++When a view involves nested subdirectories, this cycles the order.+ +For example, when the view is by year/author/tag, `vcycle` will switch+it to author/tag/year.++# SEE ALSO++[[git-annex]](1)++[[git-annex-view]](1)++[[git-annex-vpop]](1)++[[git-annex-vadd]](1)++[[git-annex-vfilter]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-version.mdwn view
@@ -0,0 +1,30 @@+# NAME++git-annex version - show version info++# SYNOPSIS++git annex version++# DESCRIPTION++Shows the version of git-annex, as well as repository version information.++git-annex's version is in the form MAJOR.DATE, where MAJOR is a number+like 5, which corresponds to the current repository version, and DATE+is the date of the last release, like 20150320.++Daily builds of git-annex will append a "-gREF" to the version, which+corresponds to the git ref from git-annex's source repository that was+built. Therefore, "5.20150320-gdd35cf3" is a daily build, and+"5.20150401" is an April 1st release made a bit later.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-vfilter.mdwn view
@@ -0,0 +1,30 @@+# NAME++git-annex vfilter - filter current view++# SYNOPSIS++git annex vfilter `[tag ...] [field=value ...] [!tag ...] [field!=value ...]`++# DESCRIPTION++Filters the current view to only the files that have the+specified field values and tags.++# SEE ALSO++[[git-annex]](1)++[[git-annex-view]](1)++[[git-annex-vpop]](1)++[[git-annex-vadd]](1)++[[git-annex-vcycle]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-vicfg.mdwn view
@@ -0,0 +1,23 @@+# NAME++git-annex vicfg - edit git-annex's configuration++# SYNOPSIS++git annex vicfg++# DESCRIPTION++Opens EDITOR on a temp file containing all of git-annex's global +configuration settings, and when it exits, stores any+changes made back to the git-annex branch.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-view.mdwn view
@@ -0,0 +1,51 @@+# NAME++git-annex view - enter a view branch++# SYNOPSIS++git annex view `[tag ...] [field=value ...] [field=glob ...] [!tag ...] [field!=value ...]`++# DESCRIPTION++Uses metadata to build a view branch of the files in the current branch,+and checks out the view branch. Only files in the current branch whose+metadata matches all the specified field values and tags will be+shown in the view.++Multiple values for a metadata field can be specified, either by using+a glob (`field="*"`) or by listing each wanted value. The resulting view+will put files in subdirectories according to the value of their fields.+ +Once within such a view, you can make additional directories, and+copy or move files into them. When you commit, the metadata will+be updated to correspond to your changes.+ +There are fields corresponding to the path to the file. So a file+"foo/bar/baz/file" has fields "/=foo", "foo/=bar", and "foo/bar/=baz".+These location fields can be used the same as other metadata to construct+the view.+ +For example, `/=podcasts` will only include files from the podcasts+directory in the view, while `podcasts/=*` will preserve the+subdirectories of the podcasts directory in the view.++# SEE ALSO++[[git-annex]](1)++[[git-annex-metadata]](1)++[[git-annex-vpop]](1)++[[git-annex-vfilter]](1)++[[git-annex-vadd]](1)++[[git-annex-vcycle]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-vpop.mdwn view
@@ -0,0 +1,32 @@+# NAME++git-annex vpop - switch back to previous view++# SYNOPSIS++git annex vpop `[N]`++# DESCRIPTION++Switches from the currently active view back to the previous view.+Or, from the first view back to original branch.+ +The optional number tells how many views to pop.++# SEE ALSO++[[git-annex]](1)++[[git-annex-view]](1)++[[git-annex-vfilter]](1)++[[git-annex-vadd]](1)++[[git-annex-vcycle]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-wanted.mdwn view
@@ -0,0 +1,29 @@+# NAME++git-annex wanted - get or set preferred content expression++# SYNOPSIS++git annex wanted `repository [expression]`++# DESCRIPTION++When run with an expression, configures the content that is preferred+to be held in the archive. See [[git-annex-preferred-content]](1)++For example:++ git annex wanted . "include=*.mp3 or include=*.ogg"++Without an expression, displays the current preferred content setting+of the repository.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-watch.mdwn view
@@ -0,0 +1,43 @@+# NAME++git-annex watch - watch for changes++# SYNOPSIS++git annex watch++# DESCRIPTION++Watches for changes to files in the current directory and its subdirectories,+and takes care of automatically adding new files, as well as dealing with+deleted, copied, and moved files. With this running as a daemon in the+background, you no longer need to manually run git commands when+manipulating your files.+ +By default, all files in the directory will be added to the repository.+(Including dotfiles.) To block some files from being added, use+`.gitignore` files.+ +By default, all files that are added are added to the annex, the same+as when you run `git annex add`. If you configure annex.largefiles,+files that it does not match will instead be added with `git add`.++# OPTIONS++* `--foreground`++ Avoid forking to the background.++* `--stop`++ Stop a running daemon.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-webapp.mdwn view
@@ -0,0 +1,49 @@+# NAME++git-annex webapp - launch webapp++# SYNOPSIS++git annex webapp++# DESCRIPTION++Opens a web app, that allows easy setup of a git-annex repository,+and control of the git-annex assistant. If the assistant is not+already running, it will be started.++By default, the webapp can only be accessed from localhost, and running+it opens a browser window.++# OPTIONS++* `--listen=address`++ Useful for using the webapp on a remote computer. This makes the webapp+ listen on the specified address.++ This disables running a local web browser, and outputs the url you+ can use to open the webapp.++ Set annex.listen in the git config to make the webapp always+ listen on an address.++# USING HTTPS++When using the webapp on a remote computer, you'll almost certainly+want to enable HTTPS. The webapp will use HTTPS if it finds+a .git/annex/privkey.pem and .git/annex/certificate.pem. Here's+one way to generate those files, using a self-signed certificate:+ + openssl genrsa -out .git/annex/privkey.pem 4096+ openssl req -new -x509 -key .git/annex/privkey.pem > .git/annex/certificate.pem++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-whereis.mdwn view
@@ -0,0 +1,43 @@+# NAME++git-annex whereis - lists repositories that have file content++# SYNOPSIS++git annex whereis `[path ...]`++# DESCRIPTION++Displays information about where the contents of files are located.++For example:++ # git annex whereis+ whereis my_cool_big_file (1 copy)+ 0c443de8-e644-11df-acbf-f7cd7ca6210d -- laptop+ whereis other_file (3 copies)+ 0c443de8-e644-11df-acbf-f7cd7ca6210d -- laptop+ 62b39bbe-4149-11e0-af01-bb89245a1e61 -- usb drive [here]+ 7570b02e-15e9-11e0-adf0-9f3f94cb2eaa -- backup drive++# OPTIONS++* `--json`++ Enable JSON output. This is intended to be parsed by programs that use+ git-annex. Each line of output is a JSON object.++* file matching options+ + The [[git-annex-matching-options]](1)+ can be used to specify files to act on.++# SEE ALSO++[[git-annex]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
+ doc/git-annex-xmppgit.mdwn view
@@ -0,0 +1,23 @@+# NAME++git-annex xmppgit - git to XMPP relay++# SYNOPSIS++git annex xmppgit++# DESCRIPTION++This command is used internally by the assistant to perform git pulls over XMPP.++# SEE ALSO++[[git-annex]](1)++[[git-annex-assistant]](1)++# AUTHOR++Joey Hess <id@joeyh.name>++Warning: Automatically converted into a man page by mdwn2man. Edit with care.
doc/git-annex.mdwn view
@@ -60,1888 +60,1182 @@ default to acting on all relevant files in the current directory (and subdirectories). -* `add [path ...]`-- Adds files in the path to the annex. If no path is specified, adds- files from the current directory and below.-- Files that are already checked into git, or that git has been configured- to ignore will be silently skipped. (Use `--force` to add ignored files.)-- Dotfiles are skipped unless explicitly listed, or the --include-dotfiles- option is used.--* `get [path ...]`-- Makes the content of annexed files available in this repository. This- will involve copying them from another repository, or downloading them,- or transferring them from some kind of key-value store.-- Normally git-annex will choose which repository to copy the content from,- but you can override this using the `--from` option.- - Rather than specifying a filename, the `--all` option can be used to - get all available versions of all files, or the --key=KEY`- option can be used to get a specified key.--* `drop [path ...]`-- Drops the content of annexed files from this repository.-- git-annex will refuse to drop content if it cannot verify it is- safe to do so. This can be overridden with the `--force` switch.-- To drop content from a remote, specify `--from`.--* `move [path ...]`-- When used with the `--from` option, moves the content of annexed files- from the specified repository to the current one.-- When used with the `--to` option, moves the content of annexed files from- the current repository to the specified one.--* `copy [path ...]`-- When used with the `--from` option, copies the content of annexed files- from the specified repository to the current one.-- When used with the `--to` option, copies the content of annexed files from- the current repository to the specified one.-- To avoid contacting the remote to check if it has every file- when copying --to the repository, specify `--fast`-- To force checking the remote for every file when copying --from the- repository, specify `--force`.--* `status [path ...]`-- Similar to `git status --short`, displays the status of the files in the- working tree. Shows files that are not checked into git, files that- have been deleted, and files that have been modified.- Particularly useful in direct mode.--* `unlock [path ...]`-- Normally, the content of annexed files is protected from being changed.- Unlocking an annexed file allows it to be modified. This replaces the- symlink for each specified file with a copy of the file's content.- You can then modify it and `git annex add` (or `git commit`) to inject- it back into the annex.--* `edit [path ...]`-- This is an alias for the unlock command. May be easier to remember,- if you think of this as allowing you to edit an annexed file.--* `lock [path ...]`-- Use this to undo an unlock command if you don't want to modify- the files, or have made modifications you want to discard.--* `sync [remote ...]`-- Use this command when you want to synchronize the local repository with- one or more of its remotes. You can specify the remotes (or remote- groups) to sync with by name; the default if none are specified is to- sync with all remotes.- Or specify `--fast` to sync with the remotes with the- lowest annex-cost value.-- The sync process involves first committing any local changes to files- that have previously been added to the repository,- then fetching and merging the `synced/master` and the `git-annex` branch- from the remote repositories, and finally pushing the changes back to- those branches on the remote repositories. You can use standard git- commands to do each of those steps by hand, or if you don't want to- worry about the details, you can use sync.-- Merge conflicts are automatically handled by sync. When two conflicting- versions of a file have been committed, both will be added to the tree,- under different filenames. For example, file "foo" would be replaced- with "foo.somekey" and "foo.otherkey".-- Note that syncing with a remote will not update the remote's working- tree with changes made to the local repository. However, those changes- are pushed to the remote, so they can be merged into its working tree- by running "git annex sync" on the remote.-- With the `--content` option, the contents of annexed files in the work- tree will also be uploaded and downloaded from remotes. By default,- this tries to get each annexed file that the local repository does not- yet have, and then copies each file to every remote that it is syncing with.- This behavior can be overridden by configuring the preferred content of- a repository. See see PREFERRED CONTENT below.-- The `--message` or `-m` option can be used to specify a commit message.--* `merge`-- This performs the same merging (and merge conflict resolution)- that is done by the sync command, but without pushing or pulling any data.-- One way to use this is to put `git annex merge` into a repository's- post-receive hook. Then any syncs to the repository will update its working- copy automatically.--* `mirror [path ...]`-- This causes a destination repository to mirror a source repository.-- To use the local repository as the source repository,- specify mirror `--to` remote.-- To use a remote as the source repository, specify mirror `--from` remote.-- Each specified file in the source repository is mirrored to the destination- repository. If a file's content is present in the source repository, it is- copied to the destination repository. If a file's content is not present in- the source repository, it will be dropped from the destination repository- when the numcopies setting allows.-- Note that mirror does not sync the git repository, but only the file- contents.-- Also, --all may be specified to mirror all objects stored in the git- annex, not only objects used by currently existing files. However, this- bypasses checking the .gitattributes annex.numcopies setting when- dropping files.--* `addurl [url ...]`-- Downloads each url to its own file, which is added to the annex.-- To avoid immediately downloading the url, specify `--fast`.-- To avoid storing the size of the url's content, and accept whatever- is there at a future point, specify `--relaxed`. (Implies `--fast`.)-- Normally the filename is based on the full url, so will look like- "www.example.com_dir_subdir_bigfile". In some cases, addurl is able to- come up with a better filename based on other information. Or, for a- shorter filename, specify `--pathdepth=N`. For example,- `--pathdepth=1` will use "dir/subdir/bigfile",- while `--pathdepth=3` will use "bigfile". It can also be negative;- `--pathdepth=-2` will use the last two parts of the url.-- Or, to directly specify what file the url is added to, specify `--file`.- This changes the behavior; now all the specified urls are recorded as- alternate locations from which the file can be downloaded. In this mode,- addurl can be used both to add new files, or to add urls to existing files.-- When `quvi` is installed, urls are automatically tested to see if they- point to a video hosting site, and the video is downloaded instead.-- Urls to torrent files (including magnet links) will cause the content of- the torrent to be downloaded, using `aria2c`.-- To prevent special handling of urls by quvi, bittorrent, and other- special remotes, specify `--raw`. This will for example, make addurl- download the .torrent file and not the contents it points to.--* `rmurl file url`-- Record that the file is no longer available at the url.--* `import [path ...]`-- Moves files from somewhere outside the git working copy, and adds them to- the annex. Individual files to import can be specified.- If a directory is specified, the entire directory is imported.-- git annex import /media/camera/DCIM/*-- By default, importing two files with the same contents from two different- locations will result in both files being added to the repository.- (With all checksumming backends, including the default SHA256E,- only one copy of the data will be stored.)-- To not delete files from the import location, use the- `--duplicate` option. This could allow importing the same files repeatedly- to different locations in a repository. More likely, it could be used to- import the same files to a number of different branches or separate git- repositories.-- To only import files whose content has not been seen before by git-annex,- use the `--deduplicate` option. Duplicate files will be deleted from the- import location.-- To only import files whose content has not been seen before by git-annex,- but avoid deleting duplicate files, use the `--skip-duplicates` option.-- The `--clean-duplicates` option does not import any new files, but any files- found in the import location that are duplicates of content in the annex- are deleted.-- (Note that using `--deduplicate` or `--clean-duplicates` with the WORM- backend does not look at file content, but filename and mtime.)- - To control which files are imported, many of the MATCHING OPTIONS can - be used.-- git annex import /dir --include='*.png'--* `importfeed [url ...]`-- Imports the contents of podcast feeds. Only downloads files whose- urls have not already been added to the repository before, so you can- delete, rename, etc the resulting files and repeated runs won't duplicate- them. (Use `--force` to force downloading urls it's seen before.)-- Use `--template` to control where the files are stored.- The default template is '${feedtitle}/${itemtitle}${extension}'- (Other available variables: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate, title, author)-- The `--relaxed`, `--fast`, and `--raw` options behave the same as they- do in addurl.-- When quvi is installed, links in the feed are tested to see if they- are on a video hosting site, and the video is downloaded. This allows- importing e.g., youtube playlists.--* `undo [filename|directory] ...`-- When passed a filename, undoes the last change that was made to that- file.-- When passed a directory, undoes the last change that was made to the- contents of that directory.-- Running undo a second time will undo the undo, returning the working- tree to the same state it had before. In order for undoing an undo of- staged changes, any staged changes are first committed by the- undo command.-- Note that this does not undo get/drop of a file's content; it only- operates on the file tree committed to git.--* `watch`-- Watches for changes to files in the current directory and its subdirectories,- and takes care of automatically adding new files, as well as dealing with- deleted, copied, and moved files. With this running as a daemon in the- background, you no longer need to manually run git commands when- manipulating your files.-- By default, all files in the directory will be added to the repository.- (Including dotfiles.) To block some files from being added, use- `.gitignore` files.-- By default, all files that are added are added to the annex, the same- as when you run `git annex add`. If you configure annex.largefiles,- files that it does not match will instead be added with `git add`.-- To not daemonize, run with `--foreground` ; to stop a running daemon,- run with `--stop`.--* `assistant`-- Like watch, but also automatically syncs changes to other remotes.- Typically started at boot, or when you log in.-- With the `--autostart` option, the assistant is started in any repositories- it has created. These are listed in `~/.config/git-annex/autostart`.--* `webapp`-- Opens a web app, that allows easy setup of a git-annex repository,- and control of the git-annex assistant. If the assistant is not- already running, it will be started.-- By default, the webapp can only be accessed from localhost, and running- it opens a browser window.-- To use the webapp on a remote computer, use the `--listen=address`- option to specify the address the web server should listen on- (or set annex.listen).- This disables running a local web browser, and outputs the url you- can use to open the webapp.-- When using the webapp on a remote computer, you'll almost certainly- want to enable HTTPS. The webapp will use HTTPS if it finds- a .git/annex/privkey.pem and .git/annex/certificate.pem. Here's- one way to generate those files, using a self-signed certificate:-- openssl genrsa -out .git/annex/privkey.pem 4096- openssl req -new -x509 -key .git/annex/privkey.pem > .git/annex/certificate.pem--# REPOSITORY SETUP COMMANDS--* `init [description]`-- Until a repository (or one of its remotes) has been initialized,- git-annex will refuse to operate on it, to avoid accidentally- using it in a repository that was not intended to have an annex.-- It's useful, but not mandatory, to initialize each new clone- of a repository with its own description. If you don't provide one,- one will be generated using the username, hostname and the path.--* `describe repository description`-- Changes the description of a repository.-- The repository to describe can be specified by git remote name or- by uuid. To change the description of the current repository, use- "here".--* `initremote name [param=value ...]`-- Creates a new special remote, and adds it to `.git/config`.-- The remote's configuration is specified by the parameters. Different- types of special remotes need different configuration values. The- command will prompt for parameters as needed.-- All special remotes support encryption. You can either specify- `encryption=none` to disable encryption, or specify- `encryption=hybrid keyid=$keyid ...` to specify a GPG key id (or an email- address associated with a key).-- There are actually three schemes that can be used for management of the- encryption keys. When using the encryption=hybrid scheme, additional- GPG keys can be given access to the encrypted special remote easily- (without re-encrypting everything). When using encryption=shared,- a shared key is generated and stored in the git repository, allowing- anyone who can clone the git repository to access it. Finally, when using- encryption=pubkey, content in the special remote is directly encrypted- to the specified GPG keys, and additional ones cannot easily be given- access.-- Note that with encryption enabled, a cryptographic key is created.- This requires sufficient entropy. If initremote seems to hang or take- a long time while generating the key, you may want to Ctrl-c it and- re-run with `--fast`, which causes it to use a lower-quality source of- randomness.-- Example Amazon S3 remote:-- git annex initremote mys3 type=S3 encryption=hybrid keyid=me@example.com datacenter=EU--* `enableremote name [param=value ...]`-- Enables use of an existing special remote in the current repository,- which may be a different repository than the one in which it was- originally created with the initremote command.-- The name of the remote is the same name used when originally- creating that remote with "initremote". Run "git annex enableremote"- without any name to get a list of special remote names.-- Some special remotes may need parameters to be specified every time.- For example, the directory special remote requires a directory= parameter.-- This command can also be used to modify the configuration of an existing- special remote, by specifying new values for parameters that were- originally set when using initremote. (However, some settings such as- the as the encryption scheme cannot be changed once a special remote- has been created.)-- The GPG keys that an encrypted special remote is encrypted with can be- changed using the keyid+= and keyid-= parameters. These respectively- add and remove keys from the list. However, note that removing a key- does NOT necessarily prevent the key's owner from accessing data- in the encrypted special remote- (which is by design impossible, short of deleting the remote).-- One use-case of keyid-= is to replace a revoked key with- a new key:-- git annex enableremote mys3 keyid-=revokedkey keyid+=newkey-- Also, note that for encrypted special remotes using plain public-key- encryption (encryption=pubkey), adding or removing a key has NO effect- on files that have already been copied to the remote. Hence using- keyid+= and keyid-= with such remotes should be used with care, and- make little sense except in cases like the revoked key example above.--* `numcopies [N]`-- Tells git-annex how many copies it should preserve of files, over all- repositories. The default is 1.-- Run without a number to get the current value.-- When git-annex is asked to drop a file, it first verifies that the- required number of copies can be satisfied among all the other- repositories that have a copy of the file.-- This can be overridden on a per-file basis by the annex.numcopies setting- in .gitattributes files.--* `trust [repository ...]`-- Records that a repository is trusted to not unexpectedly lose- content. Use with care.-- To trust the current repository, use "here".--* `untrust [repository ...]`-- Records that a repository is not trusted and could lose content- at any time.--* `semitrust [repository ...]`-- Returns a repository to the default semi trusted state.--* `dead [repository ...]`-- Indicates that the repository has been irretrievably lost.- (To undo, use semitrust.)--* `group repository groupname`-- Adds a repository to a group, such as "archival", "enduser", or "transfer".- The groupname must be a single word.-- Omit the groupname to show the current groups that a repository is in.--* `ungroup repository groupname`-- Removes a repository from a group.--* `wanted repository [expression]`-- When run with an expression, configures the content that is preferred- to be held in the archive. See PREFERRED CONTENT below.-- For example:-- git annex wanted . "include=*.mp3 or include=*.ogg"-- Without an expression, displays the current preferred content setting- of the repository.--* `groupwanted groupname [expression]`-- Sets or displays the groupwanted expression. This will be used by- repositories that are in the group, and that have their preferred- content expression set to "groupwanted".-- For example, to configure a group named redundantarchive, and- make repositories in the group want to contain 3 copies of every file:-- git annex groupwanted redundantarchive "not (copies=redundantarchive:3)"- for repo in foo bar baz; do- git annex group $repo redundantarchive- git annex wanted $repo groupwanted- done--* `schedule repository [expression]`-- When run with an expression, configures scheduled jobs to run at a- particular time. This can be used to make the assistant periodically run- incremental fscks. See SCHEDULED JOBS below.--* `vicfg`-- Opens EDITOR on a temp file containing most of the above configuration- settings, as well as a few others, and when it exits, stores any changes- made back to the git-annex branch.--* `direct`-- Switches a repository to use direct mode, where rather than symlinks to- files, the files are directly present in the repository.-- As part of the switch to direct mode, any changed files will be committed.-- Note that git commands that operate on the work tree will refuse to- run in direct mode repositories. Use `git annex proxy` to safely run such- commands.--* `indirect`-- Switches a repository back from direct mode to the default, indirect mode.-- As part of the switch from direct mode, any changed files will be committed.--# REPOSITORY MAINTENANCE COMMANDS--* `fsck [path ...]`-- With no parameters, this command checks the whole annex for consistency,- and warns about or fixes any problems found. This is a good complement to- `git fsck`.-- With parameters, only the specified files are checked.-- To check a remote to fsck, specify `--from`.-- To avoid expensive checksum calculations (and expensive transfers when- fscking a remote), specify `--fast`.-- To start a new incremental fsck, use the `--incremental` option. Then- the next time you fsck, you can instead use the `--more` option - to skip over files that have already been checked, and continue- where it left off.-- The `--incremental-schedule` option makes a new incremental fsck be- started a configurable time after the last incremental fsck was started.- Once the current incremental fsck has completely finished, it causes- a new one to start.-- Maybe you'd like to run a fsck for 5 hours at night, picking up each- night where it left off. You'd like this to continue until all files- have been fscked. And once it's done, you'd like a new fsck pass to start,- but no more often than once a month. Then put this in a nightly cron job:-- git annex fsck --incremental-schedule 30d --time-limit 5h-- To verify data integrity only while disregarding required number of copies,- use `--numcopies=1`.--* `unused`-- Checks the annex for data that does not correspond to any files present- in any tag or branch, and prints a numbered list of the data.-- To only show unused temp and bad files, specify `--fast`.-- To check for annexed data on a remote, specify `--from`.-- After running this command, you can use the `--unused` option to- operate on all the unused data that was found. For example, to- move all unused data to origin:-- git annex unused; git annex move --unused --to origin--* `dropunused [number|range ...]`-- Drops the data corresponding to the numbers, as listed by the last- `git annex unused`-- You can also specify ranges of numbers, such as "1-1000".- Or, specify "all" to drop all unused data.-- To drop the data from a remote, specify `--from.`--* `addunused [number|range ...]`-- Adds back files for the content corresponding to the numbers or ranges,- as listed by the last `git annex unused`. The files will have names- starting with "unused."--* `fix [path ...]`-- Fixes up symlinks that have become broken to again point to annexed content.- This is useful to run if you have been moving the symlinks around,- but is done automatically when committing a change with git too.--* `upgrade`-- Upgrades the repository to current layout.--* `forget`-- Causes the git-annex branch to be rewritten, throwing away historical- data about past locations of files. The resulting branch will use less- space, but `git annex log` will not be able to show where- files used to be located.-- To also prune references to repositories that have been marked as dead,- specify `--drop-dead`.-- When this rewritten branch is merged into other clones of- the repository, `git-annex` will automatically perform the same rewriting- to their local `git-annex` branches. So the forgetfulness will automatically- propagate out from its starting point until all repositories running- git-annex have forgotten their old history. (You may need to force- git to push the branch to any git repositories not running git-annex.)--* `repair`-- This can repair many of the problems with git repositories that `git fsck`- detects, but does not itself fix. It's useful if a repository has become- badly damaged. One way this can happen is if a repository used by git-annex- is on a removable drive that gets unplugged at the wrong time.-- This command can actually be used inside git repositories that do not- use git-annex at all; when used in a repository using git-annex, it- does additional repairs of the git-annex branch.-- It works by deleting any corrupt objects from the git repository, and- retrieving all missing objects it can from the remotes of the repository.-- If that is not sufficient to fully recover the repository, it can also- reset branches back to commits before the corruption happened, delete- branches that are no longer available due to the lost data, and remove any- missing files from the index. It will only do this if run with the- `--force` option, since that rewrites history and throws out missing data.- Note that the `--force` option never touches tags, even if they are no- longer usable due to missing data.-- After running this command, you will probably want to run `git fsck` to- verify it fixed the repository. Note that fsck may still complain about- objects referenced by the reflog, or the stash, if they were unable to be- recovered. This command does not try to clean up either the reflog or the- stash.-- It is also a good idea to run `git annex fsck --fast` after this command,- to make sure that the git-annex branch reflects reality.--# QUERY COMMANDS--* `find [path ...]`-- Outputs a list of annexed files in the specified path. With no path,- finds files in the current directory and its subdirectories.-- By default, only lists annexed files whose content is currently present.- This can be changed by specifying matching options. To list all- annexed files, present or not, specify `--include "*"`. To list all- annexed files whose content is not present, specify `--not --in=here`-- To output filenames terminated with nulls, for use with xargs -0,- specify `--print0`. Or, a custom output formatting can be specified using- `--format`. The default output format is the same as `--format='${file}\\n'`-- These variables are available for use in formats: file, key, backend,- bytesize, humansize, keyname, hashdirlower, hashdirmixed, mtime (for- the mtime field of a WORM key).--* `whereis [path ...]`-- Displays information about where the contents of files are located.--* `list [path ...]`-- Displays a table of remotes that contain the contents of the specified- files. This is similar to whereis but a more compact display. Only- configured remotes are shown by default; specify --allrepos to list- all repositories.--* `log [path ...]`-- Displays the location log for the specified file or files,- showing each repository they were added to ("+") and removed from ("-").-- To limit how far back to search for location log changes, the options- `--since`, `--after`, `--until`, `--before`, and `--max-count` can be specified.- They are passed through to git log. For example, `--since "1 month ago"`-- To generate output suitable for the gource visualization program,- specify `--gource`.--* `info [directory|file|remote|uuid ...]`-- Displays statistics and other information for the specified item,- which can be a directory, or a file, or a remote, or the uuid of a- repository. -- When no item is specified, displays statistics and information- for the repository as a whole.-- When a directory is specified, the MATCHING OPTIONS can be used- to select the files in the directory that are included in the statistics.-- To only show the data that can be gathered quickly, use `--fast`.-- For example, suppose you want to run "git annex get .", but- would first like to see how much disk space that will use.- Then run:-- git annex info --fast . --not --in here--* `version`-- Shows the version of git-annex, as well as repository version information.--* `map`-- Helps you keep track of your repositories, and the connections between them,- by going out and looking at all the ones it can get to, and generating a- Graphviz file displaying it all. If the `dot` command is available, it is- used to display the file to your screen (using x11 backend). (To disable- this display, specify `--fast`)-- This command only connects to hosts that the host it's run on can- directly connect to. It does not try to tunnel through intermediate hosts.- So it might not show all connections between the repositories in the network.-- Also, if connecting to a host requires a password, you might have to enter- it several times as the map is being built.-- Note that this subcommand can be used to graph any git repository; it- is not limited to git-annex repositories.--# METADATA COMMANDS--* `metadata [path ...] [-s field=value -s field+=value -s field-=value ...] [-g field]`-- The content of a file can have any number of metadata fields- attached to it to describe it. Each metadata field can in turn- have any number of values.-- This command can be used to set metadata, or show the currently set- metadata.-- To show current metadata, run without any -s parameters. The --json- option will enable json output.-- To only get the value(s) of a single field, use -g field.- The values will be output one per line, with no other output, so- this is suitable for use in a script.-- To set a field's value, removing any old value(s), use -s field=value.-- To add an additional value, use -s field+=value.-- To remove a value, use -s field-=value.-- To set a value, only if the field does not already have a value,- use -s field?=value-- To set a tag, use -t tag, and use -u tag to remove a tag.-- For example, to set some tags on a file and also its author:-- git annex metadata annexscreencast.ogv -t video -t screencast -s author+=Alice--* `view [tag ...] [field=value ...] [field=glob ...] [!tag ...] [field!=value ...]`-- Uses metadata to build a view branch of the files in the current branch,- and checks out the view branch. Only files in the current branch whose- metadata matches all the specified field values and tags will be- shown in the view.-- Multiple values for a metadata field can be specified, either by using- a glob (`field="*"`) or by listing each wanted value. The resulting view- will put files in subdirectories according to the value of their fields.-- Once within such a view, you can make additional directories, and- copy or move files into them. When you commit, the metadata will- be updated to correspond to your changes.-- There are fields corresponding to the path to the file. So a file- "foo/bar/baz/file" has fields "/=foo", "foo/=bar", and "foo/bar/=baz".- These location fields can be used the same as other metadata to construct- the view.-- For example, `/=podcasts` will only include files from the podcasts- directory in the view, while `podcasts/=*` will preserve the- subdirectories of the podcasts directory in the view.--* `vpop [N]`-- Switches from the currently active view back to the previous view.- Or, from the first view back to original branch.-- The optional number tells how many views to pop.--* `vfilter [tag ...] [field=value ...] [!tag ...] [field!=value ...]`-- Filters the current view to only the files that have the- specified field values and tags.--* `vadd [field=glob ...] [field=value ...] [tag ...]`-- Changes the current view, adding an additional level of directories- to categorize the files.-- For example, when the view is by author/tag, `vadd year=*` will- change it to year/author/tag.-- So will `vadd year=2014 year=2013`, but limiting the years in view- to only those two.--* `vcycle`-- When a view involves nested subdirectories, this cycles the order.-- For example, when the view is by year/author/tag, `vcycle` will switch- it to author/tag/year.--# UTILITY COMMANDS--* `migrate [path ...]`-- Changes the specified annexed files to use the default key-value backend- (or the one specified with `--backend`). Only files whose content- is currently available are migrated.-- Note that the content is also still available using the old key after- migration. Use `git annex unused` to find and remove the old key.-- Normally, nothing will be done to files already using the new backend.- However, if a backend changes the information it uses to construct a key,- this can also be used to migrate files to use the new key format.--* `reinject src dest`-- Moves the src file into the annex as the content of the dest file.- This can be useful if you have obtained the content of a file from- elsewhere and want to put it in the local annex.-- Automatically runs fsck on dest to check that the expected content was- provided.-- Example:-- git annex reinject /tmp/foo.iso foo.iso--* `unannex [path ...]`-- Use this to undo an accidental `git annex add` command. It puts the- file back how it was before the add.-- Note that for safety, the content of the file remains in the annex,- until you use `git annex unused` and `git annex dropunused`.-- This is not the command you should use if you intentionally annexed a- file and don't want its contents any more. In that case you should use- `git annex drop` instead, and you can also `git rm` the file.-- Normally this does a slow copy of the file. In `--fast` mode, it- instead makes a hard link from the file to the content in the annex.- But use --fast mode with caution, because editing the file will- change the content in the annex.--* `uninit`-- Use this to stop using git annex. It will unannex every file in the- repository, and remove all of git-annex's other data, leaving you with a- git repository plus the previously annexed files.--* `reinit uuid|description`-- Normally, initializing a repository generates a new, unique identifier- (UUID) for that repository. Occasionally it may be useful to reuse a- UUID -- for example, if a repository got deleted, and you're- setting it back up.-- Use this with caution; it can be confusing to have two existing- repositories with the same UUID. Also, you will probably want to run- a fsck.--# PLUMBING COMMANDS--* `pre-commit [path ...]`-- This is meant to be called from git's pre-commit hook. `git annex init`- automatically creates a pre-commit hook using this.-- Fixes up symlinks that are staged as part of a commit, to ensure they- point to annexed content. Also handles injecting changes to unlocked- files into the annex. When in a view, updates metadata to reflect changes- made to files in the view.--* `lookupkey [file ...]`-- This plumbing-level command looks up the key used for a file in the- index. The key is output to stdout. If there is no key (because- the file is not present in the index, or is not a git-annex managed file),- nothing is output, and it exits nonzero.--* `examinekey [key ...]`-- This plumbing-level command is given a key, and prints information- that can be determined purely by looking at the key.-- To specify what information to print, use `--format`. Or use `--json`- to get all available information in JSON format.-- The same variables can be used in the format string as can be used in- the format string of git annex find (except there is no file option- here).-- For example, the location a key's value is stored (in indirect mode)- can be looked up by running:-- git annex examinekey --format='.git/annex/objects/${hashdirmixed}${key}/${key}'--* `fromkey [key file]`-- This plumbing-level command can be used to manually set up a file- in the git repository to link to a specified key.-- Normally, the annex needs to already contain the content object for the- key. To override this, use --force.-- If the key and file are not specified on the command line, they are- instead read from stdin. Any number of lines can be provided in this- mode, each containing a key and filename, sepearated by whitespace.--* `registerurl [key url]`-- This plumbing-level command can be used to register urls where a- key can be downloaded from.-- No verification is performed of the url's contents.-- If the key and url are not specified on the command line, they are- instead read from stdin. Any number of lines can be provided in this- mode, each containing a key and url, sepearated by whitespace.--* `dropkey [key ...]`-- This plumbing-level command drops the annexed data for the specified- keys from this repository.-- This can be used to drop content for arbitrary keys, which do not need- to have a file in the git repository pointing at them.--* `transferkey`-- This plumbing-level command is used to request a single key be- transferred. Either the --from or the --to option can be used to specify- the remote to use. A --file option can be used to hint at the file- associated with the key.--* `transferkeys`-- This plumbing-level command is used by the assistant to transfer data.- It is fed instructions about the keys to transfer using an internal- stdio protocol, which is intentionally not documented (as it may change- at any time).--* `setpresentkey key uuid [1|0]`-- This plumbing-level command changes git-annex's records about whether- the specified key is present in a remote with the specified uuid.--* `rekey [file key ...]`-- This plumbing-level command is similar to migrate, but you specify- both the file, and the new key to use for it.-- With `--force`, even files whose content is not currently available will- be rekeyed. Use with caution.--* `findref [ref]`-- This is similar to the find command, but instead of finding files in the- current work tree, it finds files in the specified git ref.--* `proxy -- git cmd [options]`-- Only useful in a direct mode repository, this runs the specified git- command with a temporary work tree, and updates the working tree to- reflect any changes staged or committed by the git command.- - For example, to revert the most recent change that was committed- to the repository:-- git annex proxy -- git revert HEAD-- To check out a past version of the repository:-- git annex proxy -- git checkout HEAD^^-- To rename a directory:-- git annex proxy -- git mv mydir newname--* `resolvemerge`-- Resolves a conflicted merge, by adding both conflicting versions of the- file to the tree, using variants of their filename. This is done- automatically when using `git annex sync` or `git annex merge`.-- Note that only merge conflicts that involve an annexed file are resolved.- Merge conflicts between two files that are not annexed will not be- automatically resolved.--* `diffdriver`-- This is an external git diff driver shim. Normally, when using `git diff`- with an external git driver, the symlinks to annexed files are not set up- right, so the external git driver cannot read them in order to perform- smart diffing of their contents. This command works around the problem,- by passing the fixed up files to the real external diff driver.-- To use, just configure git to use "git-annex diffdriver -- cmd params --"- as the external diff command, where cmd is the real external diff- command you want to use, and params are any extra parameters to pass- to it. Note the trailing "--", which is required.-- For example, set `GIT_EXTERNAL_DIFF=git-annex diffdriver -- j-c-diff --`--* `remotedaemon`-- Detects when network remotes have received git pushes and fetches from them.--* `xmppgit`-- This command is used internally to perform git pulls over XMPP.--# TESTING COMMANDS--* `test`-- This runs git-annex's built-in test suite.-- There are several parameters, provided by Haskell's tasty test framework.- Pass --help for details.--* `testremote remote`-- This tests a remote by generating some random objects and sending them to- the remote, then redownloading them, removing them from the remote, etc.-- It's safe to run in an existing repository (the repository contents are- not altered), although it may perform expensive data transfers.-- To perform a smaller set of tests, use --fast.-- The --size option can be used to tune the size of the generated objects.-- Testing a single remote will use the remote's configuration,- automatically varying the chunk sizes, and with simple shared encryption- enabled and disabled.--* `fuzztest`-- Generates random changes to files in the current repository,- for use in testing the assistant. This is dangerous, so it will not- do anything unless --forced.--# OPTIONS--* `--force`-- Force unsafe actions, such as dropping a file's content when no other- source of it can be verified to still exist, or adding ignored files.- Use with care.--* `--fast`-- Enable less expensive, but also less thorough versions of some commands.- What is avoided depends on the command.--* `--auto`-- Enable automatic mode. Commands that get, drop, or move file contents- will only do so when needed to help satisfy the setting of numcopies,- and preferred content configuration.--* `--all`-- Operate on all data that has been stored in the git annex,- including old versions of files. This is the default behavior when- running git-annex in a bare repository; in a non-bare repository the- normal behavior is to only operate on specified files in the working- tree.--* `--unused`-- Operate on all data that has been determined to be unused by- a previous run of `git-annex unused`.--* `--key=key`-- Operate on only the specified key.--* `--quiet`-- Avoid the default verbose display of what is done; only show errors- and progress displays.--* `--verbose`-- Enable verbose display.--* `--json`-- Rather than the normal output, generate JSON. This is intended to be- parsed by programs that use git-annex. Each line of output is a JSON- object. Note that JSON output is only usable with some git-annex commands,- like info, find, whereis, and metadata.--* `--debug`-- Show debug messages.--* `--no-debug`-- Disable debug messages.--* `--from=repository`-- Specifies a repository that content will be retrieved from, or that- should otherwise be acted on.-- It should be specified using the name of a configured remote.--* `--to=repository`-- Specifies a repository that content will be sent to.-- It should be specified using the name of a configured remote.--* `--numcopies=n`-- Overrides the numcopies setting, forcing git-annex to ensure the- specified number of copies exist.-- Note that setting numcopies to 0 is very unsafe.--* `--time-limit=time`-- Limits how long a git-annex command runs. The time can be something- like "5h", or "30m" or even "45s" or "10d".-- Note that git-annex may continue running a little past the specified- time limit, in order to finish processing a file.-- Also, note that if the time limit prevents git-annex from doing all it- was asked to, it will exit with a special code, 101.--* `--trust=repository`-* `--semitrust=repository`-* `--untrust=repository`-- Overrides trust settings for a repository. May be specified more than once.-- The repository should be specified using the name of a configured remote,- or the UUID or description of a repository.--* `--trust-glacier-inventory`-- Amazon Glacier inventories take hours to retrieve, and may not represent- the current state of a repository. So git-annex does not trust that- files that the inventory claims are in Glacier are really there.- This switch can be used to allow it to trust the inventory.-- Be careful using this, especially if you or someone else might have recently- removed a file from Glacier. If you try to drop the only other copy of the- file, and this switch is enabled, you could lose data!--* `--backend=name`-- Specifies which key-value backend to use. This can be used when- adding a file to the annex, or migrating a file. Once files- are in the annex, their backend is known and this option is not- necessary.--* `--format=value`-- Specifies a custom output format. The value is a format string, - in which '${var}' is expanded to the value of a variable. To right-justify- a variable with whitespace, use '${var;width}' ; to left-justify- a variable, use '${var;-width}'; to escape unusual characters in a variable,- use '${escaped_var}'-- Also, '\\n' is a newline, '\\000' is a NULL, etc.--* `--user-agent=value`-- Overrides the User-Agent to use when downloading files from the web.--* `--notify-finish`-- Caused a desktop notification to be displayed after each successful- file download and upload.-- (Only supported on some platforms, e.g. Linux with dbus. A no-op when- not supported.)--* `--notify-start`-- Caused a desktop notification to be displayed when a file upload- or download has started, or when a file is dropped.--* `-c name=value`-- Overrides git configuration settings. May be specified multiple times.--# MATCHING OPTIONS--These options can all be specified multiple times, and can be combined to-limit which files git-annex acts on.--Arbitrarily complicated expressions can be built using these options.-For example:-- --exclude '*.mp3' --and --not -( --in=usbdrive --or --in=archive -)--The above example prevents git-annex from working on mp3 files whose-file contents are present at either of two repositories.--* `--exclude=glob`-- Skips files matching the glob pattern. The glob is matched relative to- the current directory. For example:-- --exclude='*.mp3' --exclude='subdir/*'-- Note that this will not match anything when using --all or --unused.--* `--include=glob`-- Skips files not matching the glob pattern. (Same as `--not --exclude`.)- For example, to include only mp3 and ogg files:-- --include='*.mp3' --or --include='*.ogg'-- Note that this will not skip anything when using --all or --unused.--* `--in=repository`-- Matches only files that git-annex believes have their contents present- in a repository. Note that it does not check the repository to verify- that it still has the content.-- The repository should be specified using the name of a configured remote,- or the UUID or description of a repository. For the current repository,- use `--in=here`--* `--in=repository@{date}`-- Matches files currently in the work tree whose content was present in- the repository on the given date.-- The date is specified in the same syntax documented in- gitrevisions(7). Note that this uses the reflog, so dates far in the- past cannot be queried.-- For example, you might need to run `git annex drop .` to temporarily- free up disk space. The next day, you can get back the files you dropped- using `git annex get . --in=here@{yesterday}`--* `--copies=number`-- Matches only files that git-annex believes to have the specified number- of copies, or more. Note that it does not check remotes to verify that- the copies still exist.--* `--copies=trustlevel:number`-- Matches only files that git-annex believes have the specified number of- copies, on remotes with the specified trust level. For example,- `--copies=trusted:2`-- To match any trust level at or higher than a given level,- use 'trustlevel+'. For example, `--copies=semitrusted+:2`--* `--copies=groupname:number`-- Matches only files that git-annex believes have the specified number of- copies, on remotes in the specified group. For example,- `--copies=archive:2`--* `--lackingcopies=number`-- Matches only files that git-annex believes need the specified number or - more additional copies to be made in order to satisfy their numcopies- settings.--* `--approxlackingcopies=number`-- Like lackingcopies, but does not look at .gitattributes annex.numcopies- settings. This makes it significantly faster.--* `--inbackend=name`-- Matches only files whose content is stored using the specified key-value- backend.--* `--inallgroup=groupname`-- Matches only files that git-annex believes are present in all repositories- in the specified group.--* `--smallerthan=size`-* `--largerthan=size`-- Matches only files whose content is smaller than, or larger than the- specified size.-- The size can be specified with any commonly used units, for example,- "0.5 gb" or "100 KiloBytes"--* `--metadata field=glob`-- Matches only files that have a metadata field attached with a value that- matches the glob. The values of metadata fields are matched case- insensitively.--* `--want-get`-- Matches files that the preferred content settings for the repository- make it want to get. Note that this will match even files that are- already present, unless limited with e.g., `--not --in .`- - Note that this will not match anything when using --all or --unused.--* `--want-drop`-- Matches files that the preferred content settings for the repository- make it want to drop. Note that this will match even files that have- already been dropped, unless limited with e.g., `--in .`- - Note that this will not match anything when using --all or --unused.--* `--not`-- Inverts the next matching option. For example, to only act on- files with less than 3 copies, use `--not --copies=3`--* `--and`-- Requires that both the previous and the next matching option matches.- The default.--* `--or`-- Requires that either the previous, or the next matching option matches.--* `-(`-- Opens a group of matching options.--* `-)`-- Closes a group of matching options.--# PREFERRED CONTENT--Each repository has a preferred content setting, which specifies content-that the repository wants to have present. These settings can be configured-using `git annex vicfg` or `git annex wanted`.-They are used by the `--auto` option, and by the git-annex assistant.--The preferred content settings are similar, but not identical to-the matching options specified above, just without the dashes.-For example:-- exclude=archive/* and (include=*.mp3 or smallerthan=1mb)--The main differences are that `exclude=` and `include=` always-match relative to the top of the git repository, and that there is-no equivilant to `--in`.--When a repository is in one of the standard predefined groups, like "backup"-and "client", setting its preferred content to "standard" will use a-built-in preferred content expression developed for that group. -See <https://git-annex.branchable.com/preferred_content/standard_groups/>--If you have set a groupwanted expression for a group, it will be used-when a repository in the group has its preferred content set to-"groupwanted".--# SCHEDULED JOBS--The git-annex assistant daemon can be configured to run scheduled jobs.-This is similar to cron and anacron (and you can use them if you prefer),-but has the advantage of being integrated into git-annex, and so being able-to e.g., fsck a repository on a removable drive when the drive gets-connected.--The scheduled jobs can be configured using `git annex vicfg` or-`git annex schedule`.--These actions are available: "fsck self", "fsck UUID" (where UUID-is the UUID of a remote to fsck). After the action comes the duration-to allow the action to run, and finally the schedule of when to run it.--To schedule multiple jobs, separate them with "; ".--Some examples:-- fsck self 30m every day at any time- fsck self 1h every month at 3 AM- fsck self 1h on day 1 of every month at any time- fsck self 1h every week divisible by 2 at any time--# CONFIGURATION VIA .git/config--Like other git commands, git-annex is configured via `.git/config`.-Here are all the supported configuration settings.--* `annex.uuid`-- A unique UUID for this repository (automatically set).--* `annex.backends`-- Space-separated list of names of the key-value backends to use.- The first listed is used to store new files by default.--* `annex.diskreserve`-- Amount of disk space to reserve. Disk space is checked when transferring- content to avoid running out, and additional free space can be reserved- via this option, to make space for more important content (such as git- commit logs). Can be specified with any commonly used units, for example,- "0.5 gb", "500M", or "100 KiloBytes"-- The default reserve is 1 megabyte.--* `annex.largefiles`-- Allows configuring which files `git annex add` and the assistant consider- to be large enough to need to be added to the annex. By default,- all files are added to the annex.-- The value is a preferred content expression. See PREFERRED CONTENT- for details.-- Example:-- annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h)--* `annex.numcopies`-- This is a deprecated setting. You should instead use the- `git annex numcopies` command to configure how many copies of files- are kept across all repositories.-- This config setting is only looked at when `git annex numcopies` has- never been configured.-- Note that setting numcopies to 0 is very unsafe.--* `annex.genmetadata`-- Set this to `true` to make git-annex automatically generate some metadata- when adding files to the repository.-- In particular, it stores year and month metadata, from the file's- modification date.-- When importfeed is used, it stores additional metadata from the feed.--* `annex.queuesize`-- git-annex builds a queue of git commands, in order to combine similar- commands for speed. By default the size of the queue is limited to- 10240 commands; this can be used to change the size. If you have plenty- of memory and are working with very large numbers of files, increasing- the queue size can speed it up.--* `annex.bloomcapacity`-- The `git annex unused` command uses a bloom filter to determine- what data is no longer used. The default bloom filter is sized to handle- up to 500000 keys. If your repository is larger than that,- you can adjust this to avoid `git annex unused` not noticing some unused- data files. Increasing this will make `git-annex unused` consume more memory;- run `git annex info` for memory usage numbers.--* `annex.bloomaccuracy`-- Adjusts the accuracy of the bloom filter used by- `git annex unused`. The default accuracy is 1000 --- 1 unused file out of 1000 will be missed by `git annex unused`. Increasing- the accuracy will make `git annex unused` consume more memory;- run `git annex info` for memory usage numbers.--* `annex.sshcaching`-- By default, git-annex caches ssh connections using ssh's- ControlMaster and ControlPersist settings- (if built using a new enough ssh). To disable this, set to `false`.--* `annex.alwayscommit`-- By default, git-annex automatically commits data to the git-annex branch- after each command is run. If you have a series- of commands that you want to make a single commit, you can- run the commands with `-c annex.alwayscommit=false`. You can later- commit the data by running `git annex merge` (or by automatic merges)- or `git annex sync`.--* `annex.hardlink`-- Set this to `true` to make file contents be hard linked into the- repository when possible, instead of a more expensive copy.-- Use with caution -- This can invalidate numcopies counting, since- with hard links, fewer copies of a file can exist. So, it is a good- idea to mark a repository using this setting as untrusted.-- When a repository is set up using `git clone --shared`, git-annex init- will automatically set annex.hardlink and mark the repository as- untrusted.--* `annex.delayadd`-- Makes the watch and assistant commands delay for the specified number of- seconds before adding a newly created file to the annex. Normally this- is not needed, because they already wait for all writers of the file- to close it. On Mac OSX, when not using direct mode this defaults to- 1 second, to work around a bad interaction with software there.--* `annex.expireunused`-- Controls what the assistant does about unused file contents- that are stored in the repository.-- The default is `false`, which causes- all old and unused file contents to be retained, unless the assistant- is able to move them to some other repository (such as a backup repository).-- Can be set to a time specification, like "7d" or "1m", and then- file contents that have been known to be unused for a week or a- month will be deleted.--* `annex.fscknudge`-- When set to false, prevents the webapp from reminding you when using- repositories that lack consistency checks.--* `annex.autoupgrade`-- When set to ask (the default), the webapp will check for new versions- and prompt if they should be upgraded to. When set to true, automatically- upgrades without prompting (on some supported platforms). When set to- false, disables any upgrade checking.-- Note that upgrade checking is only done when git-annex is installed- from one of the prebuilt images from its website. This does not- bypass e.g., a Linux distribution's own upgrade handling code.-- This setting also controls whether to restart the git-annex assistant- when the git-annex binary is detected to have changed. That is useful- no matter how you installed git-annex.--* `annex.autocommit`-- Set to false to prevent the git-annex assistant from automatically- committing changes to files in the repository.--* `annex.startupscan`-- Set to false to prevent the git-annex assistant from scanning the- repository for new and changed files on startup. This will prevent it- from noticing changes that were made while it was not running, but can be- a useful performance tweak for a large repository.--* `annex.listen`-- Configures which address the webapp listens on. The default is localhost.- Can be either an IP address, or a hostname that resolves to the desired- address.--* `annex.debug`-- Set to true to enable debug logging by default.--* `annex.version`-- Automatically maintained, and used to automate upgrades between versions.--* `annex.direct`-- Set to true when the repository is in direct mode. Should not be set- manually; use the "git annex direct" and "git annex indirect" commands- instead.--* `annex.crippledfilesystem`-- Set to true if the repository is on a crippled filesystem, such as FAT,- which does not support symbolic links, or hard links, or unix permissions.- This is automatically probed by "git annex init".--* `remote.<name>.annex-cost`-- When determining which repository to- transfer annexed files from or to, ones with lower costs are preferred.- The default cost is 100 for local repositories, and 200 for remote- repositories.--* `remote.<name>.annex-cost-command`-- If set, the command is run, and the number it outputs is used as the cost.- This allows varying the cost based on e.g., the current network. The- cost-command can be any shell command line.--* `remote.<name>.annex-start-command`-- A command to run when git-annex begins to use the remote. This can- be used to, for example, mount the directory containing the remote.-- The command may be run repeatedly when multiple git-annex processes- are running concurrently.--* `remote.<name>.annex-stop-command`-- A command to run when git-annex is done using the remote.-- The command will only be run once *all* running git-annex processes- are finished using the remote.--* `remote.<name>.annex-shell`-- Specify an alternative git-annex-shell executable on the remote- instead of looking for "git-annex-shell" on the PATH.-- This is useful if the git-annex-shell program is outside the PATH- or has a non-standard name.--* `remote.<name>.annex-ignore`-- If set to `true`, prevents git-annex- from storing file contents on this remote by default.- (You can still request it be used by the `--from` and `--to` options.)-- This is, for example, useful if the remote is located somewhere- without git-annex-shell. (For example, if it's on GitHub).- Or, it could be used if the network connection between two- repositories is too slow to be used normally.-- This does not prevent git-annex sync (or the git-annex assistant) from- syncing the git repository to the remote.--* `remote.<name>.annex-sync`-- If set to `false`, prevents git-annex sync (and the git-annex assistant)- from syncing with this remote.--* `remote.<name>.annex-readonly`-- If set to `true`, prevents git-annex from making changes to a remote.- This both prevents git-annex sync from pushing changes, and prevents- storing or removing files from read-only remote.--* `remote.<name>.annexUrl`-- Can be used to specify a different url than the regular `remote.<name>.url`- for git-annex to use when talking with the remote. Similar to the `pushUrl`- used by git-push.--* `remote.<name>.annex-uuid`-- git-annex caches UUIDs of remote repositories here.--* `remote.<name>.annex-trustlevel`-- Configures a local trust level for the remote. This overrides the value- configured by the trust and untrust commands. The value can be any of- "trusted", "semitrusted" or "untrusted".--* `remote.<name>.annex-availability`-- Can be used to tell git-annex whether a remote is LocallyAvailable- or GloballyAvailable. Normally, git-annex determines this automatically.--* `remote.<name>.annex-bare`-- Can be used to tell git-annex if a remote is a bare repository- or not. Normally, git-annex determines this automatically.--* `remote.<name>.annex-ssh-options`-- Options to use when using ssh to talk to this remote.--* `remote.<name>.annex-rsync-options`-- Options to use when using rsync- to or from this remote. For example, to force ipv6, and limit- the bandwidth to 100Kbyte/s, set it to `-6 --bwlimit 100`--* `remote.<name>.annex-rsync-upload-options`-- Options to use when using rsync to upload a file to a remote.-- These options are passed after other applicable rsync options,- so can be used to override them. For example, to limit upload bandwidth- to 10Kbyte/s, set `--bwlimit 10`.--* `remote.<name>.annex-rsync-download-options`-- Options to use when using rsync to download a file from a remote.-- These options are passed after other applicable rsync options,- so can be used to override them.--* `remote.<name>.annex-rsync-transport`-- The remote shell to use to connect to the rsync remote. Possible- values are `ssh` (the default) and `rsh`, together with their- arguments, for instance `ssh -p 2222 -c blowfish`; Note that the- remote hostname should not appear there, see rsync(1) for details.- When the transport used is `ssh`, connections are automatically cached- unless `annex.sshcaching` is unset.--* `remote.<name>.annex-bup-split-options`-- Options to pass to bup split when storing content in this remote.- For example, to limit the bandwidth to 100Kbyte/s, set it to `--bwlimit 100k`- (There is no corresponding option for bup join.)--* `remote.<name>.annex-gnupg-options`-- Options to pass to GnuPG for symmetric encryption. For instance, to- use the AES cipher with a 256 bits key and disable compression, set it- to `--cipher-algo AES256 --compress-algo none`. (These options take- precedence over the default GnuPG configuration, which is otherwise- used.)--* `annex.ssh-options`, `annex.rsync-options`,- `annex.rsync-upload-options`, `annex.rsync-download-options`,- `annex.bup-split-options`, `annex.gnupg-options`-- Default options to use if a remote does not have more specific options- as described above.--* `annex.web-options`-- Options to pass when running wget or curl.- For example, to force ipv4 only, set it to "-4"--* `annex.quvi-options`-- Options to pass to quvi when using it to find the url to download for a- video.--* `annex.aria-torrent-options`-- Options to pass to aria2c when using it to download a torrent.--* `annex.http-headers`-- HTTP headers to send when downloading from the web. Multiple lines of- this option can be set, one per header.--* `annex.http-headers-command`-- If set, the command is run and each line of its output is used as a HTTP- header. This overrides annex.http-headers.--* `annex.web-download-command`-- Use to specify a command to run to download a file from the web.- (The default is to use wget or curl.)-- In the command line, %url is replaced with the url to download,- and %file is replaced with the file that it should be saved to.--* `annex.secure-erase-command`-- This can be set to a command that should be run whenever git-annex- removes the content of a file from the repository.-- In the command line, %file is replaced with the file that should be- erased.-- For example, to use the wipe command, set it to `wipe -f %file`.--* `remote.<name>.rsyncurl`-- Used by rsync special remotes, this configures- the location of the rsync repository to use. Normally this is automatically- set up by `git annex initremote`, but you can change it if needed.--* `remote.<name>.buprepo`-- Used by bup special remotes, this configures- the location of the bup repository to use. Normally this is automatically- set up by `git annex initremote`, but you can change it if needed.--* `remote.<name>.ddarrepo`-- Used by ddar special remotes, this configures- the location of the ddar repository to use. Normally this is automatically- set up by `git annex initremote`, but you can change it if needed.--* `remote.<name>.directory`-- Used by directory special remotes, this configures- the location of the directory where annexed files are stored for this- remote. Normally this is automatically set up by `git annex initremote`,- but you can change it if needed.--* `remote.<name>.s3`-- Used to identify Amazon S3 special remotes.- Normally this is automatically set up by `git annex initremote`.--* `remote.<name>.glacier`-- Used to identify Amazon Glacier special remotes.- Normally this is automatically set up by `git annex initremote`.--* `remote.<name>.webdav`-- Used to identify webdav special remotes.- Normally this is automatically set up by `git annex initremote`.--* `remote.<name>.tahoe`-- Used to identify tahoe special remotes.- Points to the configuration directory for tahoe.--* `remote.<name>.annex-xmppaddress`-- Used to identify the XMPP address of a Jabber buddy.- Normally this is set up by the git-annex assistant when pairing over XMPP.--* `remote.<name>.gcrypt`-- Used to identify gcrypt special remotes.- Normally this is automatically set up by `git annex initremote`.-- It is set to "true" if this is a gcrypt remote.- If the gcrypt remote is accessible over ssh and has git-annex-shell- available to manage it, it's set to "shell".--* `remote.<name>.hooktype`, `remote.<name>.externaltype`-- Used by hook special remotes and external special remotes to record- the type of the remote.--* `annex.tune.objecthash1`, `annex.tune.objecthashlower`, `annex.tune.branchhash1`-- These can be passed to `git annex init` to tune the repository.- They cannot be safely changed in a running repository.- For details, see <http://git-annex.branchable.com/tuning/>.--# CONFIGURATION VIA .gitattributes--The key-value backend used when adding a new file to the annex can be-configured on a per-file-type basis via `.gitattributes` files. In the file,-the `annex.backend` attribute can be set to the name of the backend to-use. For example, this here's how to use the WORM backend by default,-but the SHA256E backend for ogg files:-- * annex.backend=WORM- *.ogg annex.backend=SHA256E--The numcopies setting can also be configured on a per-file-type basis via-the `annex.numcopies` attribute in `.gitattributes` files. This overrides-other numcopies settings.-For example, this makes two copies be needed for wav files and 3 copies-for flac files:-- *.wav annex.numcopies=2- *.flac annex.numcopies=3--Note that setting numcopies to 0 is very unsafe.--These settings are honored by git-annex whenever it's operating on a-matching file. However, when using --all, --unused, or --key to specify-keys to operate on, git-annex is operating on keys and not files, so will-not honor the settings from .gitattributes.--Also note that when using views, only the toplevel .gitattributes file is-preserved in the view, so other settings in other files won't have any-effect.--# FILES--These files are used by git-annex:--`.git/annex/objects/` in your git repository contains the annexed file-contents that are currently available. Annexed files in your git-repository symlink to that content.--`.git/annex/` in your git repository contains other run-time information-used by git-annex.--`~/.config/git-annex/autostart` is a list of git repositories-to start the git-annex assistant in.--`.git/hooks/pre-commit-annex` in your git repository will be run whenever-a commit is made, either by git commit, git-annex sync, or the git-annex-assistant.--# SEE ALSO--Most of git-annex's documentation is available on its web site,+* `help`++ Display built-in help.++ For help on a specific command, use `git annex help command`++* `add [path ...]`++ Adds files in the path to the annex. If no path is specified, adds+ files from the current directory and below. + + See [[git-annex-add]](1) for details.++* `get [path ...]`++ Makes the content of annexed files available in this repository.+ + See [[git-annex-get]](1) for details.++* `drop [path ...]`++ Drops the content of annexed files from this repository.+ + See [[git-annex-drop]](1) for details.++* `move [path ...] [--from=remote|--to=remote]`++ Moves the content of files from or to another remote.++ See [[git-annex-move]](1) for details.++* `copy [path ...] [--from=remote|--to=remote]`++ Copies the content of files from or to another remote.++ See [[git-annex-copy]](1) for details.++* `status [path ...]`++ Similar to `git status --short`, displays the status of the files in the+ working tree. Particularly useful in direct mode.++ See [[git-annex-status]](1) for details.++* `unlock [path ...]`++ Unlock annexed files for modification.+ + See [[git-annex-unlock]](1) for details.++* `edit [path ...]`++ This is an alias for the unlock command. May be easier to remember,+ if you think of this as allowing you to edit an annexed file.++* `lock [path ...]`++ Use this to undo an unlock command if you don't want to modify+ the files, or have made modifications you want to discard.+ + See [[git-annex-lock]](1) for details.++* `sync [remote ...]`++ Synchronize local repository with remotes.+ + See [[git-annex-sync]](1) for details.++* `mirror [path ...] [--to=remote|--from=remote]`++ Mirror content of files to/from another repository.+ + See [[git-annex-mirror]](1) for details.++* `addurl [url ...]`++ Downloads each url to its own file, which is added to the annex.+ + See [[git-annex-addurl]](1) for details.++* `rmurl file url`++ Record that the file is no longer available at the url.+ + See [[git-annex-rmurl]](1) for details.++* `import [path ...]`++ Move and add files from outside git working copy into the annex.+ + See [[git-annex-import]](1) for details.++* `importfeed [url ...]`++ Imports the contents of podcast feeds into the annex.+ + See [[git-annex-importfeed]](1) for details.++* `undo [filename|directory] ...`++ Undo last change to a file or directory.+ + See [[git-annex-undo]](1) for details.++* `watch`++ Watch for changes and autocommit.+ + See [[git-annex-watch]](1) for details.++* `assistant`++ Atomatically sync folders between devices.++ See [[git-annex-assistant]](1) for details.++* `webapp`++ Opens a web app, that allows easy setup of a git-annex repository,+ and control of the git-annex assistant. If the assistant is not+ already running, it will be started.++ See [[git-annex-webapp]](1) for details.++# REPOSITORY SETUP COMMANDS++* `init [description]`++ Until a repository (or one of its remotes) has been initialized,+ git-annex will refuse to operate on it, to avoid accidentally+ using it in a repository that was not intended to have an annex.+ + See [[git-annex-init]](1) for details.++* `describe repository description`++ Changes the description of a repository.+ + See [[git-annex-describe]](1) for details.++* `initremote name type=value [param=value ...]`++ Creates a new special remote, and adds it to `.git/config`.++ See [[git-annex-initremote]](1) for details.+ +* `enableremote name [param=value ...]`++ Enables use of an existing special remote in the current repository.+ + See [[git-annex-enableremote]](1) for details.++* `numcopies [N]`++ Configure desired number of copies.+ + See [[git-annex-numcopies]](1) for details.++* `trust [repository ...]`++ Records that a repository is trusted to not unexpectedly lose+ content. Use with care.+ + See [[git-annex-trust]](1) for details.++* `untrust [repository ...]`++ Records that a repository is not trusted and could lose content+ at any time.+ + See [[git-annex-untrust]](1) for details.++* `semitrust [repository ...]`++ Returns a repository to the default semi trusted state.+ + See [[git-annex-semitrust]](1) for details.++* `dead [repository ...]`++ Indicates that the repository has been irretrievably lost.+ + See [[git-annex-dead]](1) for details.++* `group repository groupname`++ Add a repository to a group.+ + See [[git-annex-group]](1) for details.++* `ungroup repository groupname`++ Removes a repository from a group.+ + See [[git-annex-ungroup]](1) for details.++* `wanted repository [expression]`+ + Get or set preferred content expression.++ See [[git-annex-wanted]](1) for details.++* `groupwanted groupname [expression]`++ See [[git-annex-groupwanted]](1) for details.++* `schedule repository [expression]`++ Get or set scheduled jobs.++ See [[git-annex-schedule]](1) for details.++* `vicfg`++ Opens EDITOR on a temp file containing most of the above configuration+ settings, as well as a few others, and when it exits, stores any changes+ made back to the git-annex branch.+ + See [[git-annex-vicfg]](1) for details.++* `direct`++ Switches a repository to use direct mode, where rather than symlinks to+ files, the files are directly present in the repository.+ + See [[git-annex-direct]](1) for details.++* `indirect`++ Switches a repository back from direct mode to the default, indirect mode.+ + See [[git-annex-indirect]](1) for details.++# REPOSITORY MAINTENANCE COMMANDS++* `fsck [path ...]`++ Checks the annex consistency, and warns about or fixes any problems found. + This is a good complement to `git fsck`.++ See [[git-annex-fsck]](1) for details.++* `unused`++ Checks the annex for data that does not correspond to any files present+ in any tag or branch, and prints a numbered list of the data.+ + See [[git-annex-unused]](1) for details.++* `dropunused [number|range ...]`++ Drops the data corresponding to the numbers, as listed by the last+ `git annex unused`+ + See [[git-annex-dropunused]](1) for details.++* `addunused [number|range ...]`++ Adds back files for the content corresponding to the numbers or ranges,+ as listed by the last `git annex unused`.+ + See [[git-annex-addunused]](1) for details.++* `fix [path ...]`++ Fixes up symlinks that have become broken to again point to annexed content.++ See [[git-annex-fix]](1) for details.++* `merge`++ Automatically merge changes from remotes.++ See [[git-annex-merge]](1) for details.++* `upgrade`++ Upgrades the repository to current layout.+ + See [[git-annex-upgrade]](1) for details.++* `forget`++ Causes the git-annex branch to be rewritten, throwing away historical+ data about past locations of files.+ + See [[git-annex-forget]](1) for details.++* `repair`++ This can repair many of the problems with git repositories that `git fsck`+ detects, but does not itself fix. It's useful if a repository has become+ badly damaged. One way this can happen is if a repository used by git-annex+ is on a removable drive that gets unplugged at the wrong time.+ + See [[git-annex-repair]](1) for details.++# QUERY COMMANDS++* `find [path ...]`++ Outputs a list of annexed files in the specified path. With no path,+ finds files in the current directory and its subdirectories.++ See [[git-annex-find]](1) for details.++* `whereis [path ...]`++ Displays information about where the contents of files are located.+ + See [[git-annex-whereis]](1) for details.++* `list [path ...]`++ Displays a table of remotes that contain the contents of the specified+ files. This is similar to whereis but a more compact display.+ + See [[git-annex-list]](1) for details.++* `log [path ...]`++ Displays the location log for the specified file or files,+ showing each repository they were added to ("+") and removed from ("-").++ See [[git-annex-log]](1) for details.++* `info [directory|file|remote|uuid ...]`++ Displays statistics and other information for the specified item,+ which can be a directory, or a file, or a remote, or the uuid of a+ repository. ++ When no item is specified, displays statistics and information+ for the repository as a whole.+ + See [[git-annex-info]](1) for details.++* `version`++ Shows the version of git-annex, as well as repository version information.+ + See [[git-annex-version]](1) for details.++* `map`++ Generate map of repositories.++ See [[git-annex-map]](1) for details.++# METADATA COMMANDS++* `metadata [path ...]`++ The content of an annexed file can have any number of metadata fields+ attached to it to describe it. Each metadata field can in turn+ have any number of values.++ This command can be used to set metadata, or show the currently set+ metadata.++ See [[git-annex-metadata]](1) for details.++* `view [tag ...] [field=value ...] [field=glob ...] [!tag ...] [field!=value ...]`++ Uses metadata to build a view branch of the files in the current branch,+ and checks out the view branch. Only files in the current branch whose+ metadata matches all the specified field values and tags will be+ shown in the view.++ See [[git-annex-view]](1) for details.++* `vpop [N]`++ Switches from the currently active view back to the previous view.+ Or, from the first view back to original branch.+ + See [[git-annex-vpop]](1) for details.++* `vfilter [tag ...] [field=value ...] [!tag ...] [field!=value ...]`++ Filters the current view to only the files that have the+ specified field values and tags.+ + See [[git-annex-vfilter]](1) for details.++* `vadd [field=glob ...] [field=value ...] [tag ...]`++ Changes the current view, adding an additional level of directories+ to categorize the files.+ + See [[git-annex-vfilter]](1) for details.++* `vcycle`++ When a view involves nested subdirectories, this cycles the order.+ + See [[git-annex-vcycle]](1) for details.++# UTILITY COMMANDS++* `migrate [path ...]`++ Changes the specified annexed files to use a different key-value backend.+ + See [[git-annex-migrate]](1) for details.++* `reinject src dest`++ Moves the src file into the annex as the content of the dest file.+ This can be useful if you have obtained the content of a file from+ elsewhere and want to put it in the local annex.++ See [[git-annex-reinject]](1) for details.++* `unannex [path ...]`++ Use this to undo an accidental `git annex add` command. It puts the+ file back how it was before the add.+ + See [[git-annex-unannex]](1) for details.++* `uninit`++ De-initialize git-annex and clean out repository.+ + See [[git-annex-unannex]](1) for details.++* `reinit uuid|description`++ Initialize repository, reusing old UUID.+ + See [[git-annex-reinit]](1) for details.++# PLUMBING COMMANDS++* `pre-commit [path ...]`++ This is meant to be called from git's pre-commit hook. `git annex init`+ automatically creates a pre-commit hook using this.+ + See [[git-annex-pre-commit]](1) for details.++* `lookupkey [file ...]`++ Looks up key used for file.++ See [[git-annex-lookupkey]](1) for details.++* `examinekey [key ...]`++ Print information that can be determined purely by looking at the key.+ + See [[git-annex-examinekey]](1) for details.++* `fromkey [key file]`++ Manually set up a file in the git repository to link to a specified key.+ + See [[git-annex-fromkey]](1) for details.++* `registerurl [key url]`++ Registers an url for a key.+ + See [[git-annex-registerurl]](1) for details.++* `dropkey [key ...]`++ Drops annexed content for specified keys.+ + See [[git-annex-dropkey]](1) for details.++* `transferkey key [--from=remote|--to=remote]`++ Transfers a key from or to a remote.+ + See [[git-annex-transferkey]](1) for details.++* `transferkeys`+ + Used internally by the assistant.++ See [[git-annex-transferkey]](1) for details.++* `setpresentkey key uuid [1|0]`++ This plumbing-level command changes git-annex's records about whether+ the specified key's content is present in a remote with the specified uuid.++ See [[git-annex-setpresentkey]](1) for details.++* `readpresentkey key uuid`++ Read records of where key is present.++ See [[git-annex-readpresentkey]](1) for details.++* `checkpresentkey key remote`++ Check if key is present in remote.+ + See [[git-annex-checkpresentkey]](1) for details.++* `rekey [file key ...]`++ Change keys used for files.+ + See [[git-annex-rekey]](1) for details.++* `findref [ref]`++ Lists files in a git ref.+ + See [[git-annex-findref]](1) for details.++* `proxy -- git cmd [options]`++ Only useful in a direct mode repository, this runs the specified git+ command with a temporary work tree, and updates the working tree to+ reflect any changes staged or committed by the git command.+ + See [[git-annex-proxy]](1) for details.++* `resolvemerge`++ Resolves a conflicted merge, by adding both conflicting versions of the+ file to the tree, using variants of their filename. This is done+ automatically when using `git annex sync` or `git annex merge`.++ See [[git-annex-resolvemerge]](1) for details.++* `diffdriver`++ This can be used to make `git diff` use an external diff driver with+ annexed files.++ See [[git-annex-diffdriver]](1) for details.++* `remotedaemon`++ Detects when network remotes have received git pushes and fetches from them.++ See [[git-annex-remotedaemon]](1) for details.++* `xmppgit`++ This command is used internally by the assistant to perform git pulls+ over XMPP.+ + See [[git-annex-xmppgit]](1) for details.++# TESTING COMMANDS++* `test`++ This runs git-annex's built-in test suite.+ + See [[git-annex-test]](1) for details.++* `testremote remote`++ This tests a remote by generating some random objects and sending them to+ the remote, then redownloading them, removing them from the remote, etc.++ It's safe to run in an existing repository (the repository contents are+ not altered), although it may perform expensive data transfers.+ + See [[git-annex-testremote]](1) for details.++* `fuzztest`++ Generates random changes to files in the current repository,+ for use in testing the assistant.+ + See [[git-annex-fuzztest]](1) for details.++# COMMON OPTIONS++These common options are accepted by all git-annex commands, and+may not be explicitly listed on their individual man pages.+(Many commands also accept the [[git-annex-matching-options]](1).)++* `--force`++ Force unsafe actions, such as dropping a file's content when no other+ source of it can be verified to still exist, or adding ignored files.+ Use with care.++* `--fast`++ Enable less expensive, but also less thorough versions of some commands.+ What is avoided depends on the command.++* `--quiet`++ Avoid the default verbose display of what is done; only show errors+ and progress displays.++* `--verbose`++ Enable verbose display.++* `--debug`++ Show debug messages.++* `--no-debug`++ Disable debug messages.++* `--numcopies=n`++ Overrides the numcopies setting, forcing git-annex to ensure the+ specified number of copies exist.++ Note that setting numcopies to 0 is very unsafe.++* `--time-limit=time`++ Limits how long a git-annex command runs. The time can be something+ like "5h", or "30m" or even "45s" or "10d".++ Note that git-annex may continue running a little past the specified+ time limit, in order to finish processing a file.++ Also, note that if the time limit prevents git-annex from doing all it+ was asked to, it will exit with a special code, 101.++* `--trust=repository`+* `--semitrust=repository`+* `--untrust=repository`++ Overrides trust settings for a repository. May be specified more than once.++ The repository should be specified using the name of a configured remote,+ or the UUID or description of a repository.++* `--trust-glacier-inventory`++ Amazon Glacier inventories take hours to retrieve, and may not represent+ the current state of a repository. So git-annex does not trust that+ files that the inventory claims are in Glacier are really there.+ This switch can be used to allow it to trust the inventory.++ Be careful using this, especially if you or someone else might have recently+ removed a file from Glacier. If you try to drop the only other copy of the+ file, and this switch is enabled, you could lose data!++* `--backend=name`++ Specifies which key-value backend to use. This can be used when+ adding a file to the annex, or migrating a file. Once files+ are in the annex, their backend is known and this option is not+ necessary.++* `--user-agent=value`++ Overrides the User-Agent to use when downloading files from the web.++* `--notify-finish`++ Caused a desktop notification to be displayed after each successful+ file download and upload.++ (Only supported on some platforms, e.g. Linux with dbus. A no-op when+ not supported.)++* `--notify-start`++ Caused a desktop notification to be displayed when a file upload+ or download has started, or when a file is dropped.++* `-c name=value`++ Overrides git configuration settings. May be specified multiple times.++# CONFIGURATION VIA .git/config++Like other git commands, git-annex is configured via `.git/config`.+Here are all the supported configuration settings.++* `annex.uuid`++ A unique UUID for this repository (automatically set).++* `annex.backends`++ Space-separated list of names of the key-value backends to use.+ The first listed is used to store new files by default.++* `annex.diskreserve`++ Amount of disk space to reserve. Disk space is checked when transferring+ content to avoid running out, and additional free space can be reserved+ via this option, to make space for more important content (such as git+ commit logs). Can be specified with any commonly used units, for example,+ "0.5 gb", "500M", or "100 KiloBytes"++ The default reserve is 1 megabyte.++* `annex.largefiles`++ Allows configuring which files `git annex add` and the assistant consider+ to be large enough to need to be added to the annex. By default,+ all files are added to the annex.++ The value is a preferred content expression. See PREFERRED CONTENT+ for details.++ Example:++ annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h)++* `annex.numcopies`++ This is a deprecated setting. You should instead use the+ `git annex numcopies` command to configure how many copies of files+ are kept across all repositories.++ This config setting is only looked at when `git annex numcopies` has+ never been configured.++ Note that setting numcopies to 0 is very unsafe.++* `annex.genmetadata`++ Set this to `true` to make git-annex automatically generate some metadata+ when adding files to the repository.++ In particular, it stores year and month metadata, from the file's+ modification date.++ When importfeed is used, it stores additional metadata from the feed.++* `annex.queuesize`++ git-annex builds a queue of git commands, in order to combine similar+ commands for speed. By default the size of the queue is limited to+ 10240 commands; this can be used to change the size. If you have plenty+ of memory and are working with very large numbers of files, increasing+ the queue size can speed it up.++* `annex.bloomcapacity`++ The `git annex unused` command uses a bloom filter to determine+ what data is no longer used. The default bloom filter is sized to handle+ up to 500000 keys. If your repository is larger than that,+ you can adjust this to avoid `git annex unused` not noticing some unused+ data files. Increasing this will make `git-annex unused` consume more memory;+ run `git annex info` for memory usage numbers.++* `annex.bloomaccuracy`++ Adjusts the accuracy of the bloom filter used by+ `git annex unused`. The default accuracy is 1000 --+ 1 unused file out of 1000 will be missed by `git annex unused`. Increasing+ the accuracy will make `git annex unused` consume more memory;+ run `git annex info` for memory usage numbers.++* `annex.sshcaching`++ By default, git-annex caches ssh connections using ssh's+ ControlMaster and ControlPersist settings+ (if built using a new enough ssh). To disable this, set to `false`.++* `annex.alwayscommit`++ By default, git-annex automatically commits data to the git-annex branch+ after each command is run. If you have a series+ of commands that you want to make a single commit, you can+ run the commands with `-c annex.alwayscommit=false`. You can later+ commit the data by running `git annex merge` (or by automatic merges)+ or `git annex sync`.++* `annex.hardlink`++ Set this to `true` to make file contents be hard linked into the+ repository when possible, instead of a more expensive copy.++ Use with caution -- This can invalidate numcopies counting, since+ with hard links, fewer copies of a file can exist. So, it is a good+ idea to mark a repository using this setting as untrusted.++ When a repository is set up using `git clone --shared`, git-annex init+ will automatically set annex.hardlink and mark the repository as+ untrusted.++* `annex.delayadd`++ Makes the watch and assistant commands delay for the specified number of+ seconds before adding a newly created file to the annex. Normally this+ is not needed, because they already wait for all writers of the file+ to close it. On Mac OSX, when not using direct mode this defaults to+ 1 second, to work around a bad interaction with software there.++* `annex.expireunused`++ Controls what the assistant does about unused file contents+ that are stored in the repository.++ The default is `false`, which causes+ all old and unused file contents to be retained, unless the assistant+ is able to move them to some other repository (such as a backup repository).++ Can be set to a time specification, like "7d" or "1m", and then+ file contents that have been known to be unused for a week or a+ month will be deleted.++* `annex.fscknudge`++ When set to false, prevents the webapp from reminding you when using+ repositories that lack consistency checks.++* `annex.autoupgrade`++ When set to ask (the default), the webapp will check for new versions+ and prompt if they should be upgraded to. When set to true, automatically+ upgrades without prompting (on some supported platforms). When set to+ false, disables any upgrade checking.++ Note that upgrade checking is only done when git-annex is installed+ from one of the prebuilt images from its website. This does not+ bypass e.g., a Linux distribution's own upgrade handling code.++ This setting also controls whether to restart the git-annex assistant+ when the git-annex binary is detected to have changed. That is useful+ no matter how you installed git-annex.++* `annex.autocommit`++ Set to false to prevent the git-annex assistant from automatically+ committing changes to files in the repository.++* `annex.startupscan`++ Set to false to prevent the git-annex assistant from scanning the+ repository for new and changed files on startup. This will prevent it+ from noticing changes that were made while it was not running, but can be+ a useful performance tweak for a large repository.++* `annex.listen`++ Configures which address the webapp listens on. The default is localhost.+ Can be either an IP address, or a hostname that resolves to the desired+ address.++* `annex.debug`++ Set to true to enable debug logging by default.++* `annex.version`++ Automatically maintained, and used to automate upgrades between versions.++* `annex.direct`++ Set to true when the repository is in direct mode. Should not be set+ manually; use the "git annex direct" and "git annex indirect" commands+ instead.++* `annex.crippledfilesystem`++ Set to true if the repository is on a crippled filesystem, such as FAT,+ which does not support symbolic links, or hard links, or unix permissions.+ This is automatically probed by "git annex init".++* `remote.<name>.annex-cost`++ When determining which repository to+ transfer annexed files from or to, ones with lower costs are preferred.+ The default cost is 100 for local repositories, and 200 for remote+ repositories.++* `remote.<name>.annex-cost-command`++ If set, the command is run, and the number it outputs is used as the cost.+ This allows varying the cost based on e.g., the current network. The+ cost-command can be any shell command line.++* `remote.<name>.annex-start-command`++ A command to run when git-annex begins to use the remote. This can+ be used to, for example, mount the directory containing the remote.++ The command may be run repeatedly when multiple git-annex processes+ are running concurrently.++* `remote.<name>.annex-stop-command`++ A command to run when git-annex is done using the remote.++ The command will only be run once *all* running git-annex processes+ are finished using the remote.++* `remote.<name>.annex-shell`++ Specify an alternative git-annex-shell executable on the remote+ instead of looking for "git-annex-shell" on the PATH.++ This is useful if the git-annex-shell program is outside the PATH+ or has a non-standard name.++* `remote.<name>.annex-ignore`++ If set to `true`, prevents git-annex+ from storing file contents on this remote by default.+ (You can still request it be used by the `--from` and `--to` options.)++ This is, for example, useful if the remote is located somewhere+ without git-annex-shell. (For example, if it's on GitHub).+ Or, it could be used if the network connection between two+ repositories is too slow to be used normally.++ This does not prevent git-annex sync (or the git-annex assistant) from+ syncing the git repository to the remote.++* `remote.<name>.annex-sync`++ If set to `false`, prevents git-annex sync (and the git-annex assistant)+ from syncing with this remote.++* `remote.<name>.annex-readonly`++ If set to `true`, prevents git-annex from making changes to a remote.+ This both prevents git-annex sync from pushing changes, and prevents+ storing or removing files from read-only remote.++* `remote.<name>.annexUrl`++ Can be used to specify a different url than the regular `remote.<name>.url`+ for git-annex to use when talking with the remote. Similar to the `pushUrl`+ used by git-push.++* `remote.<name>.annex-uuid`++ git-annex caches UUIDs of remote repositories here.++* `remote.<name>.annex-trustlevel`++ Configures a local trust level for the remote. This overrides the value+ configured by the trust and untrust commands. The value can be any of+ "trusted", "semitrusted" or "untrusted".++* `remote.<name>.annex-availability`++ Can be used to tell git-annex whether a remote is LocallyAvailable+ or GloballyAvailable. Normally, git-annex determines this automatically.++* `remote.<name>.annex-bare`++ Can be used to tell git-annex if a remote is a bare repository+ or not. Normally, git-annex determines this automatically.++* `remote.<name>.annex-ssh-options`++ Options to use when using ssh to talk to this remote.++* `remote.<name>.annex-rsync-options`++ Options to use when using rsync+ to or from this remote. For example, to force ipv6, and limit+ the bandwidth to 100Kbyte/s, set it to `-6 --bwlimit 100`++* `remote.<name>.annex-rsync-upload-options`++ Options to use when using rsync to upload a file to a remote.++ These options are passed after other applicable rsync options,+ so can be used to override them. For example, to limit upload bandwidth+ to 10Kbyte/s, set `--bwlimit 10`.++* `remote.<name>.annex-rsync-download-options`++ Options to use when using rsync to download a file from a remote.++ These options are passed after other applicable rsync options,+ so can be used to override them.++* `remote.<name>.annex-rsync-transport`++ The remote shell to use to connect to the rsync remote. Possible+ values are `ssh` (the default) and `rsh`, together with their+ arguments, for instance `ssh -p 2222 -c blowfish`; Note that the+ remote hostname should not appear there, see rsync(1) for details.+ When the transport used is `ssh`, connections are automatically cached+ unless `annex.sshcaching` is unset.++* `remote.<name>.annex-bup-split-options`++ Options to pass to bup split when storing content in this remote.+ For example, to limit the bandwidth to 100Kbyte/s, set it to `--bwlimit 100k`+ (There is no corresponding option for bup join.)++* `remote.<name>.annex-gnupg-options`++ Options to pass to GnuPG for symmetric encryption. For instance, to+ use the AES cipher with a 256 bits key and disable compression, set it+ to `--cipher-algo AES256 --compress-algo none`. (These options take+ precedence over the default GnuPG configuration, which is otherwise+ used.)++* `annex.ssh-options`, `annex.rsync-options`,+ `annex.rsync-upload-options`, `annex.rsync-download-options`,+ `annex.bup-split-options`, `annex.gnupg-options`++ Default options to use if a remote does not have more specific options+ as described above.++* `annex.web-options`++ Options to pass when running wget or curl.+ For example, to force ipv4 only, set it to "-4"++* `annex.quvi-options`++ Options to pass to quvi when using it to find the url to download for a+ video.++* `annex.aria-torrent-options`++ Options to pass to aria2c when using it to download a torrent.++* `annex.http-headers`++ HTTP headers to send when downloading from the web. Multiple lines of+ this option can be set, one per header.++* `annex.http-headers-command`++ If set, the command is run and each line of its output is used as a HTTP+ header. This overrides annex.http-headers.++* `annex.web-download-command`++ Use to specify a command to run to download a file from the web.+ (The default is to use wget or curl.)++ In the command line, %url is replaced with the url to download,+ and %file is replaced with the file that it should be saved to.++* `annex.secure-erase-command`++ This can be set to a command that should be run whenever git-annex+ removes the content of a file from the repository.++ In the command line, %file is replaced with the file that should be+ erased.++ For example, to use the wipe command, set it to `wipe -f %file`.++* `remote.<name>.rsyncurl`++ Used by rsync special remotes, this configures+ the location of the rsync repository to use. Normally this is automatically+ set up by `git annex initremote`, but you can change it if needed.++* `remote.<name>.buprepo`++ Used by bup special remotes, this configures+ the location of the bup repository to use. Normally this is automatically+ set up by `git annex initremote`, but you can change it if needed.++* `remote.<name>.ddarrepo`++ Used by ddar special remotes, this configures+ the location of the ddar repository to use. Normally this is automatically+ set up by `git annex initremote`, but you can change it if needed.++* `remote.<name>.directory`++ Used by directory special remotes, this configures+ the location of the directory where annexed files are stored for this+ remote. Normally this is automatically set up by `git annex initremote`,+ but you can change it if needed.++* `remote.<name>.s3`++ Used to identify Amazon S3 special remotes.+ Normally this is automatically set up by `git annex initremote`.++* `remote.<name>.glacier`++ Used to identify Amazon Glacier special remotes.+ Normally this is automatically set up by `git annex initremote`.++* `remote.<name>.webdav`++ Used to identify webdav special remotes.+ Normally this is automatically set up by `git annex initremote`.++* `remote.<name>.tahoe`++ Used to identify tahoe special remotes.+ Points to the configuration directory for tahoe.++* `remote.<name>.annex-xmppaddress`++ Used to identify the XMPP address of a Jabber buddy.+ Normally this is set up by the git-annex assistant when pairing over XMPP.++* `remote.<name>.gcrypt`++ Used to identify gcrypt special remotes.+ Normally this is automatically set up by `git annex initremote`.++ It is set to "true" if this is a gcrypt remote.+ If the gcrypt remote is accessible over ssh and has git-annex-shell+ available to manage it, it's set to "shell".++* `remote.<name>.hooktype`, `remote.<name>.externaltype`++ Used by hook special remotes and external special remotes to record+ the type of the remote.++* `annex.tune.objecthash1`, `annex.tune.objecthashlower`, `annex.tune.branchhash1`++ These can be passed to `git annex init` to tune the repository.+ They cannot be safely changed in a running repository.+ For details, see <http://git-annex.branchable.com/tuning/>.++# CONFIGURATION VIA .gitattributes++The key-value backend used when adding a new file to the annex can be+configured on a per-file-type basis via `.gitattributes` files. In the file,+the `annex.backend` attribute can be set to the name of the backend to+use. For example, this here's how to use the WORM backend by default,+but the SHA256E backend for ogg files:++ * annex.backend=WORM+ *.ogg annex.backend=SHA256E++The numcopies setting can also be configured on a per-file-type basis via+the `annex.numcopies` attribute in `.gitattributes` files. This overrides+other numcopies settings.+For example, this makes two copies be needed for wav files and 3 copies+for flac files:++ *.wav annex.numcopies=2+ *.flac annex.numcopies=3++Note that setting numcopies to 0 is very unsafe.++These settings are honored by git-annex whenever it's operating on a+matching file. However, when using --all, --unused, or --key to specify+keys to operate on, git-annex is operating on keys and not files, so will+not honor the settings from .gitattributes.++Also note that when using views, only the toplevel .gitattributes file is+preserved in the view, so other settings in other files won't have any+effect.++# FILES++These files are used by git-annex:++`.git/annex/objects/` in your git repository contains the annexed file+contents that are currently available. Annexed files in your git+repository symlink to that content.++`.git/annex/` in your git repository contains other run-time information+used by git-annex.++`~/.config/git-annex/autostart` is a list of git repositories+to start the git-annex assistant in.++`.git/hooks/pre-commit-annex` in your git repository will be run whenever+a commit is made to the HEAD branch, either by git commit, git-annex+sync, or the git-annex assistant.++`.git/hooks/post-update-annex` in your git repository will be run+whenever the git-annex branch is updated. You can make this hook run+`git update-server-info` when publishing a git-annex repository by http.++# SEE ALSO++More git-annex documentation is available on its web site, <http://git-annex.branchable.com/> If git-annex is installed from a package, a copy of its documentation
+ doc/install/Android/comment_11_3e7980603749665fafbdeb1b7ab068a5._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawnG-DZQa3d3Jn7K2q36TlbmZ8v2YuV-23M"+ nickname="Fer"+ subject="Android x86?"+ date="2015-03-23T06:55:35Z"+ content="""+Hello, looks like the binaries compiled for ARM, anyone succeeded building for Android x86?+"""]]
doc/internals.mdwn view
@@ -241,7 +241,7 @@ There can be multiple events in the schedule, separated by "; ". The format of the scheduled events is the same described in-the SCHEDULED JOBS section of the man page.+[[git-annex-schedule]]. Example:
+ doc/internals/hashing/comment_7_843592cf125be06fb316be43b85b0524._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="giomasce"+ subject="Python implementation"+ date="2015-03-22T22:38:54Z"+ content="""+I wrote a Python implementation of the two hashing functions for a project of mine. [Here it is](https://gist.github.com/giomasce/a7802bda1417521c5b30), hoping it can be helpful for somone.++"""]]
doc/news/version_5.20150317.mdwn view
@@ -40,3 +40,6 @@ * registerurl: New plumbing command for mass-adding urls to keys. * remotedaemon: Fixed support for notifications of changes to gcrypt remotes, which was never tested and didn't quite work before."""]]++Update: The OSX build for this release was missing the webapp. An updated+build is now available fixing that problem.
+ doc/news/version_5.20150327.mdwn view
@@ -0,0 +1,22 @@+git-annex 5.20150327 released with [[!toggle text="these changes"]]+[[!toggleable text="""+ * readpresentkey: New plumbing command for checking location log.+ * checkpresentkey: New plumbing command to check if a key can be verified+ to be present on a remote.+ * Added a post-update-annex hook, which is run after the git-annex branch+ is updated. Needed for git update-server-info.+ * migrate: --force will force migration of keys already using the+ destination backend. Useful in rare cases.+ * Man pages for individual commands now available, and can be+ opened using "git annex help <command>"+ * --auto is no longer a global option; only get, drop, and copy+ accept it. (Not a behavior change unless you were passing it to a+ command that ignored it.)+ * Improve error message when --in @date is used and there is no+ reflog for the git-annex branch.+ * assistant: Committing a whole lot of files at once could overflow+ command-line length limits and cause the commit to fail. This+ only happened when using the assistant in an indirect mode repository.+ * Work around curl bug when asked to download an empty url to a file.+ * Fix bug introduced in the last release that broke git-annex sync+ when git-annex was installed from the standalone tarball."""]]
+ doc/todo/Specify_a_version_for_the___39__feed__39___build_dependency..mdwn view
@@ -0,0 +1,9 @@+(I'm not sure how you would like to do this -- should I send commits for you to pull, or do you prefer a patch pasted in here?)++In any case, here's a build-deps fix, originally sent as a pull request [1].++https://github.com/joeyh/git-annex/compare/master...jlebar:build-deps++[1] https://github.com/joeyh/git-annex/pull/37++> This is fine. Thanks, I merged your patch. [[done]] --[[Joey]]
+ doc/todo/What_if_the_active_annex__39__ed_files_were_not_symlinks__63__.mdwn view
@@ -0,0 +1,26 @@+So annex is super cool and all. But there is one really annoying thing about it. The symlinks disrupt workflow really horribly! For example if I have a .psd file that is annex'd and I open that file in photoshop, edit it, then try to save it again. It doesn't allow me, because the actual file is the one deep in the annex sub structure that is read only. There a bunch of other annoyances like this. But you basically can't work with annex'd files without some additional struggle.++But there is a solution to this. Just don't symlink the files that are active. I think potentially the simplest way to do this is to have a 'annex' and 'unannex' command. Or rather, a 'create symlink' and 'uncreate symlink' command. ++So then you can be going along, doing your work, nothing in your directory symlinked.++You then type you 'annex symlink' command all priorly annexed filed will be deleted and replaced with their symlinks.++Then you can add your new files to annex. Adding new files will just automatically symlink them unless you put like a -ns or something to signify to not symlink them.++With all priorly annexed filed symlinked and all your new files symlinked, you then git commit and push.++Then you do a git annex unsymlink command. And then all your symlinks are deleted and the actual file placed there.++Then you just type git annex symlink again to re-symlink them all.++> I think you are looking for the `unlock` and `add` (or `lock`) commands. Basically, to edit the file in photoshop, you want:+>+> <pre>+> git annex unlock file.psd+> photoshop file.psd # ...+> git annex add file.psd # if you are happy with your changes or...+> git annex lock file.psd # if you want to discard your changes+> </pre>+>+> So basically what you are asking for is already [[done]], in my mind. I still think there are significant [[usability issues|forum/usability:_what_are_those_arrow_things__63__/]] with symlinks, but that's another story. --[[anarcat]]
− git-annex-shell.1
@@ -1,113 +0,0 @@-.TH git-annex-shell 1-.SH NAME-git\-annex\-shell \- Restricted login shell for git\-annex only SSH access-.PP-.SH SYNOPSIS-git\-annex\-shell [\-c] command [params ...]-.PP-.SH DESCRIPTION-git\-annex\-shell is a restricted shell, similar to git\-shell, which-can be used as a login shell for SSH accounts.-.PP-Since its syntax is identical to git\-shell's, it can be used as a drop\-in-replacement anywhere git\-shell is used. For example it can be used as a -user's restricted login shell.-.PP-.SH COMMANDS-Any command not listed below is passed through to git\-shell.-.PP-Note that the directory parameter should be an absolute path, otherwise-it is assumed to be relative to the user's home directory. Also the-first "/~/" or "/~user/" is expanded to the specified home directory.-.PP-.IP "configlist directory"-This outputs a subset of the git configuration, in the same form as-\fBgit config \-\-list\fP. This is used to get the annex.uuid of the remote-repository.-.IP-When run in a repository that does not yet have an annex.uuid, one-will be created, as long as a git\-annex branch has already been pushed to-the repository.-.IP-.IP "inannex directory [key ...]"-This checks if all specified keys are present in the annex, -and exits zero if so.-.IP-.IP "dropkey directory [key ...]"-This drops the annexed data for the specified keys.-.IP-.IP "recvkey directory key"-This runs rsync in server mode to receive the content of a key,-and stores the content in the annex.-.IP-.IP "sendkey directory key"-This runs rsync in server mode to transfer out the content of a key.-.IP-.IP "transferinfo directory key"-This is typically run at the same time as sendkey is sending a key-to the remote. Using it is optional, but is used to update-progress information for the transfer of the key.-.IP-It reads lines from standard input, each giving the number of bytes-that have been received so far. -.IP-.IP "commit directory"-This commits any staged changes to the git\-annex branch.-It also runs the annex\-content hook.-.IP-.IP "notifychanges"-This is used by \fBgit\-annex remotedaemon\fP to be notified when-refs in the remote repository are changed.-.IP-.IP "gcryptsetup gcryptid"-Sets up a repository as a gcrypt repository.-.IP-.SH OPTIONS-Most options are the same as in git\-annex. The ones specific-to git\-annex\-shell are:-.PP-.IP "\-\-uuid=UUID"-git\-annex uses this to specify the UUID of the repository it was expecting-git\-annex\-shell to access, as a sanity check.-.IP-.IP "\-\- fields=val fields=val.. \-\-"-Additional fields may be specified this way, to retain compatability with-past versions of git\-annex\-shell (that ignore these, but would choke-on new dashed options).-.IP-Currently used fields include remoteuuid=, associatedfile=,-and direct=-.IP-.SH HOOK-After content is received or dropped from the repository by git\-annex\-shell,-it runs a hook, \fB.git/hooks/annex\-content\fP (or \fBhooks/annex\-content\fP on a bare-repository). The hook is not currently passed any information about what-changed.-.PP-.SH ENVIRONMENT-.IP "GIT_ANNEX_SHELL_READONLY"-.IP-If set, disallows any command that could modify the repository.-.IP-Note that this does not prevent passing commands on to git\-shell.-For that, you also need ...-.IP-.IP "GIT_ANNEX_SHELL_LIMITED"-If set, disallows running git\-shell to handle unknown commands.-.IP-.IP "GIT_ANNEX_SHELL_DIRECTORY"-If set, git\-annex\-shell will refuse to run commands that do not operate-on the specified directory.-.IP-.SH SEE ALSO-git\-annex(1)-.PP-git\-shell(1)-.PP-.SH AUTHOR-Joey Hess <id@joeyh.name>-.PP-<http://git\-annex.branchable.com/>-.PP-.PP-
− git-annex.1
@@ -1,1758 +0,0 @@-.TH git-annex 1-.SH NAME-git\-annex \- manage files with git, without checking their contents in-.PP-.SH SYNOPSIS-git annex command [params ...]-.PP-.SH DESCRIPTION-git\-annex allows managing files with git, without checking the file-contents into git. While that may seem paradoxical, it is useful when-dealing with files larger than git can currently easily handle, whether due-to limitations in memory, checksumming time, or disk space.-.PP-Even without file content tracking, being able to manage files with git,-move files around and delete files with versioned directory trees, and use-branches and distributed clones, are all very handy reasons to use git. And-annexed files can co\-exist in the same git repository with regularly-versioned files, which is convenient for maintaining documents, Makefiles,-etc that are associated with annexed files but that benefit from full-revision control.-.PP-When a file is annexed, its content is moved into a key\-value store, and-a symlink is made that points to the content. These symlinks are checked into-git and versioned like regular files. You can move them around, delete-them, and so on. Pushing to another git repository will make git\-annex-there aware of the annexed file, and it can be used to retrieve its-content from the key\-value store.-.PP-.SH EXAMPLES- # git annex get video/hackity_hack_and_kaxxt.mov- get video/hackity_hack_and_kaxxt.mov (not available)- I was unable to access these remotes: server- Try making some of these repositories available:- 5863d8c0\-d9a9\-11df\-adb2\-af51e6559a49 \-\- my home file server- 58d84e8a\-d9ae\-11df\-a1aa\-ab9aa8c00826 \-\- portable USB drive- ca20064c\-dbb5\-11df\-b2fe\-002170d25c55 \-\- backup SATA drive- failed- # sudo mount /media/usb- # git remote add usbdrive /media/usb- # git annex get video/hackity_hack_and_kaxxt.mov- get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok- - # git annex add iso- add iso/Debian_5.0.iso ok- - # git annex drop iso/Debian_4.0.iso- drop iso/Debian_4.0.iso ok- - # git annex move iso \-\-to=usbdrive- move iso/Debian_5.0.iso (moving to usbdrive...) ok-.PP-.SH COMMONLY USED COMMANDS-Like many git commands, git\-annex can be passed a path that-is either a file or a directory. In the latter case it acts on all relevant-files in the directory. When no path is specified, most git\-annex commands-default to acting on all relevant files in the current directory (and-subdirectories).-.PP-.IP "\fBadd [path ...]\fP"-Adds files in the path to the annex. If no path is specified, adds-files from the current directory and below.-.IP-Files that are already checked into git, or that git has been configured-to ignore will be silently skipped. (Use \fB\-\-force\fP to add ignored files.)-.IP-Dotfiles are skipped unless explicitly listed, or the \-\-include\-dotfiles-option is used.-.IP-.IP "\fBget [path ...]\fP"-Makes the content of annexed files available in this repository. This-will involve copying them from another repository, or downloading them,-or transferring them from some kind of key\-value store.-.IP-Normally git\-annex will choose which repository to copy the content from,-but you can override this using the \fB\-\-from\fP option.-.IP-Rather than specifying a filename, the \fB\-\-all\fP option can be used to -get all available versions of all files, or the \-\-key=KEY-option can be used to get a specified key.-.IP-.IP "\fBdrop [path ...]\fP"-Drops the content of annexed files from this repository.-.IP-git\-annex will refuse to drop content if it cannot verify it is-safe to do so. This can be overridden with the \fB\-\-force\fP switch.-.IP-To drop content from a remote, specify \fB\-\-from\fP.-.IP-.IP "\fBmove [path ...]\fP"-When used with the \fB\-\-from\fP option, moves the content of annexed files-from the specified repository to the current one.-.IP-When used with the \fB\-\-to\fP option, moves the content of annexed files from-the current repository to the specified one.-.IP-.IP "\fBcopy [path ...]\fP"-When used with the \fB\-\-from\fP option, copies the content of annexed files-from the specified repository to the current one.-.IP-When used with the \fB\-\-to\fP option, copies the content of annexed files from-the current repository to the specified one.-.IP-To avoid contacting the remote to check if it has every file-when copying \-\-to the repository, specify \fB\-\-fast\fP-.IP-To force checking the remote for every file when copying \-\-from the-repository, specify \fB\-\-force\fP.-.IP-.IP "\fBstatus [path ...]\fP"-Similar to \fBgit status \-\-short\fP, displays the status of the files in the-working tree. Shows files that are not checked into git, files that-have been deleted, and files that have been modified.-Particularly useful in direct mode.-.IP-.IP "\fBunlock [path ...]\fP"-Normally, the content of annexed files is protected from being changed.-Unlocking an annexed file allows it to be modified. This replaces the-symlink for each specified file with a copy of the file's content.-You can then modify it and \fBgit annex add\fP (or \fBgit commit\fP) to inject-it back into the annex.-.IP-.IP "\fBedit [path ...]\fP"-This is an alias for the unlock command. May be easier to remember,-if you think of this as allowing you to edit an annexed file.-.IP-.IP "\fBlock [path ...]\fP"-Use this to undo an unlock command if you don't want to modify-the files, or have made modifications you want to discard.-.IP-.IP "\fBsync [remote ...]\fP"-Use this command when you want to synchronize the local repository with-one or more of its remotes. You can specify the remotes (or remote-groups) to sync with by name; the default if none are specified is to-sync with all remotes.-Or specify \fB\-\-fast\fP to sync with the remotes with the-lowest annex\-cost value.-.IP-The sync process involves first committing any local changes to files-that have previously been added to the repository,-then fetching and merging the \fBsynced/master\fP and the \fBgit\-annex\fP branch-from the remote repositories, and finally pushing the changes back to-those branches on the remote repositories. You can use standard git-commands to do each of those steps by hand, or if you don't want to-worry about the details, you can use sync.-.IP-Merge conflicts are automatically handled by sync. When two conflicting-versions of a file have been committed, both will be added to the tree,-under different filenames. For example, file "foo" would be replaced-with "foo.somekey" and "foo.otherkey".-.IP-Note that syncing with a remote will not update the remote's working-tree with changes made to the local repository. However, those changes-are pushed to the remote, so they can be merged into its working tree-by running "git annex sync" on the remote.-.IP-With the \fB\-\-content\fP option, the contents of annexed files in the work-tree will also be uploaded and downloaded from remotes. By default,-this tries to get each annexed file that the local repository does not-yet have, and then copies each file to every remote that it is syncing with.-This behavior can be overridden by configuring the preferred content of-a repository. See see PREFERRED CONTENT below.-.IP-The \fB\-\-message\fP or \fB\-m\fP option can be used to specify a commit message.-.IP-.IP "\fBmerge\fP"-This performs the same merging (and merge conflict resolution)-that is done by the sync command, but without pushing or pulling any data.-.IP-One way to use this is to put \fBgit annex merge\fP into a repository's-post\-receive hook. Then any syncs to the repository will update its working-copy automatically.-.IP-.IP "\fBmirror [path ...]\fP"-This causes a destination repository to mirror a source repository.-.IP-To use the local repository as the source repository,-specify mirror \fB\-\-to\fP remote.-.IP-To use a remote as the source repository, specify mirror \fB\-\-from\fP remote.-.IP-Each specified file in the source repository is mirrored to the destination-repository. If a file's content is present in the source repository, it is-copied to the destination repository. If a file's content is not present in-the source repository, it will be dropped from the destination repository-when the numcopies setting allows.-.IP-Note that mirror does not sync the git repository, but only the file-contents.-.IP-Also, \-\-all may be specified to mirror all objects stored in the git-annex, not only objects used by currently existing files. However, this-bypasses checking the .gitattributes annex.numcopies setting when-dropping files.-.IP-.IP "\fBaddurl [url ...]\fP"-Downloads each url to its own file, which is added to the annex.-.IP-To avoid immediately downloading the url, specify \fB\-\-fast\fP.-.IP-To avoid storing the size of the url's content, and accept whatever-is there at a future point, specify \fB\-\-relaxed\fP. (Implies \fB\-\-fast\fP.)-.IP-Normally the filename is based on the full url, so will look like-"www.example.com_dir_subdir_bigfile". In some cases, addurl is able to-come up with a better filename based on other information. Or, for a-shorter filename, specify \fB\-\-pathdepth=N\fP. For example,-\fB\-\-pathdepth=1\fP will use "dir/subdir/bigfile",-while \fB\-\-pathdepth=3\fP will use "bigfile". It can also be negative;-\fB\-\-pathdepth=\-2\fP will use the last two parts of the url.-.IP-Or, to directly specify what file the url is added to, specify \fB\-\-file\fP.-This changes the behavior; now all the specified urls are recorded as-alternate locations from which the file can be downloaded. In this mode,-addurl can be used both to add new files, or to add urls to existing files.-.IP-When \fBquvi\fP is installed, urls are automatically tested to see if they-point to a video hosting site, and the video is downloaded instead.-.IP-Urls to torrent files (including magnet links) will cause the content of-the torrent to be downloaded, using \fBaria2c\fP.-.IP-To prevent special handling of urls by quvi, bittorrent, and other-special remotes, specify \fB\-\-raw\fP. This will for example, make addurl-download the .torrent file and not the contents it points to.-.IP-.IP "\fBrmurl file url\fP"-Record that the file is no longer available at the url.-.IP-.IP "\fBimport [path ...]\fP"-Moves files from somewhere outside the git working copy, and adds them to-the annex. Individual files to import can be specified.-If a directory is specified, the entire directory is imported.-.IP- git annex import /media/camera/DCIM/*-.IP-By default, importing two files with the same contents from two different-locations will result in both files being added to the repository.-(With all checksumming backends, including the default SHA256E,-only one copy of the data will be stored.)-.IP-To not delete files from the import location, use the-\fB\-\-duplicate\fP option. This could allow importing the same files repeatedly-to different locations in a repository. More likely, it could be used to-import the same files to a number of different branches or separate git-repositories.-.IP-To only import files whose content has not been seen before by git\-annex,-use the \fB\-\-deduplicate\fP option. Duplicate files will be deleted from the-import location.-.IP-To only import files whose content has not been seen before by git\-annex,-but avoid deleting duplicate files, use the \fB\-\-skip\-duplicates\fP option.-.IP-The \fB\-\-clean\-duplicates\fP option does not import any new files, but any files-found in the import location that are duplicates of content in the annex-are deleted.-.IP-(Note that using \fB\-\-deduplicate\fP or \fB\-\-clean\-duplicates\fP with the WORM-backend does not look at file content, but filename and mtime.)-.IP-To control which files are imported, many of the MATCHING OPTIONS can -be used.-.IP- git annex import /dir \-\-include='*.png'-.IP-.IP "\fBimportfeed [url ...]\fP"-Imports the contents of podcast feeds. Only downloads files whose-urls have not already been added to the repository before, so you can-delete, rename, etc the resulting files and repeated runs won't duplicate-them. (Use \fB\-\-force\fP to force downloading urls it's seen before.)-.IP-Use \fB\-\-template\fP to control where the files are stored.-The default template is '${feedtitle}/${itemtitle}${extension}'-(Other available variables: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate, title, author)-.IP-The \fB\-\-relaxed\fP, \fB\-\-fast\fP, and \fB\-\-raw\fP options behave the same as they-do in addurl.-.IP-When quvi is installed, links in the feed are tested to see if they-are on a video hosting site, and the video is downloaded. This allows-importing e.g., youtube playlists.-.IP-.IP "\fBundo [filename|directory] ...\fP"-When passed a filename, undoes the last change that was made to that-file.-.IP-When passed a directory, undoes the last change that was made to the-contents of that directory.-.IP-Running undo a second time will undo the undo, returning the working-tree to the same state it had before. In order for undoing an undo of-staged changes, any staged changes are first committed by the-undo command.-.IP-Note that this does not undo get/drop of a file's content; it only-operates on the file tree committed to git.-.IP-.IP "\fBwatch\fP"-Watches for changes to files in the current directory and its subdirectories,-and takes care of automatically adding new files, as well as dealing with-deleted, copied, and moved files. With this running as a daemon in the-background, you no longer need to manually run git commands when-manipulating your files.-.IP-By default, all files in the directory will be added to the repository.-(Including dotfiles.) To block some files from being added, use-\fB.gitignore\fP files.-.IP-By default, all files that are added are added to the annex, the same-as when you run \fBgit annex add\fP. If you configure annex.largefiles,-files that it does not match will instead be added with \fBgit add\fP.-.IP-To not daemonize, run with \fB\-\-foreground\fP ; to stop a running daemon,-run with \fB\-\-stop\fP.-.IP-.IP "\fBassistant\fP"-Like watch, but also automatically syncs changes to other remotes.-Typically started at boot, or when you log in.-.IP-With the \fB\-\-autostart\fP option, the assistant is started in any repositories-it has created. These are listed in \fB~/.config/git\-annex/autostart\fP.-.IP-.IP "\fBwebapp\fP"-Opens a web app, that allows easy setup of a git\-annex repository,-and control of the git\-annex assistant. If the assistant is not-already running, it will be started.-.IP-By default, the webapp can only be accessed from localhost, and running-it opens a browser window.-.IP-To use the webapp on a remote computer, use the \fB\-\-listen=address\fP-option to specify the address the web server should listen on-(or set annex.listen).-This disables running a local web browser, and outputs the url you-can use to open the webapp.-.IP-When using the webapp on a remote computer, you'll almost certainly-want to enable HTTPS. The webapp will use HTTPS if it finds-a .git/annex/privkey.pem and .git/annex/certificate.pem. Here's-one way to generate those files, using a self\-signed certificate:-.IP-openssl genrsa \-out .git/annex/privkey.pem 4096-openssl req \-new \-x509 \-key .git/annex/privkey.pem > .git/annex/certificate.pem-.IP-.SH REPOSITORY SETUP COMMANDS-.IP "\fBinit [description]\fP"-.IP-Until a repository (or one of its remotes) has been initialized,-git\-annex will refuse to operate on it, to avoid accidentally-using it in a repository that was not intended to have an annex.-.IP-It's useful, but not mandatory, to initialize each new clone-of a repository with its own description. If you don't provide one,-one will be generated using the username, hostname and the path.-.IP-.IP "\fBdescribe repository description\fP"-Changes the description of a repository.-.IP-The repository to describe can be specified by git remote name or-by uuid. To change the description of the current repository, use-"here".-.IP-.IP "\fBinitremote name [param=value ...]\fP"-Creates a new special remote, and adds it to \fB.git/config\fP.-.IP-The remote's configuration is specified by the parameters. Different-types of special remotes need different configuration values. The-command will prompt for parameters as needed.-.IP-All special remotes support encryption. You can either specify-\fBencryption=none\fP to disable encryption, or specify-\fBencryption=hybrid keyid=$keyid ...\fP to specify a GPG key id (or an email-address associated with a key).-.IP-There are actually three schemes that can be used for management of the-encryption keys. When using the encryption=hybrid scheme, additional-GPG keys can be given access to the encrypted special remote easily-(without re\-encrypting everything). When using encryption=shared,-a shared key is generated and stored in the git repository, allowing-anyone who can clone the git repository to access it. Finally, when using-encryption=pubkey, content in the special remote is directly encrypted-to the specified GPG keys, and additional ones cannot easily be given-access.-.IP-Note that with encryption enabled, a cryptographic key is created.-This requires sufficient entropy. If initremote seems to hang or take-a long time while generating the key, you may want to Ctrl\-c it and-re\-run with \fB\-\-fast\fP, which causes it to use a lower\-quality source of-randomness.-.IP-Example Amazon S3 remote:-.IP- git annex initremote mys3 type=S3 encryption=hybrid keyid=me@example.com datacenter=EU-.IP-.IP "\fBenableremote name [param=value ...]\fP"-Enables use of an existing special remote in the current repository,-which may be a different repository than the one in which it was-originally created with the initremote command.-.IP-The name of the remote is the same name used when originally-creating that remote with "initremote". Run "git annex enableremote"-without any name to get a list of special remote names.-.IP-Some special remotes may need parameters to be specified every time.-For example, the directory special remote requires a directory= parameter.-.IP-This command can also be used to modify the configuration of an existing-special remote, by specifying new values for parameters that were-originally set when using initremote. (However, some settings such as-the as the encryption scheme cannot be changed once a special remote-has been created.)-.IP-The GPG keys that an encrypted special remote is encrypted with can be-changed using the keyid+= and keyid\-= parameters. These respectively-add and remove keys from the list. However, note that removing a key-does NOT necessarily prevent the key's owner from accessing data-in the encrypted special remote-(which is by design impossible, short of deleting the remote).-.IP-One use\-case of keyid\-= is to replace a revoked key with-a new key:-.IP- git annex enableremote mys3 keyid\-=revokedkey keyid+=newkey-.IP-Also, note that for encrypted special remotes using plain public\-key-encryption (encryption=pubkey), adding or removing a key has NO effect-on files that have already been copied to the remote. Hence using-keyid+= and keyid\-= with such remotes should be used with care, and-make little sense except in cases like the revoked key example above.-.IP-.IP "\fBnumcopies [N]\fP"-Tells git\-annex how many copies it should preserve of files, over all-repositories. The default is 1.-.IP-Run without a number to get the current value.-.IP-When git\-annex is asked to drop a file, it first verifies that the-required number of copies can be satisfied among all the other-repositories that have a copy of the file.-.IP-This can be overridden on a per\-file basis by the annex.numcopies setting-in .gitattributes files.-.IP-.IP "\fBtrust [repository ...]\fP"-Records that a repository is trusted to not unexpectedly lose-content. Use with care.-.IP-To trust the current repository, use "here".-.IP-.IP "\fBuntrust [repository ...]\fP"-Records that a repository is not trusted and could lose content-at any time.-.IP-.IP "\fBsemitrust [repository ...]\fP"-Returns a repository to the default semi trusted state.-.IP-.IP "\fBdead [repository ...]\fP"-Indicates that the repository has been irretrievably lost.-(To undo, use semitrust.)-.IP-.IP "\fBgroup repository groupname\fP"-Adds a repository to a group, such as "archival", "enduser", or "transfer".-The groupname must be a single word.-.IP-Omit the groupname to show the current groups that a repository is in.-.IP-.IP "\fBungroup repository groupname\fP"-Removes a repository from a group.-.IP-.IP "\fBwanted repository [expression]\fP"-When run with an expression, configures the content that is preferred-to be held in the archive. See PREFERRED CONTENT below.-.IP-For example:-.IP- git annex wanted . "include=*.mp3 or include=*.ogg"-.IP-Without an expression, displays the current preferred content setting-of the repository.-.IP-.IP "\fBgroupwanted groupname [expression]\fP"-Sets or displays the groupwanted expression. This will be used by-repositories that are in the group, and that have their preferred-content expression set to "groupwanted".-.IP-For example, to configure a group named redundantarchive, and-make repositories in the group want to contain 3 copies of every file:-.IP- git annex groupwanted redundantarchive "not (copies=redundantarchive:3)"- for repo in foo bar baz; do- git annex group $repo redundantarchive- git annex wanted $repo groupwanted- done-.IP-.IP "\fBschedule repository [expression]\fP"-When run with an expression, configures scheduled jobs to run at a-particular time. This can be used to make the assistant periodically run-incremental fscks. See SCHEDULED JOBS below.-.IP-.IP "\fBvicfg\fP"-Opens EDITOR on a temp file containing most of the above configuration-settings, as well as a few others, and when it exits, stores any changes-made back to the git\-annex branch.-.IP-.IP "\fBdirect\fP"-Switches a repository to use direct mode, where rather than symlinks to-files, the files are directly present in the repository.-.IP-As part of the switch to direct mode, any changed files will be committed.-.IP-Note that git commands that operate on the work tree will refuse to-run in direct mode repositories. Use \fBgit annex proxy\fP to safely run such-commands.-.IP-.IP "\fBindirect\fP"-Switches a repository back from direct mode to the default, indirect mode.-.IP-As part of the switch from direct mode, any changed files will be committed.-.IP-.SH REPOSITORY MAINTENANCE COMMANDS-.IP "\fBfsck [path ...]\fP"-.IP-With no parameters, this command checks the whole annex for consistency,-and warns about or fixes any problems found. This is a good complement to-\fBgit fsck\fP.-.IP-With parameters, only the specified files are checked.-.IP-To check a remote to fsck, specify \fB\-\-from\fP.-.IP-To avoid expensive checksum calculations (and expensive transfers when-fscking a remote), specify \fB\-\-fast\fP.-.IP-To start a new incremental fsck, use the \fB\-\-incremental\fP option. Then-the next time you fsck, you can instead use the \fB\-\-more\fP option -to skip over files that have already been checked, and continue-where it left off.-.IP-The \fB\-\-incremental\-schedule\fP option makes a new incremental fsck be-started a configurable time after the last incremental fsck was started.-Once the current incremental fsck has completely finished, it causes-a new one to start.-.IP-Maybe you'd like to run a fsck for 5 hours at night, picking up each-night where it left off. You'd like this to continue until all files-have been fscked. And once it's done, you'd like a new fsck pass to start,-but no more often than once a month. Then put this in a nightly cron job:-.IP- git annex fsck \-\-incremental\-schedule 30d \-\-time\-limit 5h-.IP-To verify data integrity only while disregarding required number of copies,-use \fB\-\-numcopies=1\fP.-.IP-.IP "\fBunused\fP"-Checks the annex for data that does not correspond to any files present-in any tag or branch, and prints a numbered list of the data.-.IP-To only show unused temp and bad files, specify \fB\-\-fast\fP.-.IP-To check for annexed data on a remote, specify \fB\-\-from\fP.-.IP-After running this command, you can use the \fB\-\-unused\fP option to-operate on all the unused data that was found. For example, to-move all unused data to origin:-.IP- git annex unused; git annex move \-\-unused \-\-to origin-.IP-.IP "\fBdropunused [number|range ...]\fP"-Drops the data corresponding to the numbers, as listed by the last-\fBgit annex unused\fP-.IP-You can also specify ranges of numbers, such as "1\-1000".-Or, specify "all" to drop all unused data.-.IP-To drop the data from a remote, specify \fB\-\-from.\fP-.IP-.IP "\fBaddunused [number|range ...]\fP"-Adds back files for the content corresponding to the numbers or ranges,-as listed by the last \fBgit annex unused\fP. The files will have names-starting with "unused."-.IP-.IP "\fBfix [path ...]\fP"-Fixes up symlinks that have become broken to again point to annexed content.-This is useful to run if you have been moving the symlinks around,-but is done automatically when committing a change with git too.-.IP-.IP "\fBupgrade\fP"-Upgrades the repository to current layout.-.IP-.IP "\fBforget\fP"-Causes the git\-annex branch to be rewritten, throwing away historical-data about past locations of files. The resulting branch will use less-space, but \fBgit annex log\fP will not be able to show where-files used to be located.-.IP-To also prune references to repositories that have been marked as dead,-specify \fB\-\-drop\-dead\fP.-.IP-When this rewritten branch is merged into other clones of-the repository, \fBgit\-annex\fP will automatically perform the same rewriting-to their local \fBgit\-annex\fP branches. So the forgetfulness will automatically-propagate out from its starting point until all repositories running-git\-annex have forgotten their old history. (You may need to force-git to push the branch to any git repositories not running git\-annex.)-.IP-.IP "\fBrepair\fP"-This can repair many of the problems with git repositories that \fBgit fsck\fP-detects, but does not itself fix. It's useful if a repository has become-badly damaged. One way this can happen is if a repository used by git\-annex-is on a removable drive that gets unplugged at the wrong time.-.IP-This command can actually be used inside git repositories that do not-use git\-annex at all; when used in a repository using git\-annex, it-does additional repairs of the git\-annex branch.-.IP-It works by deleting any corrupt objects from the git repository, and-retrieving all missing objects it can from the remotes of the repository.-.IP-If that is not sufficient to fully recover the repository, it can also-reset branches back to commits before the corruption happened, delete-branches that are no longer available due to the lost data, and remove any-missing files from the index. It will only do this if run with the-\fB\-\-force\fP option, since that rewrites history and throws out missing data.-Note that the \fB\-\-force\fP option never touches tags, even if they are no-longer usable due to missing data.-.IP-After running this command, you will probably want to run \fBgit fsck\fP to-verify it fixed the repository. Note that fsck may still complain about-objects referenced by the reflog, or the stash, if they were unable to be-recovered. This command does not try to clean up either the reflog or the-stash.-.IP-It is also a good idea to run \fBgit annex fsck \-\-fast\fP after this command,-to make sure that the git\-annex branch reflects reality.-.IP-.SH QUERY COMMANDS-.IP "\fBfind [path ...]\fP"-.IP-Outputs a list of annexed files in the specified path. With no path,-finds files in the current directory and its subdirectories.-.IP-By default, only lists annexed files whose content is currently present.-This can be changed by specifying matching options. To list all-annexed files, present or not, specify \fB\-\-include "*"\fP. To list all-annexed files whose content is not present, specify \fB\-\-not \-\-in=here\fP-.IP-To output filenames terminated with nulls, for use with xargs \-0,-specify \fB\-\-print0\fP. Or, a custom output formatting can be specified using-\fB\-\-format\fP. The default output format is the same as \fB\-\-format='${file}\\n'\fP-.IP-These variables are available for use in formats: file, key, backend,-bytesize, humansize, keyname, hashdirlower, hashdirmixed, mtime (for-the mtime field of a WORM key).-.IP-.IP "\fBwhereis [path ...]\fP"-Displays information about where the contents of files are located.-.IP-.IP "\fBlist [path ...]\fP"-Displays a table of remotes that contain the contents of the specified-files. This is similar to whereis but a more compact display. Only-configured remotes are shown by default; specify \-\-allrepos to list-all repositories.-.IP-.IP "\fBlog [path ...]\fP"-Displays the location log for the specified file or files,-showing each repository they were added to ("+") and removed from ("\-").-.IP-To limit how far back to search for location log changes, the options-\fB\-\-since\fP, \fB\-\-after\fP, \fB\-\-until\fP, \fB\-\-before\fP, and \fB\-\-max\-count\fP can be specified.-They are passed through to git log. For example, \fB\-\-since "1 month ago"\fP-.IP-To generate output suitable for the gource visualization program,-specify \fB\-\-gource\fP.-.IP-.IP "\fBinfo [directory|file|remote|uuid ...]\fP"-Displays statistics and other information for the specified item,-which can be a directory, or a file, or a remote, or the uuid of a-repository. -.IP-When no item is specified, displays statistics and information-for the repository as a whole.-.IP-When a directory is specified, the MATCHING OPTIONS can be used-to select the files in the directory that are included in the statistics.-.IP-To only show the data that can be gathered quickly, use \fB\-\-fast\fP.-.IP-For example, suppose you want to run "git annex get .", but-would first like to see how much disk space that will use.-Then run:-.IP- git annex info \-\-fast . \-\-not \-\-in here-.IP-.IP "\fBversion\fP"-Shows the version of git\-annex, as well as repository version information.-.IP-.IP "\fBmap\fP"-Helps you keep track of your repositories, and the connections between them,-by going out and looking at all the ones it can get to, and generating a-Graphviz file displaying it all. If the \fBdot\fP command is available, it is-used to display the file to your screen (using x11 backend). (To disable-this display, specify \fB\-\-fast\fP)-.IP-This command only connects to hosts that the host it's run on can-directly connect to. It does not try to tunnel through intermediate hosts.-So it might not show all connections between the repositories in the network.-.IP-Also, if connecting to a host requires a password, you might have to enter-it several times as the map is being built.-.IP-Note that this subcommand can be used to graph any git repository; it-is not limited to git\-annex repositories.-.IP-.SH METADATA COMMANDS-.IP "\fBmetadata [path ...] [\-s field=value \-s field+=value \-s field\-=value ...] [\-g field]\fP"-.IP-The content of a file can have any number of metadata fields-attached to it to describe it. Each metadata field can in turn-have any number of values.-.IP-This command can be used to set metadata, or show the currently set-metadata.-.IP-To show current metadata, run without any \-s parameters. The \-\-json-option will enable json output.-.IP-To only get the value(s) of a single field, use \-g field.-The values will be output one per line, with no other output, so-this is suitable for use in a script.-.IP-To set a field's value, removing any old value(s), use \-s field=value.-.IP-To add an additional value, use \-s field+=value.-.IP-To remove a value, use \-s field\-=value.-.IP-To set a value, only if the field does not already have a value,-use \-s field?=value-.IP-To set a tag, use \-t tag, and use \-u tag to remove a tag.-.IP-For example, to set some tags on a file and also its author:-.IP- git annex metadata annexscreencast.ogv \-t video \-t screencast \-s author+=Alice-.IP-.IP "\fBview [tag ...] [field=value ...] [field=glob ...] [!tag ...] [field!=value ...]\fP"-Uses metadata to build a view branch of the files in the current branch,-and checks out the view branch. Only files in the current branch whose-metadata matches all the specified field values and tags will be-shown in the view.-.IP-Multiple values for a metadata field can be specified, either by using-a glob (\fBfield="*"\fP) or by listing each wanted value. The resulting view-will put files in subdirectories according to the value of their fields.-.IP-Once within such a view, you can make additional directories, and-copy or move files into them. When you commit, the metadata will-be updated to correspond to your changes.-.IP-There are fields corresponding to the path to the file. So a file-"foo/bar/baz/file" has fields "/=foo", "foo/=bar", and "foo/bar/=baz".-These location fields can be used the same as other metadata to construct-the view.-.IP-For example, \fB/=podcasts\fP will only include files from the podcasts-directory in the view, while \fBpodcasts/=*\fP will preserve the-subdirectories of the podcasts directory in the view.-.IP-.IP "\fBvpop [N]\fP"-Switches from the currently active view back to the previous view.-Or, from the first view back to original branch.-.IP-The optional number tells how many views to pop.-.IP-.IP "\fBvfilter [tag ...] [field=value ...] [!tag ...] [field!=value ...]\fP"-Filters the current view to only the files that have the-specified field values and tags.-.IP-.IP "\fBvadd [field=glob ...] [field=value ...] [tag ...]\fP"-Changes the current view, adding an additional level of directories-to categorize the files.-.IP-For example, when the view is by author/tag, \fBvadd year=*\fP will-change it to year/author/tag.-.IP-So will \fBvadd year=2014 year=2013\fP, but limiting the years in view-to only those two.-.IP-.IP "\fBvcycle\fP"-When a view involves nested subdirectories, this cycles the order.-.IP-For example, when the view is by year/author/tag, \fBvcycle\fP will switch-it to author/tag/year.-.IP-.SH UTILITY COMMANDS-.IP "\fBmigrate [path ...]\fP"-.IP-Changes the specified annexed files to use the default key\-value backend-(or the one specified with \fB\-\-backend\fP). Only files whose content-is currently available are migrated.-.IP-Note that the content is also still available using the old key after-migration. Use \fBgit annex unused\fP to find and remove the old key.-.IP-Normally, nothing will be done to files already using the new backend.-However, if a backend changes the information it uses to construct a key,-this can also be used to migrate files to use the new key format.-.IP-.IP "\fBreinject src dest\fP"-Moves the src file into the annex as the content of the dest file.-This can be useful if you have obtained the content of a file from-elsewhere and want to put it in the local annex.-.IP-Automatically runs fsck on dest to check that the expected content was-provided.-.IP-Example:-.IP- git annex reinject /tmp/foo.iso foo.iso-.IP-.IP "\fBunannex [path ...]\fP"-Use this to undo an accidental \fBgit annex add\fP command. It puts the-file back how it was before the add.-.IP-Note that for safety, the content of the file remains in the annex,-until you use \fBgit annex unused\fP and \fBgit annex dropunused\fP.-.IP-This is not the command you should use if you intentionally annexed a-file and don't want its contents any more. In that case you should use-\fBgit annex drop\fP instead, and you can also \fBgit rm\fP the file.-.IP-Normally this does a slow copy of the file. In \fB\-\-fast\fP mode, it-instead makes a hard link from the file to the content in the annex.-But use \-\-fast mode with caution, because editing the file will-change the content in the annex.-.IP-.IP "\fBuninit\fP"-Use this to stop using git annex. It will unannex every file in the-repository, and remove all of git\-annex's other data, leaving you with a-git repository plus the previously annexed files.-.IP-.IP "\fBreinit uuid|description\fP"-Normally, initializing a repository generates a new, unique identifier-(UUID) for that repository. Occasionally it may be useful to reuse a-UUID \-\- for example, if a repository got deleted, and you're-setting it back up.-.IP-Use this with caution; it can be confusing to have two existing-repositories with the same UUID. Also, you will probably want to run-a fsck.-.IP-.SH PLUMBING COMMANDS-.IP "\fBpre\-commit [path ...]\fP"-.IP-This is meant to be called from git's pre\-commit hook. \fBgit annex init\fP-automatically creates a pre\-commit hook using this.-.IP-Fixes up symlinks that are staged as part of a commit, to ensure they-point to annexed content. Also handles injecting changes to unlocked-files into the annex. When in a view, updates metadata to reflect changes-made to files in the view.-.IP-.IP "\fBlookupkey [file ...]\fP"-This plumbing\-level command looks up the key used for a file in the-index. The key is output to stdout. If there is no key (because-the file is not present in the index, or is not a git\-annex managed file),-nothing is output, and it exits nonzero.-.IP-.IP "\fBexaminekey [key ...]\fP"-This plumbing\-level command is given a key, and prints information-that can be determined purely by looking at the key.-.IP-To specify what information to print, use \fB\-\-format\fP. Or use \fB\-\-json\fP-to get all available information in JSON format.-.IP-The same variables can be used in the format string as can be used in-the format string of git annex find (except there is no file option-here).-.IP-For example, the location a key's value is stored (in indirect mode)-can be looked up by running:-.IP- git annex examinekey \-\-format='.git/annex/objects/${hashdirmixed}${key}/${key}'-.IP-.IP "\fBfromkey [key file]\fP"-This plumbing\-level command can be used to manually set up a file-in the git repository to link to a specified key.-.IP-Normally, the annex needs to already contain the content object for the-key. To override this, use \-\-force.-.IP-If the key and file are not specified on the command line, they are-instead read from stdin. Any number of lines can be provided in this-mode, each containing a key and filename, sepearated by whitespace.-.IP-.IP "\fBregisterurl [key url]\fP"-This plumbing\-level command can be used to register urls where a-key can be downloaded from.-.IP-No verification is performed of the url's contents.-.IP-If the key and url are not specified on the command line, they are-instead read from stdin. Any number of lines can be provided in this-mode, each containing a key and url, sepearated by whitespace.-.IP-.IP "\fBdropkey [key ...]\fP"-This plumbing\-level command drops the annexed data for the specified-keys from this repository.-.IP-This can be used to drop content for arbitrary keys, which do not need-to have a file in the git repository pointing at them.-.IP-.IP "\fBtransferkey\fP"-This plumbing\-level command is used to request a single key be-transferred. Either the \-\-from or the \-\-to option can be used to specify-the remote to use. A \-\-file option can be used to hint at the file-associated with the key.-.IP-.IP "\fBtransferkeys\fP"-This plumbing\-level command is used by the assistant to transfer data.-It is fed instructions about the keys to transfer using an internal-stdio protocol, which is intentionally not documented (as it may change-at any time).-.IP-.IP "\fBsetpresentkey key uuid [1|0]\fP"-This plumbing\-level command changes git\-annex's records about whether-the specified key is present in a remote with the specified uuid.-.IP-.IP "\fBrekey [file key ...]\fP"-This plumbing\-level command is similar to migrate, but you specify-both the file, and the new key to use for it.-.IP-With \fB\-\-force\fP, even files whose content is not currently available will-be rekeyed. Use with caution.-.IP-.IP "\fBfindref [ref]\fP"-This is similar to the find command, but instead of finding files in the-current work tree, it finds files in the specified git ref.-.IP-.IP "\fBproxy \-\- git cmd [options]\fP"-Only useful in a direct mode repository, this runs the specified git-command with a temporary work tree, and updates the working tree to-reflect any changes staged or committed by the git command.-.IP-For example, to revert the most recent change that was committed-to the repository:-.IP-git annex proxy \-\- git revert HEAD-.IP-To check out a past version of the repository:-.IP-git annex proxy \-\- git checkout HEAD^^-.IP-To rename a directory:-.IP-git annex proxy \-\- git mv mydir newname-.IP-.IP "\fBresolvemerge\fP"-Resolves a conflicted merge, by adding both conflicting versions of the-file to the tree, using variants of their filename. This is done-automatically when using \fBgit annex sync\fP or \fBgit annex merge\fP.-.IP-Note that only merge conflicts that involve an annexed file are resolved.-Merge conflicts between two files that are not annexed will not be-automatically resolved.-.IP-.IP "\fBdiffdriver\fP"-This is an external git diff driver shim. Normally, when using \fBgit diff\fP-with an external git driver, the symlinks to annexed files are not set up-right, so the external git driver cannot read them in order to perform-smart diffing of their contents. This command works around the problem,-by passing the fixed up files to the real external diff driver.-.IP-To use, just configure git to use "git\-annex diffdriver \-\- cmd params \-\-"-as the external diff command, where cmd is the real external diff-command you want to use, and params are any extra parameters to pass-to it. Note the trailing "\-\-", which is required.-.IP-For example, set \fBGIT_EXTERNAL_DIFF=git\-annex diffdriver \-\- j\-c\-diff \-\-\fP-.IP-.IP "\fBremotedaemon\fP"-Detects when network remotes have received git pushes and fetches from them.-.IP-.IP "\fBxmppgit\fP"-This command is used internally to perform git pulls over XMPP.-.IP-.SH TESTING COMMANDS-.IP "\fBtest\fP"-.IP-This runs git\-annex's built\-in test suite.-.IP-There are several parameters, provided by Haskell's tasty test framework.-Pass \-\-help for details.-.IP-.IP "\fBtestremote remote\fP"-This tests a remote by generating some random objects and sending them to-the remote, then redownloading them, removing them from the remote, etc.-.IP-It's safe to run in an existing repository (the repository contents are-not altered), although it may perform expensive data transfers.-.IP-To perform a smaller set of tests, use \-\-fast.-.IP-The \-\-size option can be used to tune the size of the generated objects.-.IP-Testing a single remote will use the remote's configuration,-automatically varying the chunk sizes, and with simple shared encryption-enabled and disabled.-.IP-.IP "\fBfuzztest\fP"-Generates random changes to files in the current repository,-for use in testing the assistant. This is dangerous, so it will not-do anything unless \-\-forced.-.IP-.SH OPTIONS-.IP "\fB\-\-force\fP"-.IP-Force unsafe actions, such as dropping a file's content when no other-source of it can be verified to still exist, or adding ignored files.-Use with care.-.IP-.IP "\fB\-\-fast\fP"-Enable less expensive, but also less thorough versions of some commands.-What is avoided depends on the command.-.IP-.IP "\fB\-\-auto\fP"-Enable automatic mode. Commands that get, drop, or move file contents-will only do so when needed to help satisfy the setting of numcopies,-and preferred content configuration.-.IP-.IP "\fB\-\-all\fP"-Operate on all data that has been stored in the git annex,-including old versions of files. This is the default behavior when-running git\-annex in a bare repository; in a non\-bare repository the-normal behavior is to only operate on specified files in the working-tree.-.IP-.IP "\fB\-\-unused\fP"-Operate on all data that has been determined to be unused by-a previous run of \fBgit\-annex unused\fP.-.IP-.IP "\fB\-\-key=key\fP"-Operate on only the specified key.-.IP-.IP "\fB\-\-quiet\fP"-Avoid the default verbose display of what is done; only show errors-and progress displays.-.IP-.IP "\fB\-\-verbose\fP"-Enable verbose display.-.IP-.IP "\fB\-\-json\fP"-Rather than the normal output, generate JSON. This is intended to be-parsed by programs that use git\-annex. Each line of output is a JSON-object. Note that JSON output is only usable with some git\-annex commands,-like info, find, whereis, and metadata.-.IP-.IP "\fB\-\-debug\fP"-Show debug messages.-.IP-.IP "\fB\-\-no\-debug\fP"-Disable debug messages.-.IP-.IP "\fB\-\-from=repository\fP"-Specifies a repository that content will be retrieved from, or that-should otherwise be acted on.-.IP-It should be specified using the name of a configured remote.-.IP-.IP "\fB\-\-to=repository\fP"-Specifies a repository that content will be sent to.-.IP-It should be specified using the name of a configured remote.-.IP-.IP "\fB\-\-numcopies=n\fP"-Overrides the numcopies setting, forcing git\-annex to ensure the-specified number of copies exist.-.IP-Note that setting numcopies to 0 is very unsafe.-.IP-.IP "\fB\-\-time\-limit=time\fP"-Limits how long a git\-annex command runs. The time can be something-like "5h", or "30m" or even "45s" or "10d".-.IP-Note that git\-annex may continue running a little past the specified-time limit, in order to finish processing a file.-.IP-Also, note that if the time limit prevents git\-annex from doing all it-was asked to, it will exit with a special code, 101.-.IP-.IP "\fB\-\-trust=repository\fP"-.IP "\fB\-\-semitrust=repository\fP"-.IP "\fB\-\-untrust=repository\fP"-Overrides trust settings for a repository. May be specified more than once.-.IP-The repository should be specified using the name of a configured remote,-or the UUID or description of a repository.-.IP-.IP "\fB\-\-trust\-glacier\-inventory\fP"-Amazon Glacier inventories take hours to retrieve, and may not represent-the current state of a repository. So git\-annex does not trust that-files that the inventory claims are in Glacier are really there.-This switch can be used to allow it to trust the inventory.-.IP-Be careful using this, especially if you or someone else might have recently-removed a file from Glacier. If you try to drop the only other copy of the-file, and this switch is enabled, you could lose data!-.IP-.IP "\fB\-\-backend=name\fP"-Specifies which key\-value backend to use. This can be used when-adding a file to the annex, or migrating a file. Once files-are in the annex, their backend is known and this option is not-necessary.-.IP-.IP "\fB\-\-format=value\fP"-Specifies a custom output format. The value is a format string, -in which '${var}' is expanded to the value of a variable. To right\-justify-a variable with whitespace, use '${var;width}' ; to left\-justify-a variable, use '${var;\-width}'; to escape unusual characters in a variable,-use '${escaped_var}'-.IP-Also, '\\n' is a newline, '\\000' is a NULL, etc.-.IP-.IP "\fB\-\-user\-agent=value\fP"-Overrides the User\-Agent to use when downloading files from the web.-.IP-.IP "\fB\-\-notify\-finish\fP"-Caused a desktop notification to be displayed after each successful-file download and upload.-.IP-(Only supported on some platforms, e.g. Linux with dbus. A no\-op when-not supported.)-.IP-.IP "\fB\-\-notify\-start\fP"-Caused a desktop notification to be displayed when a file upload-or download has started, or when a file is dropped.-.IP-.IP "\fB\-c name=value\fP"-Overrides git configuration settings. May be specified multiple times.-.IP-.SH MATCHING OPTIONS-These options can all be specified multiple times, and can be combined to-limit which files git\-annex acts on.-.PP-Arbitrarily complicated expressions can be built using these options.-For example:-.PP- \-\-exclude '*.mp3' \-\-and \-\-not \-( \-\-in=usbdrive \-\-or \-\-in=archive \-)-.PP-The above example prevents git\-annex from working on mp3 files whose-file contents are present at either of two repositories.-.PP-.IP "\fB\-\-exclude=glob\fP"-Skips files matching the glob pattern. The glob is matched relative to-the current directory. For example:-.IP- \-\-exclude='*.mp3' \-\-exclude='subdir/*'-.IP-Note that this will not match anything when using \-\-all or \-\-unused.-.IP-.IP "\fB\-\-include=glob\fP"-Skips files not matching the glob pattern. (Same as \fB\-\-not \-\-exclude\fP.)-For example, to include only mp3 and ogg files:-.IP- \-\-include='*.mp3' \-\-or \-\-include='*.ogg'-.IP-Note that this will not skip anything when using \-\-all or \-\-unused.-.IP-.IP "\fB\-\-in=repository\fP"-Matches only files that git\-annex believes have their contents present-in a repository. Note that it does not check the repository to verify-that it still has the content.-.IP-The repository should be specified using the name of a configured remote,-or the UUID or description of a repository. For the current repository,-use \fB\-\-in=here\fP-.IP-.IP "\fB\-\-in=repository@{date}\fP"-Matches files currently in the work tree whose content was present in-the repository on the given date.-.IP-The date is specified in the same syntax documented in-gitrevisions(7). Note that this uses the reflog, so dates far in the-past cannot be queried.-.IP-For example, you might need to run \fBgit annex drop .\fP to temporarily-free up disk space. The next day, you can get back the files you dropped-using \fBgit annex get . \-\-in=here@{yesterday}\fP-.IP-.IP "\fB\-\-copies=number\fP"-Matches only files that git\-annex believes to have the specified number-of copies, or more. Note that it does not check remotes to verify that-the copies still exist.-.IP-.IP "\fB\-\-copies=trustlevel:number\fP"-Matches only files that git\-annex believes have the specified number of-copies, on remotes with the specified trust level. For example,-\fB\-\-copies=trusted:2\fP-.IP-To match any trust level at or higher than a given level,-use 'trustlevel+'. For example, \fB\-\-copies=semitrusted+:2\fP-.IP-.IP "\fB\-\-copies=groupname:number\fP"-Matches only files that git\-annex believes have the specified number of-copies, on remotes in the specified group. For example,-\fB\-\-copies=archive:2\fP-.IP-.IP "\fB\-\-lackingcopies=number\fP"-Matches only files that git\-annex believes need the specified number or -more additional copies to be made in order to satisfy their numcopies-settings.-.IP-.IP "\fB\-\-approxlackingcopies=number\fP"-Like lackingcopies, but does not look at .gitattributes annex.numcopies-settings. This makes it significantly faster.-.IP-.IP "\fB\-\-inbackend=name\fP"-Matches only files whose content is stored using the specified key\-value-backend.-.IP-.IP "\fB\-\-inallgroup=groupname\fP"-Matches only files that git\-annex believes are present in all repositories-in the specified group.-.IP-.IP "\fB\-\-smallerthan=size\fP"-.IP "\fB\-\-largerthan=size\fP"-Matches only files whose content is smaller than, or larger than the-specified size.-.IP-The size can be specified with any commonly used units, for example,-"0.5 gb" or "100 KiloBytes"-.IP-.IP "\fB\-\-metadata field=glob\fP"-Matches only files that have a metadata field attached with a value that-matches the glob. The values of metadata fields are matched case-insensitively.-.IP-.IP "\fB\-\-want\-get\fP"-Matches files that the preferred content settings for the repository-make it want to get. Note that this will match even files that are-already present, unless limited with e.g., \fB\-\-not \-\-in .\fP-.IP-Note that this will not match anything when using \-\-all or \-\-unused.-.IP-.IP "\fB\-\-want\-drop\fP"-Matches files that the preferred content settings for the repository-make it want to drop. Note that this will match even files that have-already been dropped, unless limited with e.g., \fB\-\-in .\fP-.IP-Note that this will not match anything when using \-\-all or \-\-unused.-.IP-.IP "\fB\-\-not\fP"-Inverts the next matching option. For example, to only act on-files with less than 3 copies, use \fB\-\-not \-\-copies=3\fP-.IP-.IP "\fB\-\-and\fP"-Requires that both the previous and the next matching option matches.-The default.-.IP-.IP "\fB\-\-or\fP"-Requires that either the previous, or the next matching option matches.-.IP-.IP "\fB\-(\fP"-Opens a group of matching options.-.IP-.IP "\fB\-)\fP"-Closes a group of matching options.-.IP-.SH PREFERRED CONTENT-Each repository has a preferred content setting, which specifies content-that the repository wants to have present. These settings can be configured-using \fBgit annex vicfg\fP or \fBgit annex wanted\fP.-They are used by the \fB\-\-auto\fP option, and by the git\-annex assistant.-.PP-The preferred content settings are similar, but not identical to-the matching options specified above, just without the dashes.-For example:-.PP- exclude=archive/* and (include=*.mp3 or smallerthan=1mb)-.PP-The main differences are that \fBexclude=\fP and \fBinclude=\fP always-match relative to the top of the git repository, and that there is-no equivilant to \fB\-\-in\fP.-.PP-When a repository is in one of the standard predefined groups, like "backup"-and "client", setting its preferred content to "standard" will use a-built\-in preferred content expression developed for that group. -See <https://git\-annex.branchable.com/preferred_content/standard_groups/>-.PP-If you have set a groupwanted expression for a group, it will be used-when a repository in the group has its preferred content set to-"groupwanted".-.PP-.SH SCHEDULED JOBS-The git\-annex assistant daemon can be configured to run scheduled jobs.-This is similar to cron and anacron (and you can use them if you prefer),-but has the advantage of being integrated into git\-annex, and so being able-to e.g., fsck a repository on a removable drive when the drive gets-connected.-.PP-The scheduled jobs can be configured using \fBgit annex vicfg\fP or-\fBgit annex schedule\fP.-.PP-These actions are available: "fsck self", "fsck UUID" (where UUID-is the UUID of a remote to fsck). After the action comes the duration-to allow the action to run, and finally the schedule of when to run it.-.PP-To schedule multiple jobs, separate them with "; ".-.PP-Some examples:-.PP- fsck self 30m every day at any time- fsck self 1h every month at 3 AM- fsck self 1h on day 1 of every month at any time- fsck self 1h every week divisible by 2 at any time-.PP-.SH CONFIGURATION VIA .git/config-Like other git commands, git\-annex is configured via \fB.git/config\fP.-Here are all the supported configuration settings.-.PP-.IP "\fBannex.uuid\fP"-A unique UUID for this repository (automatically set).-.IP-.IP "\fBannex.backends\fP"-Space\-separated list of names of the key\-value backends to use.-The first listed is used to store new files by default.-.IP-.IP "\fBannex.diskreserve\fP"-Amount of disk space to reserve. Disk space is checked when transferring-content to avoid running out, and additional free space can be reserved-via this option, to make space for more important content (such as git-commit logs). Can be specified with any commonly used units, for example,-"0.5 gb", "500M", or "100 KiloBytes"-.IP-The default reserve is 1 megabyte.-.IP-.IP "\fBannex.largefiles\fP"-Allows configuring which files \fBgit annex add\fP and the assistant consider-to be large enough to need to be added to the annex. By default,-all files are added to the annex.-.IP-The value is a preferred content expression. See PREFERRED CONTENT-for details.-.IP-Example:-.IP- annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h)-.IP-.IP "\fBannex.numcopies\fP"-This is a deprecated setting. You should instead use the-\fBgit annex numcopies\fP command to configure how many copies of files-are kept across all repositories.-.IP-This config setting is only looked at when \fBgit annex numcopies\fP has-never been configured.-.IP-Note that setting numcopies to 0 is very unsafe.-.IP-.IP "\fBannex.genmetadata\fP"-Set this to \fBtrue\fP to make git\-annex automatically generate some metadata-when adding files to the repository.-.IP-In particular, it stores year and month metadata, from the file's-modification date.-.IP-When importfeed is used, it stores additional metadata from the feed.-.IP-.IP "\fBannex.queuesize\fP"-git\-annex builds a queue of git commands, in order to combine similar-commands for speed. By default the size of the queue is limited to-10240 commands; this can be used to change the size. If you have plenty-of memory and are working with very large numbers of files, increasing-the queue size can speed it up.-.IP-.IP "\fBannex.bloomcapacity\fP"-The \fBgit annex unused\fP command uses a bloom filter to determine-what data is no longer used. The default bloom filter is sized to handle-up to 500000 keys. If your repository is larger than that,-you can adjust this to avoid \fBgit annex unused\fP not noticing some unused-data files. Increasing this will make \fBgit\-annex unused\fP consume more memory;-run \fBgit annex info\fP for memory usage numbers.-.IP-.IP "\fBannex.bloomaccuracy\fP"-Adjusts the accuracy of the bloom filter used by-\fBgit annex unused\fP. The default accuracy is 1000 \-\--1 unused file out of 1000 will be missed by \fBgit annex unused\fP. Increasing-the accuracy will make \fBgit annex unused\fP consume more memory;-run \fBgit annex info\fP for memory usage numbers.-.IP-.IP "\fBannex.sshcaching\fP"-By default, git\-annex caches ssh connections using ssh's-ControlMaster and ControlPersist settings-(if built using a new enough ssh). To disable this, set to \fBfalse\fP.-.IP-.IP "\fBannex.alwayscommit\fP"-By default, git\-annex automatically commits data to the git\-annex branch-after each command is run. If you have a series-of commands that you want to make a single commit, you can-run the commands with \fB\-c annex.alwayscommit=false\fP. You can later-commit the data by running \fBgit annex merge\fP (or by automatic merges)-or \fBgit annex sync\fP.-.IP-.IP "\fBannex.hardlink\fP"-Set this to \fBtrue\fP to make file contents be hard linked into the-repository when possible, instead of a more expensive copy.-.IP-Use with caution \-\- This can invalidate numcopies counting, since-with hard links, fewer copies of a file can exist. So, it is a good-idea to mark a repository using this setting as untrusted.-.IP-When a repository is set up using \fBgit clone \-\-shared\fP, git\-annex init-will automatically set annex.hardlink and mark the repository as-untrusted.-.IP-.IP "\fBannex.delayadd\fP"-Makes the watch and assistant commands delay for the specified number of-seconds before adding a newly created file to the annex. Normally this-is not needed, because they already wait for all writers of the file-to close it. On Mac OSX, when not using direct mode this defaults to-1 second, to work around a bad interaction with software there.-.IP-.IP "\fBannex.expireunused\fP"-Controls what the assistant does about unused file contents-that are stored in the repository.-.IP-The default is \fBfalse\fP, which causes-all old and unused file contents to be retained, unless the assistant-is able to move them to some other repository (such as a backup repository).-.IP-Can be set to a time specification, like "7d" or "1m", and then-file contents that have been known to be unused for a week or a-month will be deleted.-.IP-.IP "\fBannex.fscknudge\fP"-When set to false, prevents the webapp from reminding you when using-repositories that lack consistency checks.-.IP-.IP "\fBannex.autoupgrade\fP"-When set to ask (the default), the webapp will check for new versions-and prompt if they should be upgraded to. When set to true, automatically-upgrades without prompting (on some supported platforms). When set to-false, disables any upgrade checking.-.IP-Note that upgrade checking is only done when git\-annex is installed-from one of the prebuilt images from its website. This does not-bypass e.g., a Linux distribution's own upgrade handling code.-.IP-This setting also controls whether to restart the git\-annex assistant-when the git\-annex binary is detected to have changed. That is useful-no matter how you installed git\-annex.-.IP-.IP "\fBannex.autocommit\fP"-Set to false to prevent the git\-annex assistant from automatically-committing changes to files in the repository.-.IP-.IP "\fBannex.startupscan\fP"-Set to false to prevent the git\-annex assistant from scanning the-repository for new and changed files on startup. This will prevent it-from noticing changes that were made while it was not running, but can be-a useful performance tweak for a large repository.-.IP-.IP "\fBannex.listen\fP"-Configures which address the webapp listens on. The default is localhost.-Can be either an IP address, or a hostname that resolves to the desired-address.-.IP-.IP "\fBannex.debug\fP"-Set to true to enable debug logging by default.-.IP-.IP "\fBannex.version\fP"-Automatically maintained, and used to automate upgrades between versions.-.IP-.IP "\fBannex.direct\fP"-Set to true when the repository is in direct mode. Should not be set-manually; use the "git annex direct" and "git annex indirect" commands-instead.-.IP-.IP "\fBannex.crippledfilesystem\fP"-Set to true if the repository is on a crippled filesystem, such as FAT,-which does not support symbolic links, or hard links, or unix permissions.-This is automatically probed by "git annex init".-.IP-.IP "\fBremote.<name>.annex\-cost\fP"-When determining which repository to-transfer annexed files from or to, ones with lower costs are preferred.-The default cost is 100 for local repositories, and 200 for remote-repositories.-.IP-.IP "\fBremote.<name>.annex\-cost\-command\fP"-If set, the command is run, and the number it outputs is used as the cost.-This allows varying the cost based on e.g., the current network. The-cost\-command can be any shell command line.-.IP-.IP "\fBremote.<name>.annex\-start\-command\fP"-A command to run when git\-annex begins to use the remote. This can-be used to, for example, mount the directory containing the remote.-.IP-The command may be run repeatedly when multiple git\-annex processes-are running concurrently.-.IP-.IP "\fBremote.<name>.annex\-stop\-command\fP"-A command to run when git\-annex is done using the remote.-.IP-The command will only be run once *all* running git\-annex processes-are finished using the remote.-.IP-.IP "\fBremote.<name>.annex\-shell\fP"-Specify an alternative git\-annex\-shell executable on the remote-instead of looking for "git\-annex\-shell" on the PATH.-.IP-This is useful if the git\-annex\-shell program is outside the PATH-or has a non\-standard name.-.IP-.IP "\fBremote.<name>.annex\-ignore\fP"-If set to \fBtrue\fP, prevents git\-annex-from storing file contents on this remote by default.-(You can still request it be used by the \fB\-\-from\fP and \fB\-\-to\fP options.)-.IP-This is, for example, useful if the remote is located somewhere-without git\-annex\-shell. (For example, if it's on GitHub).-Or, it could be used if the network connection between two-repositories is too slow to be used normally.-.IP-This does not prevent git\-annex sync (or the git\-annex assistant) from-syncing the git repository to the remote.-.IP-.IP "\fBremote.<name>.annex\-sync\fP"-If set to \fBfalse\fP, prevents git\-annex sync (and the git\-annex assistant)-from syncing with this remote.-.IP-.IP "\fBremote.<name>.annex\-readonly\fP"-If set to \fBtrue\fP, prevents git\-annex from making changes to a remote.-This both prevents git\-annex sync from pushing changes, and prevents-storing or removing files from read\-only remote.-.IP-.IP "\fBremote.<name>.annexUrl\fP"-Can be used to specify a different url than the regular \fBremote.<name>.url\fP-for git\-annex to use when talking with the remote. Similar to the \fBpushUrl\fP-used by git\-push.-.IP-.IP "\fBremote.<name>.annex\-uuid\fP"-git\-annex caches UUIDs of remote repositories here.-.IP-.IP "\fBremote.<name>.annex\-trustlevel\fP"-Configures a local trust level for the remote. This overrides the value-configured by the trust and untrust commands. The value can be any of-"trusted", "semitrusted" or "untrusted".-.IP-.IP "\fBremote.<name>.annex\-availability\fP"-Can be used to tell git\-annex whether a remote is LocallyAvailable-or GloballyAvailable. Normally, git\-annex determines this automatically.-.IP-.IP "\fBremote.<name>.annex\-bare\fP"-Can be used to tell git\-annex if a remote is a bare repository-or not. Normally, git\-annex determines this automatically.-.IP-.IP "\fBremote.<name>.annex\-ssh\-options\fP"-Options to use when using ssh to talk to this remote.-.IP-.IP "\fBremote.<name>.annex\-rsync\-options\fP"-Options to use when using rsync-to or from this remote. For example, to force ipv6, and limit-the bandwidth to 100Kbyte/s, set it to \fB\-6 \-\-bwlimit 100\fP-.IP-.IP "\fBremote.<name>.annex\-rsync\-upload\-options\fP"-Options to use when using rsync to upload a file to a remote.-.IP-These options are passed after other applicable rsync options,-so can be used to override them. For example, to limit upload bandwidth-to 10Kbyte/s, set \fB\-\-bwlimit 10\fP.-.IP-.IP "\fBremote.<name>.annex\-rsync\-download\-options\fP"-Options to use when using rsync to download a file from a remote.-.IP-These options are passed after other applicable rsync options,-so can be used to override them.-.IP-.IP "\fBremote.<name>.annex\-rsync\-transport\fP"-The remote shell to use to connect to the rsync remote. Possible-values are \fBssh\fP (the default) and \fBrsh\fP, together with their-arguments, for instance \fBssh \-p 2222 \-c blowfish\fP; Note that the-remote hostname should not appear there, see rsync(1) for details.-When the transport used is \fBssh\fP, connections are automatically cached-unless \fBannex.sshcaching\fP is unset.-.IP-.IP "\fBremote.<name>.annex\-bup\-split\-options\fP"-Options to pass to bup split when storing content in this remote.-For example, to limit the bandwidth to 100Kbyte/s, set it to \fB\-\-bwlimit 100k\fP-(There is no corresponding option for bup join.)-.IP-.IP "\fBremote.<name>.annex\-gnupg\-options\fP"-Options to pass to GnuPG for symmetric encryption. For instance, to-use the AES cipher with a 256 bits key and disable compression, set it-to \fB\-\-cipher\-algo AES256 \-\-compress\-algo none\fP. (These options take-precedence over the default GnuPG configuration, which is otherwise-used.)-.IP-.IP "\fBannex.ssh\-options\fP, \fBannex.rsync\-options\fP,"-\fBannex.rsync\-upload\-options\fP, \fBannex.rsync\-download\-options\fP,-\fBannex.bup\-split\-options\fP, \fBannex.gnupg\-options\fP-.IP-Default options to use if a remote does not have more specific options-as described above.-.IP-.IP "\fBannex.web\-options\fP"-Options to pass when running wget or curl.-For example, to force ipv4 only, set it to "\-4"-.IP-.IP "\fBannex.quvi\-options\fP"-Options to pass to quvi when using it to find the url to download for a-video.-.IP-.IP "\fBannex.aria\-torrent\-options\fP"-Options to pass to aria2c when using it to download a torrent.-.IP-.IP "\fBannex.http\-headers\fP"-HTTP headers to send when downloading from the web. Multiple lines of-this option can be set, one per header.-.IP-.IP "\fBannex.http\-headers\-command\fP"-If set, the command is run and each line of its output is used as a HTTP-header. This overrides annex.http\-headers.-.IP-.IP "\fBannex.web\-download\-command\fP"-Use to specify a command to run to download a file from the web.-(The default is to use wget or curl.)-.IP-In the command line, %url is replaced with the url to download,-and %file is replaced with the file that it should be saved to.-.IP-.IP "\fBannex.secure\-erase\-command\fP"-This can be set to a command that should be run whenever git\-annex-removes the content of a file from the repository.-.IP-In the command line, %file is replaced with the file that should be-erased.-.IP-For example, to use the wipe command, set it to \fBwipe \-f %file\fP.-.IP-.IP "\fBremote.<name>.rsyncurl\fP"-Used by rsync special remotes, this configures-the location of the rsync repository to use. Normally this is automatically-set up by \fBgit annex initremote\fP, but you can change it if needed.-.IP-.IP "\fBremote.<name>.buprepo\fP"-Used by bup special remotes, this configures-the location of the bup repository to use. Normally this is automatically-set up by \fBgit annex initremote\fP, but you can change it if needed.-.IP-.IP "\fBremote.<name>.ddarrepo\fP"-Used by ddar special remotes, this configures-the location of the ddar repository to use. Normally this is automatically-set up by \fBgit annex initremote\fP, but you can change it if needed.-.IP-.IP "\fBremote.<name>.directory\fP"-Used by directory special remotes, this configures-the location of the directory where annexed files are stored for this-remote. Normally this is automatically set up by \fBgit annex initremote\fP,-but you can change it if needed.-.IP-.IP "\fBremote.<name>.s3\fP"-Used to identify Amazon S3 special remotes.-Normally this is automatically set up by \fBgit annex initremote\fP.-.IP-.IP "\fBremote.<name>.glacier\fP"-Used to identify Amazon Glacier special remotes.-Normally this is automatically set up by \fBgit annex initremote\fP.-.IP-.IP "\fBremote.<name>.webdav\fP"-Used to identify webdav special remotes.-Normally this is automatically set up by \fBgit annex initremote\fP.-.IP-.IP "\fBremote.<name>.tahoe\fP"-Used to identify tahoe special remotes.-Points to the configuration directory for tahoe.-.IP-.IP "\fBremote.<name>.annex\-xmppaddress\fP"-Used to identify the XMPP address of a Jabber buddy.-Normally this is set up by the git\-annex assistant when pairing over XMPP.-.IP-.IP "\fBremote.<name>.gcrypt\fP"-Used to identify gcrypt special remotes.-Normally this is automatically set up by \fBgit annex initremote\fP.-.IP-It is set to "true" if this is a gcrypt remote.-If the gcrypt remote is accessible over ssh and has git\-annex\-shell-available to manage it, it's set to "shell".-.IP-.IP "\fBremote.<name>.hooktype\fP, \fBremote.<name>.externaltype\fP"-Used by hook special remotes and external special remotes to record-the type of the remote.-.IP-.IP "\fBannex.tune.objecthash1\fP, \fBannex.tune.objecthashlower\fP, \fBannex.tune.branchhash1\fP"-These can be passed to \fBgit annex init\fP to tune the repository.-They cannot be safely changed in a running repository.-For details, see <http://git\-annex.branchable.com/tuning/>.-.IP-.SH CONFIGURATION VIA .gitattributes-The key\-value backend used when adding a new file to the annex can be-configured on a per\-file\-type basis via \fB.gitattributes\fP files. In the file,-the \fBannex.backend\fP attribute can be set to the name of the backend to-use. For example, this here's how to use the WORM backend by default,-but the SHA256E backend for ogg files:-.PP- * annex.backend=WORM- *.ogg annex.backend=SHA256E-.PP-The numcopies setting can also be configured on a per\-file\-type basis via-the \fBannex.numcopies\fP attribute in \fB.gitattributes\fP files. This overrides-other numcopies settings.-For example, this makes two copies be needed for wav files and 3 copies-for flac files:-.PP- *.wav annex.numcopies=2- *.flac annex.numcopies=3-.PP-Note that setting numcopies to 0 is very unsafe.-.PP-These settings are honored by git\-annex whenever it's operating on a-matching file. However, when using \-\-all, \-\-unused, or \-\-key to specify-keys to operate on, git\-annex is operating on keys and not files, so will-not honor the settings from .gitattributes.-.PP-Also note that when using views, only the toplevel .gitattributes file is-preserved in the view, so other settings in other files won't have any-effect.-.PP-.SH FILES-These files are used by git\-annex:-.PP-\fB.git/annex/objects/\fP in your git repository contains the annexed file-contents that are currently available. Annexed files in your git-repository symlink to that content.-.PP-\fB.git/annex/\fP in your git repository contains other run\-time information-used by git\-annex.-.PP-\fB~/.config/git\-annex/autostart\fP is a list of git repositories-to start the git\-annex assistant in.-.PP-\fB.git/hooks/pre\-commit\-annex\fP in your git repository will be run whenever-a commit is made, either by git commit, git\-annex sync, or the git\-annex-assistant.-.PP-.SH SEE ALSO-Most of git\-annex's documentation is available on its web site,-<http://git\-annex.branchable.com/>-.PP-If git\-annex is installed from a package, a copy of its documentation-should be included, in, for example, \fB/usr/share/doc/git\-annex/\fP.-.PP-.SH AUTHOR-Joey Hess <id@joeyh.name>-.PP-<http://git\-annex.branchable.com/>-.PP-.PP-
git-annex.cabal view
@@ -1,5 +1,5 @@ Name: git-annex-Version: 5.20150317+Version: 5.20150327 Cabal-Version: >= 1.8 License: GPL-3 Maintainer: Joey Hess <id@joeyh.name>
+ man/git-annex-.1 view
@@ -0,0 +1,18 @@+.TH git-annex- 1+.SH NAME+git\-annex \- +.PP+.SH SYNOPSIS+git annex \fB[path ...]\fP+.PP+.SH DESCRIPTION+.PP+.SH OPTIONS+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-add.1 view
@@ -0,0 +1,40 @@+.TH git-annex-add 1+.SH NAME+git\-annex add \- adds files to the git annex+.PP+.SH SYNOPSIS+git annex add \fB[path ...]\fP+.PP+.SH DESCRIPTION+Adds files in the path to the annex. If no path is specified, adds+files from the current directory and below.+.PP+Normally, files that are already checked into git, or that git has been+configured to ignore will be silently skipped.+.PP+.SH OPTIONS+.IP "\fB\-\-include\-dotfiles\fP"+.IP+Dotfiles are skipped unless explicitly listed, or unless this option is+used.+.IP+.IP "\fB\-\-force\fP"+Add gitignored files.+.IP+.IP "\fB\-\-backend\fP"+Specifies which key\-value backend to use.+.IP+.IP "file matching options"+Many of the git\-annex\-matching\-options(1)+can be used to specify files to add.+.IP+For example: \fB\-\-largerthan=1GB\fP+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-addunused.1 view
@@ -0,0 +1,21 @@+.TH git-annex-addunused 1+.SH NAME+git\-annex addunused \- add back unused files+.PP+.SH SYNOPSIS+git annex addunused \fB[number|range ...]\fP+.PP+.SH DESCRIPTION+Adds back files for the content corresponding to the numbers or ranges,+as listed by the last \fBgit annex unused\fP. +.PP+The files will have names starting with "unused."+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-addurl.1 view
@@ -0,0 +1,58 @@+.TH git-annex-addurl 1+.SH NAME+git\-annex addurl \- add urls to annex+.PP+.SH SYNOPSIS+git annex addurl \fB[url ...]\fP+.PP+.SH DESCRIPTION+Downloads each url to its own file, which is added to the annex.+.PP+When \fBquvi\fP is installed, urls are automatically tested to see if they+point to a video hosting site, and the video is downloaded instead.+.PP+Urls to torrent files (including magnet links) will cause the content of+the torrent to be downloaded, using \fBaria2c\fP.+.PP+Normally the filename is based on the full url, so will look like+"www.example.com_dir_subdir_bigfile". In some cases, addurl is able to+come up with a better filename based on other information. Options can also+be used to get better filenames.+.PP+.SH OPTIONS+.IP "\fB\-\-fast\fP"+.IP+Avoid immediately downloading the url.+.IP+.IP "\fB\-\-relaxed\fP"+Avoid storing the size of the url's content, and accept whatever+content is there at a future point. (Implies \fB\-\-fast\fP.)+.IP+.IP "\fB\-\-raw\fP"+Prevent special handling of urls by quvi, bittorrent, and other+special remotes. This will for example, make addurl+download the .torrent file and not the contents it points to.+.IP+.IP "\fB\-\-file=name\fP"+Use with a filename that does not yet exist to add a new file+with the specified name and the content downloaded from the url.+.IP+If the file already exists, addurl will record that it can be downloaded+from the specified url(s).+.IP+.IP "\fB\-\-pathdepth=N\fP"+This causes a shorter filename to be used. For example,+\fB\-\-pathdepth=1\fP will use "dir/subdir/bigfile",+while \fB\-\-pathdepth=3\fP will use "bigfile". +.IP+It can also be negative; \fB\-\-pathdepth=\-2\fP will use the last+two parts of the url.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-assistant.1 view
@@ -0,0 +1,40 @@+.TH git-annex-assistant 1+.SH NAME+git\-annex assistant \- automatically sync changes+.PP+.SH SYNOPSIS+git annex assistant+.PP+.SH DESCRIPTION+Watches for changes to files in the current directory and its subdirectories,+and automatically syncs them to other remotes.+.PP+For more details about the git\-annex assistant, see+<https://git\-annex.branchable.com/assistant/>+.PP+.SH OPTIONS+.IP "\fB\-\-autostart\fP"+.IP+Automatically starts the assistant running in each repository listed+in the file \fB~/.config/git\-annex/autostart\fP+.IP+This is typically started at boot, or when you log in.+.IP+.IP "\fB\-\-startdelay=N\fP"+Wait N seconds before running the startup scan. This process can+be expensive and you may not want to run it immediatly upon login.+.IP+.IP "\fB\-\-foreground\fP"+Avoid forking to the background.+.IP+.IP "\fB\-\-stop\fP"+Stop a running daemon.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-checkpresentkey.1 view
@@ -0,0 +1,23 @@+.TH git-annex-checkpresentkey 1+.SH NAME+git\-annex checkpresentkey \- check if key is present in remote+.PP+.SH SYNOPSIS+git annex \fBkey remote\fP+.PP+.SH DESCRIPTION+This plumbing\-level command verifies if the specified key's content+is present in the specified remote.+.PP+Exits 0 if the content is verified present, or 1 if it is verified to not+be present. If there is a problem checking the remote, the special+exit code 100 is used, and an error message is output to stderr.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-copy.1 view
@@ -0,0 +1,56 @@+.TH git-annex-copy 1+.SH NAME+git\-annex copy \- copy content of files to/from another repository+.PP+.SH SYNOPSIS+git annex copy \fB[path ...] [\-\-from=remote|\-\-to=remote]\fP+.PP+.SH DESCRIPTION+Copies the content of files from or to another remote.+.PP+.SH OPTIONS+.IP "\fB\-\-from=remote\fP"+.IP+Use this option to copy the content of files from the specified+remote to the local repository.+.IP+.IP "\fB\-\-to=remote\fP"+Use this option to copy the content of files from the local repository+to the specified remote.+.IP+.IP "\fB\-\-auto\fP"+Rather than copying all files, only copy files that don't yet have+the desired number of copies, or that are preferred content of the+destination repository. See git\-annex\-preferred\-content(1)+.IP+.IP "\fB\-\-fast\fP"+Avoid contacting the remote to check if it has every file when copying+\-\-to it.+.IP+.IP "\fB\-\-force\fP"+Force checking the remote for every file when copying \-\-from it.+.IP+.IP "\fB\-\-all\fP"+Rather than specifying a filename or path to copy, this option can be+used to copy all available versions of all files.+.IP+This is the default behavior when running git\-annex in a bare repository.+.IP+.IP "\fB\-\-unused\fP"+Operate on files found by last run of git\-annex unused.+.IP+.IP "\fB\-\-key=keyname\fP"+Use this option to move a specified key.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to copy.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-dead.1 view
@@ -0,0 +1,22 @@+.TH git-annex-dead 1+.SH NAME+git\-annex trust \- hide a lost repository+.PP+.SH SYNOPSIS+git annex dead \fB[repository ...]\fP+.PP+.SH DESCRIPTION+Indicates that the repository has been irretrievably lost.+(To undo, use semitrust.)+.PP+Repositories can be specified using their remote name, their+description, or their UUID.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-describe.1 view
@@ -0,0 +1,26 @@+.TH git-annex-describe 1+.SH NAME+git\-annex describe \- change description of a repository+.PP+.SH SYNOPSIS+git annex describe repository description+.PP+.SH DESCRIPTION+Changes the description of a repository.+.PP+The repository to describe can be specified by git remote name or+by uuid. To change the description of the current repository, use+"here".+.PP+Repository descriptions are displayed by git\-annex in various places.+They are most useful when git\-annex knows about a repository, but there is+no git remote corresponding to it.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-diffdriver.1 view
@@ -0,0 +1,29 @@+.TH git-annex-diffdriver 1+.SH NAME+git\-annex diffdriver \- external git diff driver shim+.PP+.SH SYNOPSIS+git annex diffdriver \fB\-\- cmd \-\-opts \-\-\fP+.PP+.SH DESCRIPTION+This is an external git diff driver shim. Normally, when using \fBgit diff\fP+with an external git driver, the symlinks to annexed files are not set up+right, so the external git driver cannot read them in order to perform+smart diffing of their contents. This command works around the problem,+by passing the fixed up files to the real external diff driver.+.PP+To use, just configure git to use "git\-annex diffdriver \-\- cmd params \-\-"+as the external diff command, where cmd is the real external diff+command you want to use, and params are any extra parameters to pass+to it. Note the trailing "\-\-", which is required.+.PP+For example, set \fBGIT_EXTERNAL_DIFF=git\-annex diffdriver \-\- j\-c\-diff \-\-\fP+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-direct.1 view
@@ -0,0 +1,25 @@+.TH git-annex-direct 1+.SH NAME+git\-annex direct \- switch repository to direct mode+.PP+.SH SYNOPSIS+git annex direct+.PP+.SH DESCRIPTION+Switches a repository to use direct mode, where rather than symlinks to+files, the files are directly present in the repository.+.PP+As part of the switch to direct mode, any changed files will be committed.+.PP+Note that git commands that operate on the work tree will refuse to+run in direct mode repositories. Use \fBgit annex proxy\fP to safely run such+commands.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-drop.1 view
@@ -0,0 +1,44 @@+.TH git-annex-drop 1+.SH NAME+git\-annex drop \- indicate content of files not currently wanted+.PP+.SH SYNOPSIS+git annex drop \fB[path ...]\fP+.PP+.SH DESCRIPTION+Drops the content of annexed files from this repository, when+possible.+.PP+git\-annex will refuse to drop content if it cannot verify it is+safe to do so.+.PP+.SH OPTIONS+.IP "\fB\-\-from=remote\fP"+.IP+Rather than dropping the content of files in the local repository,+this option can specifiy a remote from which the files'+contents should be removed.+.IP+.IP "\fB\-\-auto\fP"+Rather than trying to drop all specified files, drop only files that+are not preferred content of the repository.+See git\-annex\-preferred\-content(1)+.IP+.IP "\fB\-\-force\fP"+Use this option with care! It bypasses safety checks, and forces+git\-annex to delete the content of the specified files, even from+the last repository that is storing their content. Data loss can+result from using this option.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to drop.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-dropkey.1 view
@@ -0,0 +1,26 @@+.TH git-annex-dropkey 1+.SH NAME+git\-annex dropkey \- drops annexed content for specified keys+.PP+.SH SYNOPSIS+git annex dropkey \fB[key ...]\fP+.PP+.SH DESCRIPTION+This plumbing\-level command drops the annexed data for the specified+keys from this repository.+.PP+This can be used to drop content for arbitrary keys, which do not need+to have a file in the git repository pointing at them.+.PP+.PP++exist; using it can easily result in data loss.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-dropunused.1 view
@@ -0,0 +1,34 @@+.TH git-annex-dropunused 1+.SH NAME+git\-annex dropunused \- drop unused file content+.PP+.SH SYNOPSIS+git annex dropunused \fB[number|range ...]\fP+.PP+.SH DESCRIPTION+Drops the data corresponding to the numbers, as listed by the last+git annex unused+.PP+You can also specify ranges of numbers, such as "1\-1000".+Or, specify "all" to drop all unused data.+.PP+.SH OPTIONS+.IP "\fB\-\-from=remote\fP"+.IP+Rather than dropping the unused files from the local repository,+drop them from the remote repository.+.IP+.IP "\fB\-\-force\fP"+Use this option with care! It bypasses safety checks, and forces+git\-annex to delete the content of the specified files, even from+the last repository that is storing their content. Data loss can+result from using this option.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-edit.1 view
@@ -0,0 +1,16 @@+.TH git-annex-edit 1+.SH NAME+git\-annex unlock \- unlock files for modification+.PP+.SH SYNOPSIS+git annex edit \fB[path ...]\fP+.PP+.SH DESCRIPTION+This is an alias for the \fBunlock\fP command; see git\-annex\-unlock(1)+for details.+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-enableremote.1 view
@@ -0,0 +1,53 @@+.TH git-annex-enableremote 1+.SH NAME+git\-annex enableremote \- enables use of an existing special remote+.PP+.SH SYNOPSIS+git annex enableremote \fBname [param=value ...]\fP+.PP+.SH DESCRIPTION+Enables use of an existing special remote in the current repository,+which may be a different repository than the one in which it was+originally created with the initremote command.+.PP+The name of the remote is the same name used when originally+creating that remote with \fBgit annex initremote\fP. Run +\fBgit annex enableremote\fP without any name to get a list of+special remote names.+.PP+Some special remotes may need parameters to be specified every time they are+enabled. For example, the directory special remote requires a directory=+parameter.+.PP+This command can also be used to modify the configuration of an existing+special remote, by specifying new values for parameters that were+originally set when using initremote. (However, some settings such as+the as the encryption scheme cannot be changed once a special remote+has been created.)+.PP+The GPG keys that an encrypted special remote is encrypted with can be+changed using the keyid+= and keyid\-= parameters. These respectively+add and remove keys from the list. However, note that removing a key+does NOT necessarily prevent the key's owner from accessing data+in the encrypted special remote+(which is by design impossible, short of deleting the remote).+.PP+One use\-case of keyid\-= is to replace a revoked key with+a new key:+.PP+ git annex enableremote mys3 keyid\-=revokedkey keyid+=newkey+.PP+Also, note that for encrypted special remotes using plain public\-key+encryption (encryption=pubkey), adding or removing a key has NO effect+on files that have already been copied to the remote. Hence using+keyid+= and keyid\-= with such remotes should be used with care, and+make little sense except in cases like the revoked key example above.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-examinekey.1 view
@@ -0,0 +1,45 @@+.TH git-annex-examinekey 1+.SH NAME+git\-annex examinekey \- prints information from a key+.PP+.SH SYNOPSIS+git annex examinekey \fB[key ...]\fP+.PP+.SH DESCRIPTION+This plumbing\-level command is given a key, and prints information+that can be determined purely by looking at the key.+.PP+.SH OPTIONS+.IP "\fB\-\-format=value\fP"+.IP+Use custom output formatting.+.IP+The value is a format string, in which '${var}' is expanded to the+value of a variable. To right\-justify a variable with whitespace,+use '${var;width}' ; to left\-justify a variable, use '${var;\-width}';+to escape unusual characters in a variable, use '${escaped_var}'+.IP+These variables are available for use in formats: key, backend,+bytesize, humansize, keyname, hashdirlower, hashdirmixed, mtime (for+the mtime field of a WORM key).+.IP+Also, '\\n' is a newline, '\\000' is a NULL, etc.+.IP+.IP "\fB\-\-json\fP"+Enable JSON output. This is intended to be parsed by programs that use+git\-annex. Each line of output is a JSON object.+.IP+.SH EXAMPLES+The location a key's value is stored (in indirect mode)+can be looked up by running:+.PP+ git annex examinekey $KEY \-\-format='.git/annex/objects/${hashdirmixed}${key}/${key}'+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-find.1 view
@@ -0,0 +1,58 @@+.TH git-annex-find 1+.SH NAME+git\-annex find \- lists available files+.PP+.SH SYNOPSIS+git annex find \fB[path ...]\fP+.PP+.SH DESCRIPTION+Outputs a list of annexed files in the specified path. With no path,+finds files in the current directory and its subdirectories.+.PP+.SH OPTIONS+.IP "\fB\-\-print0\fP"+.IP+Output filenames terminated with nulls, for use with \fBxargs \-0\fP+.IP+.IP "\fB\-\-format=value\fP"+Use custom output formatting.+.IP+The value is a format string, in which '${var}' is expanded to the+value of a variable. To right\-justify a variable with whitespace,+use '${var;width}' ; to left\-justify a variable, use '${var;\-width}';+to escape unusual characters in a variable, use '${escaped_var}'+.IP+These variables are available for use in formats: file, key, backend,+bytesize, humansize, keyname, hashdirlower, hashdirmixed, mtime (for+the mtime field of a WORM key).+.IP+Also, '\\n' is a newline, '\\000' is a NULL, etc.+.IP+The default output format is the same as \fB\-\-format='${file}\\n'\fP+.IP+.IP "\fB\-\-json\fP"+Output the list of files in JSON format.+.IP+This is intended to be parsed by programs that use+git\-annex. Each line of output is a JSON object.+.IP+.IP "matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to list.+.IP+By default, the find command only lists annexed files whose content is+currently present. Specifying any of the matching options will override+this default behavior.+.IP+To list all annexed files, present or not, specify \fB\-\-include "*"\fP.+.IP+To list annexed files whose content is not present, specify \fB\-\-not \-\-in=here\fP+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-findref.1 view
@@ -0,0 +1,23 @@+.TH git-annex-findref 1+.SH NAME+git\-annex findref \- lists files in a git ref+.PP+.SH SYNOPSIS+git annex findref \fB[ref]\fP+.PP+.SH DESCRIPTION+This is very similar to the \fBgit\-annex find\fP command, but instead of+finding files in the current work tree, it finds files in the+specified git ref.+.PP+.SH OPTIONS+Same as git\-annex\-find(1)+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-fix.1 view
@@ -0,0 +1,28 @@+.TH git-annex-fix 1+.SH NAME+git\-annex fix \- fix up symlinks to point to annexed content+.PP+.SH SYNOPSIS+git annex fix \fB[path ...]\fP+.PP+.SH DESCRIPTION+Fixes up symlinks that have become broken to again point to annexed+content.+.PP+This is useful to run if you have been moving the symlinks around,+but is done automatically when committing a change with git too.+.PP+.SH OPTIONS+.IP "file matching options"+.IP+The git\-annex\-matching\-options(1)+can be used to specify files to fix.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-forget.1 view
@@ -0,0 +1,33 @@+.TH git-annex-forget 1+.SH NAME+git\-annex forget \- prune git\-annex branch history+.PP+.SH SYNOPSIS+git annex forget+.PP+.SH DESCRIPTION+Causes the git\-annex branch to be rewritten, throwing away historical+data about past locations of files. The resulting branch will use less+space, but \fBgit annex log\fP will not be able to show where+files used to be located.+.PP+When this rewritten branch is merged into other clones of+the repository, \fBgit\-annex\fP will automatically perform the same rewriting+to their local \fBgit\-annex\fP branches. So the forgetfulness will automatically+propagate out from its starting point until all repositories running+git\-annex have forgotten their old history. (You may need to force+git to push the branch to any git repositories not running git\-annex.)+.PP+.SH OPTIONS+.IP "\fB\-\-drop\-dead\fP"+.IP+Also prune references to repositories that have been marked as dead.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-fromkey.1 view
@@ -0,0 +1,29 @@+.TH git-annex-fromkey 1+.SH NAME+git\-annex fromkey \- adds a file using a specific key+.PP+.SH SYNOPSIS+git annex fromkey \fB[key file]\fP+.PP+.SH DESCRIPTION+This plumbing\-level command can be used to manually set up a file+in the git repository to link to a specified key.+.PP+If the key and file are not specified on the command line, they are+instead read from stdin. Any number of lines can be provided in this+mode, each containing a key and filename, sepearated by whitespace.+.PP+.SH OPTIONS+.IP "\fB\-\-force\fP"+.IP+Allow making a file link to a key whose content is not in the local+repository. The key may not be known to git\-annex at all. +.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-fsck.1 view
@@ -0,0 +1,79 @@+.TH git-annex-fsck 1+.SH NAME+git\-annex fsck \- check for problems+.PP+.SH SYNOPSIS+git annex fsck \fB[path ...]\fP+.PP+.SH DESCRIPTION+With no parameters, this command checks the whole annex for consistency,+and warns about or fixes any problems found. This is a good complement to+\fBgit fsck\fP.+.PP+With parameters, only the specified files are checked.+.PP+.SH OPTIONS+.IP "\fB\-\-from=remote\fP"+.IP+Check a remote, rather than the local repository.+.IP+Note that by default, files will be copied from the remote to check+their contents. To avoid this expensive transfer, and only+verify that the remote still has the files that are expected to be on it,+add the \fB\-\-fast\fP option.+.IP+.IP "\fB\-\-fast\fP"+Avoids expensive checksum calculations (and expensive transfers when+fscking a remote).+.IP+.IP "\fB\-\-incremental\fP"+Start a new incremental fsck pass. An incremental fsck can be interrupted+at any time, with eg ctrl\-c.+.IP+.IP "\fB\-\-more\fP"+Continue the last incremental fsck pass, where it left off.+.IP+.IP "\fB\-\-incremental\-schedule=time\fP"+This makes a new incremental fsck be started only a specified+time period after the last incremental fsck was started.+.IP+The time is in the form "10d" or "300h".+.IP+Maybe you'd like to run a fsck for 5 hours at night, picking up each+night where it left off. You'd like this to continue until all files+have been fscked. And once it's done, you'd like a new fsck pass to start,+but no more often than once a month. Then put this in a nightly cron job:+.IP+ git annex fsck \-\-incremental\-schedule 30d \-\-time\-limit 5h+.IP+.IP "\fB\-\-numcopies=N\fP"+Override the normally configured number of copies. +.IP+To verify data integrity only while disregarding required number of copies,+use \fB\-\-numcopies=1\fP.+.IP+.IP "\fB\-\-all\fP"+Normally only the files in the currently checked out branch+are fscked. This option causes all versions of all files to be fscked.+.IP+This is the default behavior when running git\-annex in a bare repository.+.IP+.IP "\fB\-\-unused\fP"+Operate on files found by last run of git\-annex unused.+.IP+.IP "\fB\-\-key=keyname\fP"+Use this option to fsck a specified key.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to fsck.+.IP+.SH OPTIONS+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-fuzztest.1 view
@@ -0,0 +1,20 @@+.TH git-annex-fuzztest 1+.SH NAME+git\-annex fuzztest \- generates fuzz test files+.PP+.SH SYNOPSIS+git annex fuzztest+.PP+.SH DESCRIPTION+Generates random changes to files in the current repository,+for use in testing the assistant. This is dangerous, so it will not+do anything unless \-\-forced.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-get.1 view
@@ -0,0 +1,49 @@+.TH git-annex-get 1+.SH NAME+git\-annex get \- make content of annexed files available+.PP+.SH SYNOPSIS+git annex get \fB[path ...]\fP+.PP+.SH DESCRIPTION+Makes the content of annexed files available in this repository. This+will involve copying them from a remote repository, or downloading them,+or transferring them from some kind of key\-value store.+.PP+.SH OPTIONS+.IP "\fB\-\-auto\fP"+.IP+Rather than getting all files, get only files that don't yet have+the desired number of copies, or that are preferred content of the+repository. See git\-annex\-preferred\-content(1)+.IP+.IP "\fB\-\-from=remote\fP"+Normally git\-annex will choose which remotes to get the content+from. Use this option to specify which remote to use.+.IP+.IP "\fB\-\-all\fP"+Rather than specifying a filename or path to get, this option can be+used to get all available versions of all files.+.IP+This is the default behavior when running git\-annex in a bare repository.+.IP+.IP "\fB\-\-unused\fP"+Operate on files found by last run of git\-annex unused.+.IP+.IP "\fB\-\-key=keyname\fP"+Use this option to get a specified key.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to get.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-drop(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-group.1 view
@@ -0,0 +1,26 @@+.TH git-annex-group 1+.SH NAME+git\-annex group \- add a repository to a group+.PP+.SH SYNOPSIS+git annex group \fBrepository groupname\fP+.PP+.SH DESCRIPTION+Adds a repository to a group, such as "archival", "enduser", or "transfer".+The groupname must be a single word.+.PP+Omit the groupname to show the current groups that a repository is in.+.PP+There are some standard groups that have different default preferred content+settings. See <https://git\-annex.branchable.com/preferred_content/standard_groups/>+.PP+A repository can be in multiple groups at the same time.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-groupwanted.1 view
@@ -0,0 +1,29 @@+.TH git-annex-groupwanted 1+.SH NAME+git\-annex groupwanted \- get or set groupwanted expression+.PP+.SH SYNOPSIS+git annex groupwanted \fBgroupname [expression]\fP+.PP+.SH DESCRIPTION+Sets or displays the groupwanted expression. This will be used by+repositories that are in the group, and that have their preferred+content expression set to "groupwanted".+.PP+For example, to configure a group named redundantarchive, and+make repositories in the group want to contain 3 copies of every file:+.PP+ git annex groupwanted redundantarchive "not (copies=redundantarchive:3)"+ for repo in foo bar baz; do+ git annex group $repo redundantarchive+ git annex wanted $repo groupwanted+ done+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-import.1 view
@@ -0,0 +1,66 @@+.TH git-annex-import 1+.SH NAME+git\-annex import \- move and add files from outside git working copy+.PP+.SH SYNOPSIS+git annex import \fB[path ...]\fP+.PP+.SH DESCRIPTION+Moves files from somewhere outside the git working copy, and adds them to+the annex. Individual files to import can be specified.+If a directory is specified, the entire directory is imported.+.PP+ git annex import /media/camera/DCIM/*+.PP+When importing files, there's a possibility of importing a duplicate+of a file that is already known to git\-annex \-\- its content is either+present in the local repository already, or git\-annex knows of anther+repository that contains it.+.PP+By default, importing a duplicate of a known file will result in+a new filename being added to the repository, so the duplicate file+is present in the repository twice. (With all checksumming backends,+including the default SHA256E, only one copy of the data will be stored.)+.PP+Several options can be used to adjust handling of duplicate files.+.PP+.SH OPTIONS+.IP "\fB\-\-duplicate\fP"+.IP+Do not delete files from the import location.+.IP+This could allow importing the same files repeatedly+to different locations in a repository. More likely, it could be used to+import the same files to a number of different branches or separate git+repositories.+.IP+.IP "\fB\-\-deduplicate\fP"+Only import files that are not duplicates;+duplicate files will be deleted from the import location.+.IP+.IP "\fB\-\-skip\-duplicates\fP"+Only import files that are not duplicates; and avoid deleting+duplicate files from the import location.+.IP+.IP "\fB\-\-clean\-duplicates\fP"+Does not import any files, but any files found in the import location+that are duplicates are deleted.+.IP+.IP "file matching options"+Many of the git\-annex\-matching\-options(1)+can be used to specify files to import.+.IP+ git annex import /dir \-\-include='*.png'+.IP+.SH CAVEATS+Note that using \fB\-\-deduplicate\fP or \fB\-\-clean\-duplicates\fP with the WORM+backend does not look at file content, but filename and mtime.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-importfeed.1 view
@@ -0,0 +1,40 @@+.TH git-annex-importfeed 1+.SH NAME+git\-annex importfeed \- import files from podcast feeds+.PP+.SH SYNOPSIS+git annex importfeed \fB[url ...]\fP+.PP+.SH DESCRIPTION+Imports the contents of podcast feeds. Only downloads files whose+urls have not already been added to the repository before, so you can+delete, rename, etc the resulting files and repeated runs won't duplicate+them.+.PP+When quvi is installed, links in the feed are tested to see if they+are on a video hosting site, and the video is downloaded. This allows+importing e.g., youtube playlists.+.PP+.SH OPTIONS+.IP "\fB\-\-force\fP"+.IP+Force downoading urls it's seen before.+.IP+.IP "\fB\-\-template\fP"+Controls where the files are stored.+.IP+The default template is '${feedtitle}/${itemtitle}${extension}'+.IP+Other available variables for templates: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate, title, author+.IP+.IP "\fB\-\-relaxed\fP, \fB\-\-fast\fP, \fB\-\-raw\fP, \fB\-\-template\fP"+These options behave the same as when using git\-annex\-addurl(1).+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-indirect.1 view
@@ -0,0 +1,23 @@+.TH git-annex-indirect 1+.SH NAME+git\-annex indirect \- switch repository to indirect mode+.PP+.SH SYNOPSIS+git annex indirect+.PP+.SH DESCRIPTION+Switches a repository back from direct mode to the default, indirect+mode.+.PP+Some systems cannot support git\-annex in indirect mode, because they+do not support symbolic links. Repositories on such systems instead+default to using direct mode.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-info.1 view
@@ -0,0 +1,44 @@+.TH git-annex-info 1+.SH NAME+git\-annex info \- shows information about the specified item or the repository as a whole+.PP+.SH SYNOPSIS+git annex info \fB[directory|file|remote|uuid ...]\fP+.PP+.SH DESCRIPTION+Displays statistics and other information for the specified item,+which can be a directory, or a file, or a remote, or the uuid of a+repository.+.PP+When no item is specified, displays statistics and information+for the repository as a whole.+.PP+.SH OPTIONS+.IP "\fB\-\-fast\fP"+.IP+Only show the data that can be gathered quickly.+.IP+.IP "\fB\-\-json\fP"+Enable JSON output. This is intended to be parsed by programs that use+git\-annex. Each line of output is a JSON object.+.IP+.IP "file matching options"+When a directory is specified, the git\-annex\-matching\-options(1)+can be used to select the files in the directory that are included+in the statistics.+.IP+.SH EXAMPLES+Suppose you want to run "git annex get .", but+would first like to see how much disk space that will use.+Then run:+.PP+ git annex info \-\-fast . \-\-not \-\-in here+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-init.1 view
@@ -0,0 +1,24 @@+.TH git-annex-init 1+.SH NAME+git\-annex init \- initialize git\-annex+.PP+.SH SYNOPSIS+git annex init \fB[description]\fP+.PP+.SH DESCRIPTION+Until a repository (or one of its remotes) has been initialized,+git\-annex will refuse to operate on it, to avoid accidentally+using it in a repository that was not intended to have an annex.+.PP+It's useful, but not mandatory, to initialize each new clone+of a repository with its own description. If you don't provide one,+one will be generated using the username, hostname and the path.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-initremote.1 view
@@ -0,0 +1,53 @@+.TH git-annex-initremote 1+.SH NAME+git\-annex initremote \- creates a special (non\-git) remote+.PP+.SH SYNOPSIS+git annex initremote \fBname type=value [param=value ...]\fP+.PP+.SH DESCRIPTION+Creates a new special remote, and adds it to \fB.git/config\fP.+.PP+Example Amazon S3 remote:+.PP+ git annex initremote mys3 type=S3 encryption=hybrid keyid=me@example.com datacenter=EU+.PP+Many different types of special remotes are supported by git\-annex.+For a list and details, see <https://git\-annex.branchable.com/special_remotes/>+.PP+The remote's configuration is specified by the parameters passed+to this command. Different types of special remotes need different+configuration values. The command will prompt for parameters as needed.+.PP+All special remotes support encryption. You can either specify+\fBencryption=none\fP to disable encryption, or specify+\fBencryption=hybrid keyid=$keyid ...\fP to specify a GPG key id (or an email+address associated with a key).+.PP+There are actually three schemes that can be used for management of the+encryption keys. When using the encryption=hybrid scheme, additional+GPG keys can be given access to the encrypted special remote easily+(without re\-encrypting everything). When using encryption=shared,+a shared key is generated and stored in the git repository, allowing+anyone who can clone the git repository to access it. Finally, when using+encryption=pubkey, content in the special remote is directly encrypted+to the specified GPG keys, and additional ones cannot easily be given+access.+.PP+.SH OPTIONS+.IP "\fB\-\-fast\fP"+.IP+When initializing a remote that uses encryption, a cryptographic key is+created. This requires sufficient entropy. If initremote seems to hang+or take a long time while generating the key, you may want to Ctrl\-c it+and re\-run with \fB\-\-fast\fP, which causes it to use a lower\-quality source of+randomness. (Ie, /dev/urandom instead of /dev/random)+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-list.1 view
@@ -0,0 +1,29 @@+.TH git-annex-list 1+.SH NAME+git\-annex list \- show which remotes contain files+.PP+.SH SYNOPSIS+git annex list \fB[path ...]\fP+.PP+.SH DESCRIPTION+Displays a table of remotes that contain the contents of the specified+files. This is similar to \fBgit annex whereis\fP but a more compact display.+.PP+.SH OPTIONS+.IP "\fB\-\-allrepos\fP"+.IP+Only configured remotes are shown by default; this option+adds all known repositories to the list.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to list.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-lock.1 view
@@ -0,0 +1,25 @@+.TH git-annex-lock 1+.SH NAME+git\-annex lock \- unco unlock command+.PP+.SH SYNOPSIS+git annex lock \fB[path ...]\fP+.PP+.SH DESCRIPTION+Use this to undo an unlock command if you don't want to modify+the files, or have made modifications you want to discard.+.PP+.SH OPTIONS+.IP "file matching options"+.IP+The git\-annex\-matching\-options(1)+can be used to specify files to lock.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-log.1 view
@@ -0,0 +1,35 @@+.TH git-annex-log 1+.SH NAME+git\-annex log \- shows location log+.PP+.SH SYNOPSIS+git annex log \fB[path ...]\fP+.PP+.SH DESCRIPTION+Displays the location log for the specified file or files,+showing each repository they were added to ("+") and removed from ("\-").+.PP+.SH OPTIONS+.IP "\fB\-\-since=date\fP, \fB\-\-after=date\fP, \fB\-\-until=date\fP, \fB\-\-before=date\fP, \fB\-\-max\-count=N\fP"+.IP+These options are passed through to \fBgit log\fP, and can be used to limit+how far back to search for location log changes.+.IP+For example: \fB\-\-since "1 month ago"\fP+.IP+.IP "\fB\-\-gource\fP"+Generates output suitable for the \fBgource\fP visualization program.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to act on.+.IP+.SH OPTIONS+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-lookupkey.1 view
@@ -0,0 +1,21 @@+.TH git-annex-lookupkey 1+.SH NAME+git\-annex lookupkey \- looks up key used for file+.PP+.SH SYNOPSIS+git annex lookupkey \fB[file ...]\fP+.PP+.SH DESCRIPTION+This plumbing\-level command looks up the key used for a file in the+index. The key is output to stdout. If there is no key (because+the file is not present in the index, or is not a git\-annex managed file),+nothing is output, and it exits nonzero.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-map.1 view
@@ -0,0 +1,36 @@+.TH git-annex-map 1+.SH NAME+git\-annex map \- generate map of repositories+.PP+.SH SYNOPSIS+git annex map+.PP+.SH DESCRIPTION+Helps you keep track of your repositories, and the connections between them,+by going out and looking at all the ones it can get to, and generating a+Graphviz file displaying it all. If the \fBdot\fP command is available, it is+used to display the file to your screen (using x11 backend).+.PP+This command only connects to hosts that the host it's run on can+directly connect to. It does not try to tunnel through intermediate hosts.+So it might not show all connections between the repositories in the network+.PP+Also, if connecting to a host requires a password, you might have to enter+it several times as the map is being built.+.PP+Note that this subcommand can be used to graph any git repository; it+is not limited to git\-annex repositories.+.PP+.SH OPTIONS+.IP "\fB\-\-fast\fP"+.IP+Disable using \fBdot\fP to display the generated Graphviz file.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-matching-options.1 view
@@ -0,0 +1,142 @@+.TH git-annex-matching-options 1+.SH NAME+git\-annex\-matching\-options \- specifying files to act on+.PP+.SH DESCRIPTION+Many git\-annex commands support using these options to specify which+files they act on.+.PP+Arbitrarily complicated expressions can be built using these options.+For example:+.PP+ \-\-exclude '*.mp3' \-\-and \-\-not \-( \-\-in=usbdrive \-\-or \-\-in=archive \-)+.PP+The above example prevents git\-annex from working on mp3 files whose+file contents are present at either of two repositories.+.PP+.SH OPTIONS+.IP "\fB\-\-exclude=glob\fP"+.IP+Skips files matching the glob pattern. The glob is matched relative to+the current directory. For example:+.IP+ \-\-exclude='*.mp3' \-\-exclude='subdir/*'+.IP+Note that this will not match anything when using \-\-all or \-\-unused.+.IP+.IP "\fB\-\-include=glob\fP"+Skips files not matching the glob pattern. (Same as \fB\-\-not \-\-exclude\fP.)+For example, to include only mp3 and ogg files:+.IP+ \-\-include='*.mp3' \-\-or \-\-include='*.ogg'+.IP+Note that this will not skip anything when using \-\-all or \-\-unused.+.IP+.IP "\fB\-\-in=repository\fP"+Matches only files that git\-annex believes have their contents present+in a repository. Note that it does not check the repository to verify+that it still has the content.+.IP+The repository should be specified using the name of a configured remote,+or the UUID or description of a repository. For the current repository,+use \fB\-\-in=here\fP+.IP+.IP "\fB\-\-in=repository@{date}\fP"+Matches files currently in the work tree whose content was present in+the repository on the given date.+.IP+The date is specified in the same syntax documented in+gitrevisions(7). Note that this uses the reflog, so dates far in the+past cannot be queried.+.IP+For example, you might need to run \fBgit annex drop .\fP to temporarily+free up disk space. The next day, you can get back the files you dropped+using \fBgit annex get . \-\-in=here@{yesterday}\fP+.IP+.IP "\fB\-\-copies=number\fP"+Matches only files that git\-annex believes to have the specified number+of copies, or more. Note that it does not check remotes to verify that+the copies still exist.+.IP+.IP "\fB\-\-copies=trustlevel:number\fP"+Matches only files that git\-annex believes have the specified number of+copies, on remotes with the specified trust level. For example,+\fB\-\-copies=trusted:2\fP+.IP+To match any trust level at or higher than a given level,+use 'trustlevel+'. For example, \fB\-\-copies=semitrusted+:2\fP+.IP+.IP "\fB\-\-copies=groupname:number\fP"+Matches only files that git\-annex believes have the specified number of+copies, on remotes in the specified group. For example,+\fB\-\-copies=archive:2\fP+.IP+.IP "\fB\-\-lackingcopies=number\fP"+Matches only files that git\-annex believes need the specified number or +more additional copies to be made in order to satisfy their numcopies+settings.+.IP+.IP "\fB\-\-approxlackingcopies=number\fP"+Like lackingcopies, but does not look at .gitattributes annex.numcopies+settings. This makes it significantly faster.+.IP+.IP "\fB\-\-inbackend=name\fP"+Matches only files whose content is stored using the specified key\-value+backend.+.IP+.IP "\fB\-\-inallgroup=groupname\fP"+Matches only files that git\-annex believes are present in all repositories+in the specified group.+.IP+.IP "\fB\-\-smallerthan=size\fP"+.IP "\fB\-\-largerthan=size\fP"+Matches only files whose content is smaller than, or larger than the+specified size.+.IP+The size can be specified with any commonly used units, for example,+"0.5 gb" or "100 KiloBytes"+.IP+.IP "\fB\-\-metadata field=glob\fP"+Matches only files that have a metadata field attached with a value that+matches the glob. The values of metadata fields are matched case+insensitively.+.IP+.IP "\fB\-\-want\-get\fP"+Matches files that the preferred content settings for the repository+make it want to get. Note that this will match even files that are+already present, unless limited with e.g., \fB\-\-not \-\-in .\fP+.IP+Note that this will not match anything when using \-\-all or \-\-unused.+.IP+.IP "\fB\-\-want\-drop\fP"+Matches files that the preferred content settings for the repository+make it want to drop. Note that this will match even files that have+already been dropped, unless limited with e.g., \fB\-\-in .\fP+.IP+Note that this will not match anything when using \-\-all or \-\-unused.+.IP+.IP "\fB\-\-not\fP"+Inverts the next matching option. For example, to only act on+files with less than 3 copies, use \fB\-\-not \-\-copies=3\fP+.IP+.IP "\fB\-\-and\fP"+Requires that both the previous and the next matching option matches.+The default.+.IP+.IP "\fB\-\-or\fP"+Requires that either the previous, or the next matching option matches.+.IP+.IP "\fB\-(\fP"+Opens a group of matching options.+.IP+.IP "\fB\-)\fP"+Closes a group of matching options.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-merge.1 view
@@ -0,0 +1,24 @@+.TH git-annex-merge 1+.SH NAME+git\-annex merge \- automatically merge changes from remotes+.PP+.SH SYNOPSIS+git annex merge+.PP+.SH DESCRIPTION+This performs the same merging (and merge conflict resolution)+that is done by the sync command, but without pushing or pulling any+data.+.PP+One way to use this is to put \fBgit annex merge\fP into a repository's+post\-receive hook. Then any syncs to the repository will update its+working copy automatically.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-metadata.1 view
@@ -0,0 +1,69 @@+.TH git-annex-metadata 1+.SH NAME+git\-annex metadata \- sets or gets metadata of a file+.PP+.SH SYNOPSIS+git annex metadata \fB[path ...]\fP+.PP+.SH DESCRIPTION+The content of an annexed file can have any number of metadata fields+attached to it to describe it. Each metadata field can in turn+have any number of values.+.PP+This command can be used to set metadata, or show the currently set+metadata.+.PP+When run without any \-s or \-t parameters, displays the current metadata.+.PP+.SH OPTIONS+.IP "\fB\-g field\fP"+.IP+Get the value(s) of a single field.+.IP+The values will be output one per line, with no other output, so+this is suitable for use in a script.+.IP+.IP "\fB\-s field=value\fP"+Set a field's value, removing any old values.+.IP+.IP "\fB\-s field+=value\fP"+Add an additional value, preserving any old values.+.IP+.IP "\fB\-s field\-=value\fP"+Remove a value.+.IP+.IP "\fB\-s field?=value\fP"+Set a value, but only if the field does not already have a value set.+.IP+.IP "\fB\-t tag\fP"+Set a tag. Note that a tag is just a value of the "tag" field.+.IP+.IP "\fB\-u tag\fP"+Unset a tag.+.IP+.IP "\fB\-\-force\fP"+By default, \fBgit annex metadata\fP refuses to recursively set metadata+throughout the files in a directory. This option enables such recursive+setting.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to act on.+.IP+.IP "\fB\-\-json\fP"+Enable JSON output. This is intended to be parsed by programs that use+git\-annex. Each line of output is a JSON object.+.IP+.SH EXAMPLES+To set some tags on a file and also its author:+.PP+ git annex metadata annexscreencast.ogv \-t video \-t screencast \-s author+=Alice+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-migrate.1 view
@@ -0,0 +1,42 @@+.TH git-annex-migrate 1+.SH NAME+git\-annex migrate \- switch data to different backend+.PP+.SH SYNOPSIS+git annex migrate \fB[path ...]\fP+.PP+.SH DESCRIPTION+Changes the specified annexed files to use the default key\-value backend+(or the one specified with \fB\-\-backend\fP). Only files whose content+is currently available are migrated.+.PP+Note that the content is also still available using the old key after+migration. Use \fBgit annex unused\fP to find and remove the old key.+.PP+Normally, nothing will be done to files already using the new backend.+However, if a backend changes the information it uses to construct a key,+this can also be used to migrate files to use the new key format.+.PP+When you have multiple repositories that each contain a copy of a file,+it's best to run migrate in all of them.+.PP+.SH OPTIONS+.IP "\fB\-\-backend\fP"+.IP+Specify the new key\-value backend to use for migrated data.+.IP+.IP "\fB\-\-force\fP"+Force migration of keys that are already using the new backend.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to migrate.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-mirror.1 view
@@ -0,0 +1,50 @@+.TH git-annex-mirror 1+.SH NAME+git\-annex mirror \- mirror content of files to/from another repository+.PP+.SH SYNOPSIS+git annex mirror \fB[path ...] [\-\-to=remote|\-\-from=remote]\fP+.PP+.SH DESCRIPTION+This causes a destination repository to mirror a source repository.+.PP+Each specified file in the source repository is mirrored to the destination+repository. If a file's content is present in the source repository, it is+copied to the destination repository. If a file's content is not present in+the source repository, it will be dropped from the destination repository+when the numcopies setting allows.+.PP+Note that mirror does not sync the git repository, but only the file+contents.+.PP+.SH OPTIONS+.IP "\fB\-\-to=remote\fP"+.IP+Use the local repository as the source repository, and mirror its contents+to the remote.+.IP+.IP "\fB\-\-from=remote\fP"+Use the remote as the source repository, and mirror its contents to the local+repository.+.IP+.IP "\fB\-\-all\fP"+Mirror all objects stored in the git annex, not only objects used by+currently existing files. +.IP+However, this bypasses checking the .gitattributes annex.numcopies+setting when dropping files.+.IP+This is the default behavior when running git\-annex in a bare repository.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to mirror.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-move.1 view
@@ -0,0 +1,44 @@+.TH git-annex-move 1+.SH NAME+git\-annex move \- move content of files to/from another repository+.PP+.SH SYNOPSIS+git annex move \fB[path ...] [\-\-from=remote|\-\-to=remote]\fP+.PP+.SH DESCRIPTION+Moves the content of files from or to another remote.+.PP+.SH OPTIONS+.IP "\fB\-\-from=remote\fP"+.IP+Use this option to move the content of files from the specified+remote to the local repository.+.IP+.IP "\fB\-\-to=remote\fP"+Use this option to move the content of files from the local repository+to the specified remote.+.IP+.IP "\fB\-\-all\fP"+Rather than specifying a filename or path to move, this option can be+used to move all available versions of all files.+.IP+This is the default behavior when running git\-annex in a bare repository.+.IP+.IP "\fB\-\-unused\fP"+Operate on files found by last run of git\-annex unused.+.IP+.IP "\fB\-\-key=keyname\fP"+Use this option to move a specified key.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to move.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-numcopies.1 view
@@ -0,0 +1,28 @@+.TH git-annex-numcopies 1+.SH NAME+git\-annex numcopies \- configure desired number of copies+.PP+.SH SYNOPSIS+git annex numcopies \fBN\fP+.PP+.SH DESCRIPTION+Tells git\-annex how many copies it should preserve of files, over all+repositories. The default is 1.+.PP+Run without a number to get the current value.+.PP+When git\-annex is asked to drop a file, it first verifies that the+required number of copies can be satisfied among all the other+repositories that have a copy of the file.+.PP+This can be overridden on a per\-file basis by the annex.numcopies setting+in .gitattributes files.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-pre-commit.1 view
@@ -0,0 +1,24 @@+.TH git-annex-pre-commit 1+.SH NAME+git\-annex pre\-commit \- run by git pre\-commit hook+.PP+.SH SYNOPSIS+git annex \fB[path ...]\fP+.PP+.SH DESCRIPTION+This is meant to be called from git's pre\-commit hook. \fBgit annex init\fP+automatically creates a pre\-commit hook using this.+.PP+Fixes up symlinks that are staged as part of a commit, to ensure they+point to annexed content. Also handles injecting changes to unlocked+files into the annex. When in a view, updates metadata to reflect changes+made to files in the view.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-preferred-content.1 view
@@ -0,0 +1,47 @@+.TH git-annex-preferred-content 1+.SH NAME+git\-annex\-preferred\-content \- +.PP+.SH DESCRIPTION+Each repository has a preferred content setting, which specifies content+that the repository wants to have present. These settings can be configured+using \fBgit annex vicfg\fP or \fBgit annex wanted\fP.+They are used by the \fB\-\-auto\fP option, by \fBgit annex sync \-\-content\fP,+and by the git\-annex assistant.+.PP+Preferred content expressions are similar, but not identical to+the git\-annex\-matching\-options(1), just without the dashes.+For example:+.PP+ exclude=archive/* and (include=*.mp3 or smallerthan=1mb)+.PP+The main differences are that \fBexclude=\fP and \fBinclude=\fP always+match relative to the top of the git repository, and that there is+no equivilant to \fB\-\-in\fP.+.PP+For more details about preferred content expressions, see+See <https://git\-annex.branchable.com/preferred_content/>+.PP+When a repository is in one of the standard predefined groups, like "backup"+and "client", setting its preferred content to "standard" will use a+built\-in preferred content expression developed for that group. +See <https://git\-annex.branchable.com/preferred_content/standard_groups/>+.PP+If you have set a groupwanted expression for a group, it will be used+when a repository in the group has its preferred content set to+"groupwanted".+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-vicfg(1)+.PP+git\-annex\-wanted(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+<http://git\-annex.branchable.com/>+.PP+.PP+
+ man/git-annex-proxy.1 view
@@ -0,0 +1,35 @@+.TH git-annex-proxy 1+.SH NAME+git\-annex proxy \- safely bypass direct mode guard+.PP+.SH SYNOPSIS+git annex proxy \fB\-\- git cmd [options]\fP+.PP+.SH DESCRIPTION+Only useful in a direct mode repository, this runs the specified git+command with a temporary work tree, and updates the working tree to+reflect any changes staged or committed by the git command.+.PP+For example, to revert the most recent change that was committed+to the repository:+.PP+ git annex proxy \-\- git revert HEAD+.PP+To check out a past version of the repository:+.PP+ git annex proxy \-\- git checkout HEAD^^+.PP+To rename a directory:+.PP+ git annex proxy \-\- git mv mydir newname+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-direct(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-readpresentkey.1 view
@@ -0,0 +1,25 @@+.TH git-annex-readpresentkey 1+.SH NAME+git\-annex readpresentkey \- read records of where key is present+.PP+.SH SYNOPSIS+git annex readpresentkey \fBkey uuid\fP+.PP+.SH DESCRIPTION+This plumbing\-level command reads git\-annex's records about whether+the specified key's content is present in the remote with the speficied+uuid.+.PP+It exits 0 if the key is recorded to be present and 1 if not.+.PP+Note that this does not do an active check to verify if the key+is present. To do such a check, use checkpresentkey(1)+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-registerurl.1 view
@@ -0,0 +1,25 @@+.TH git-annex-registerurl 1+.SH NAME+git\-annex registerurl \- registers an url for a key+.PP+.SH SYNOPSIS+git annex registerurl \fB[key url]\fP+.PP+.SH DESCRIPTION+This plumbing\-level command can be used to register urls where a+key can be downloaded from.+.PP+No verification is performed of the url's contents.+.PP+If the key and url are not specified on the command line, they are+instead read from stdin. Any number of lines can be provided in this+mode, each containing a key and url, sepearated by whitespace.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-reinit.1 view
@@ -0,0 +1,25 @@+.TH git-annex-reinit 1+.SH NAME+git\-annex reinit \- initialize repository, reusing old UUID+.PP+.SH SYNOPSIS+git annex reinit \fBuuid|description\fP+.PP+.SH DESCRIPTION+Normally, initializing a repository generates a new, unique identifier+(UUID) for that repository. Occasionally it may be useful to reuse a+UUID \-\- for example, if a repository got deleted, and you're+setting it back up.+.PP+Use this with caution; it can be confusing to have two existing+repositories with the same UUID. Also, you will probably want to run+a fsck.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-reinject.1 view
@@ -0,0 +1,29 @@+.TH git-annex-reinject 1+.SH NAME+git\-annex reinject \- sets content of annexed file+.PP+.SH SYNOPSIS+git annex reinject \fBsrc dest\fP+.PP+.SH DESCRIPTION+Moves the src file into the annex as the content of the dest file,+which should be an already annexed file whose content is not present.+.PP+This can be useful if you have obtained the content of a file from+elsewhere and want to put it in the local annex.+.PP+Automatically runs fsck on dest to check that the expected content was+provided.+.PP+Example:+.PP+ git annex reinject /tmp/foo.iso foo.iso+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-rekey.1 view
@@ -0,0 +1,28 @@+.TH git-annex-rekey 1+.SH NAME+git\-annex rekey \- change keys used for files+.PP+.SH SYNOPSIS+git annex rekey \fB[file key ...]\fP+.PP+.SH DESCRIPTION+This plumbing\-level command is similar to migrate, but you specify+both the file, and the new key to use for it.+.PP+Multiple pairs of file and key can be given in a single command line.+.PP+.SH OPTIONS+.IP "\fB\-\-force\fP"+.IP+Allow rekeying of even files whose content is not currently available.+Use with caution.+.IP+.SH OPTIONS+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-remotedaemon.1 view
@@ -0,0 +1,31 @@+.TH git-annex-remotedaemon 1+.SH NAME+git\-annex remotedaemon \- detects when remotes have changed, and fetches from them+.PP+.SH SYNOPSIS+git annex remotedaemon+.PP+.SH DESCRIPTION+This plumbing\-level command is used by the assistant to detect+when remotes have received git pushes, so the changes can be promptly+fetched and the local repository updated.+.PP+This is a better alternative to the git\-annex\-xmppgit(1)+hack.+.PP+For the remotedaemon to work, the git remote must have+git\-annex\-shell(1) installed, with notifychanges support.+The first version of git\-annex\-shell that supports it is 5.20140405.+.PP+It's normal for this process to be running when the assistant is running.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-assistant(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-repair.1 view
@@ -0,0 +1,51 @@+.TH git-annex-repair 1+.SH NAME+git\-annex repair \- recover broken git repository+.PP+.SH SYNOPSIS+git annex repair+.PP+.SH DESCRIPTION+This can repair many of the problems with git repositories that \fBgit fsck\fP+detects, but does not itself fix. It's useful if a repository has become+badly damaged. One way this can happen is if a repository used by git\-annex+is on a removable drive that gets unplugged at the wrong time.+.PP+This command can actually be used inside git repositories that do not+use git\-annex at all; when used in a repository using git\-annex, it+does additional repairs of the git\-annex branch.+.PP+It works by deleting any corrupt objects from the git repository, and+retrieving all missing objects it can from the remotes of the repository.+.PP+If that is not sufficient to fully recover the repository, it can also+reset branches back to commits before the corruption happened, delete+branches that are no longer available due to the lost data, and remove any+missing files from the index. It will only do this if run with the+\fB\-\-force\fP option, since that rewrites history and throws out missing data.+Note that the \fB\-\-force\fP option never touches tags, even if they are no+longer usable due to missing data.+.PP+After running this command, you will probably want to run \fBgit fsck\fP to+verify it fixed the repository. Note that fsck may still complain about+objects referenced by the reflog, or the stash, if they were unable to be+recovered. This command does not try to clean up either the reflog or the+stash.+.PP+It is also a good idea to run \fBgit annex fsck \-\-fast\fP after this command,+to make sure that the git\-annex branch reflects reality.+.PP+.SH OPTIONS+.IP "\fB\-\-force\fP"+.IP+Enable repair actions that involve deleting data that has been+lost due to git repository corruption.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-resolvemerge.1 view
@@ -0,0 +1,24 @@+.TH git-annex-resolvemerge 1+.SH NAME+git\-annex resolvemerge \- resolve merge conflicts+.PP+.SH SYNOPSIS+git annex resolvemerge+.PP+.SH DESCRIPTION+Resolves a conflicted merge, by adding both conflicting versions of the+file to the tree, using variants of their filename. This is done+automatically when using \fBgit annex sync\fP or \fBgit annex merge\fP.+.PP+Note that only merge conflicts that involve an annexed file are resolved.+Merge conflicts between two files that are not annexed will not be+automatically resolved.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-rmurl.1 view
@@ -0,0 +1,18 @@+.TH git-annex-rmurl 1+.SH NAME+git\-annex rmurl \- record file is not available at url+.PP+.SH SYNOPSIS+git annex rmurl \fBfile url\fP+.PP+.SH DESCRIPTION+Record that the file is no longer available at the url.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-schedule.1 view
@@ -0,0 +1,43 @@+.TH git-annex-schedule 1+.SH NAME+git\-annex schedule \- get or set scheduled jobs+.PP+.SH SYNOPSIS+git annex schedule \fBrepository [expression]\fP+.PP+.SH DESCRIPTION+The git\-annex\-assistant(1) daemon can be configured to run scheduled jobs.+This is similar to cron and anacron (and you can use them if you prefer),+but has the advantage of being integrated into git\-annex, and so being able+to e.g., fsck a repository on a removable drive when the drive gets+connected.+.PP+When run with an expression, configures scheduled jobs to run at a+particular time. This can be used to make the assistant periodically run+incremental fscks.+.PP+When run without an expression, outputs the current scheduled jobs for+the repository.+.PP+.SH EXPRESSIONS+These actions are available: "fsck self", "fsck UUID" (where UUID+is the UUID of a remote to fsck). After the action comes the duration+to allow the action to run, and finally the schedule of when to run it.+.PP+To schedule multiple jobs, separate them with "; ".+.PP+Some examples:+.PP+fsck self 30m every day at any time+fsck self 1h every month at 3 AM+fsck self 1h on day 1 of every month at any time+fsck self 1h every week divisible by 2 at any time+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-semitrust.1 view
@@ -0,0 +1,21 @@+.TH git-annex-semitrust 1+.SH NAME+git\-annex semitrust \- return repository to default trust level+.PP+.SH SYNOPSIS+git annex semitrust \fB[repository ...]\fP+.PP+.SH DESCRIPTION+Returns a repository to the default semi trusted state.+.PP+Repositories can be specified using their remote name, their+description, or their UUID. For the current repository, use "here".+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-setpresentkey.1 view
@@ -0,0 +1,22 @@+.TH git-annex-setpresentkey 1+.SH NAME+git\-annex setpresentkey \- change records of where key is present+.PP+.SH SYNOPSIS+git annex setpresentkey \fBkey uuid [1|0]\fP+.PP+.SH DESCRIPTION+This plumbing\-level command changes git\-annex's records about whether+the specified key's content is present in a remote with the specified uuid.+.PP+Use 1 to indicate the key is present, or 0 to indicate the key is+not present.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-shell.1 view
@@ -0,0 +1,113 @@+.TH git-annex-shell 1+.SH NAME+git\-annex\-shell \- Restricted login shell for git\-annex only SSH access+.PP+.SH SYNOPSIS+git\-annex\-shell [\-c] command [params ...]+.PP+.SH DESCRIPTION+git\-annex\-shell is a restricted shell, similar to git\-shell, which+can be used as a login shell for SSH accounts.+.PP+Since its syntax is identical to git\-shell's, it can be used as a drop\-in+replacement anywhere git\-shell is used. For example it can be used as a +user's restricted login shell.+.PP+.SH COMMANDS+Any command not listed below is passed through to git\-shell.+.PP+Note that the directory parameter should be an absolute path, otherwise+it is assumed to be relative to the user's home directory. Also the+first "/~/" or "/~user/" is expanded to the specified home directory.+.PP+.IP "configlist directory"+This outputs a subset of the git configuration, in the same form as+\fBgit config \-\-list\fP. This is used to get the annex.uuid of the remote+repository.+.IP+When run in a repository that does not yet have an annex.uuid, one+will be created, as long as a git\-annex branch has already been pushed to+the repository.+.IP+.IP "inannex directory [key ...]"+This checks if all specified keys are present in the annex, +and exits zero if so.+.IP+.IP "dropkey directory [key ...]"+This drops the annexed data for the specified keys.+.IP+.IP "recvkey directory key"+This runs rsync in server mode to receive the content of a key,+and stores the content in the annex.+.IP+.IP "sendkey directory key"+This runs rsync in server mode to transfer out the content of a key.+.IP+.IP "transferinfo directory key"+This is typically run at the same time as sendkey is sending a key+to the remote. Using it is optional, but is used to update+progress information for the transfer of the key.+.IP+It reads lines from standard input, each giving the number of bytes+that have been received so far. +.IP+.IP "commit directory"+This commits any staged changes to the git\-annex branch.+It also runs the annex\-content hook.+.IP+.IP "notifychanges"+This is used by \fBgit\-annex remotedaemon\fP to be notified when+refs in the remote repository are changed.+.IP+.IP "gcryptsetup gcryptid"+Sets up a repository as a gcrypt repository.+.IP+.SH OPTIONS+Most options are the same as in git\-annex. The ones specific+to git\-annex\-shell are:+.PP+.IP "\-\-uuid=UUID"+git\-annex uses this to specify the UUID of the repository it was expecting+git\-annex\-shell to access, as a sanity check.+.IP+.IP "\-\- fields=val fields=val.. \-\-"+Additional fields may be specified this way, to retain compatability with+past versions of git\-annex\-shell (that ignore these, but would choke+on new dashed options).+.IP+Currently used fields include remoteuuid=, associatedfile=,+and direct=+.IP+.SH HOOK+After content is received or dropped from the repository by git\-annex\-shell,+it runs a hook, \fB.git/hooks/annex\-content\fP (or \fBhooks/annex\-content\fP on a bare+repository). The hook is not currently passed any information about what+changed.+.PP+.SH ENVIRONMENT+.IP "GIT_ANNEX_SHELL_READONLY"+.IP+If set, disallows any command that could modify the repository.+.IP+Note that this does not prevent passing commands on to git\-shell.+For that, you also need ...+.IP+.IP "GIT_ANNEX_SHELL_LIMITED"+If set, disallows running git\-shell to handle unknown commands.+.IP+.IP "GIT_ANNEX_SHELL_DIRECTORY"+If set, git\-annex\-shell will refuse to run commands that do not operate+on the specified directory.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+git\-shell(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+<http://git\-annex.branchable.com/>+.PP+.PP+
+ man/git-annex-status.1 view
@@ -0,0 +1,28 @@+.TH git-annex-status 1+.SH NAME+git\-annex status \- show the working tree status+.PP+.SH SYNOPSIS+git annex status \fB[path ...]\fP+.PP+.SH DESCRIPTION+Similar to \fBgit status \-\-short\fP, this command displays the status of the files+in the working tree. Shows files that are not checked into git, files that have+been deleted, and files that have been modified.+.PP+Particularly useful in direct mode.+.PP+.SH OPTIONS+.IP "\fB\-\-json\fP"+.IP+Enable JSON output. This is intended to be parsed by programs that use+git\-annex. Each line of output is a JSON object.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-sync.1 view
@@ -0,0 +1,57 @@+.TH git-annex-sync 1+.SH NAME+git\-annex sync \- synchronize local repository with remotes+.PP+.SH SYNOPSIS+git annex sync \fB[remote ...]\fP+.PP+.SH DESCRIPTION+Use this command when you want to synchronize the local repository with+one or more of its remotes. You can specify the remotes (or remote+groups) to sync with by name; the default if none are specified is to+sync with all remotes.+.PP+The sync process involves first committing any local changes to files+that have previously been added to the repository,+then fetching and merging the \fBsynced/master\fP and the \fBgit\-annex\fP branch+from the remote repositories, and finally pushing the changes back to+those branches on the remote repositories. You can use standard git+commands to do each of those steps by hand, or if you don't want to+worry about the details, you can use sync.+.PP+Merge conflicts are automatically handled by sync. When two conflicting+versions of a file have been committed, both will be added to the tree,+under different filenames. For example, file "foo" would be replaced+with "foo.somekey" and "foo.otherkey".+.PP+Note that syncing with a remote will not update the remote's working+tree with changes made to the local repository. However, those changes+are pushed to the remote, so they can be merged into its working tree+by running "git annex sync" on the remote.+.PP+.SH OPTIONS+.IP "\fB\-\-fast\fP"+.IP+Only sync with the remotes with the lowest annex\-cost value configured.+.IP+.IP "\fB\-\-content\fP"+Normally, syncing does not transfer the contents of annexed files.+This option causes the file contents to also be uploaded and downloaded+as necessary. +.IP+By default, this tries to get each annexed file that the local repository +does not yet have, and then copies each file to every remote that it is+syncing with. This behavior can be overridden by configuring the preferred+content of a repository. See [git\-annex\-preferred\-content](1)+.IP+.IP "\fB\-\-message=msg\fP"+Use this option to specify a commit message.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-test.1 view
@@ -0,0 +1,28 @@+.TH git-annex-test 1+.SH NAME+git\-annex test \- run built\-in test suite+.PP+.SH SYNOPSIS+git annex test+.PP+.SH DESCRIPTION+This runs git\-annex's built\-in test suite.+.PP+The test suite runs in the \fB.t\fP subdirectory of the current directory+(it refuses to run if \fB.t\fP already exists).+.PP+It can be useful to run the test suite on different filesystems,+or to verify your local installation of git\-annex.+.PP+.SH OPTIONS+There are several options, provided by Haskell's tasty test+framework. Pass \-\-help for details.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-testremote.1 view
@@ -0,0 +1,34 @@+.TH git-annex-testremote 1+.SH NAME+git\-annex testremote \- test transfers to/from a remote+.PP+.SH SYNOPSIS+git annex testremote \fBremote\fP+.PP+.SH DESCRIPTION+This tests a remote by generating some random objects and sending them to+the remote, then redownloading them, removing them from the remote, etc.+.PP+It's safe to run in an existing repository (the repository contents are+not altered), although it may perform expensive data transfers.+.PP+Testing a single remote will use the remote's configuration,+automatically varying the chunk sizes, and with simple shared encryption+enabled and disabled.+.PP+.SH OPTIONS+.IP "\fB\-\-fast\fP"+.IP+Perform a smaller set of tests.+.IP+.IP "\fB\-\-size=NUnits\fP"+Tune the base size of the generated objects. The default is 1MiB.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-transferkey.1 view
@@ -0,0 +1,31 @@+.TH git-annex-transferkey 1+.SH NAME+git\-annex transferkey \- transfers a key from or to a remote+.PP+.SH SYNOPSIS+git annex transferkey \fBkey [\-\-from=remote|\-\-to=remote]\fP+.PP+.SH DESCRIPTION+This plumbing\-level command is used to request a single key be+transferred.+.PP+.SH OPTIONS+.IP "\fB\-\-from=remote\fP"+.IP+Download the content of the key from the remote.+.IP+.IP "\fB\-\-to=remote\fP"+Upload the content of the key to the remote.+.IP+.IP "\fB\-\-file=name\fP"+Provides a hint about the name of the file associated with the key.+(This name is only used in progress displays.)+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-transferkeys.1 view
@@ -0,0 +1,26 @@+.TH git-annex-transferkeys 1+.SH NAME+git\-annex transferkeys \- transfers keys+.PP+.SH SYNOPSIS+git annex transferkeys+.PP+.SH DESCRIPTION+This plumbing\-level command is used by the assistant to transfer data.+It is a long\-running process, which is fed instructions about the keys+to transfer using an internal stdio protocol, which is+intentionally not documented (as it may change at any time).+.PP+It's normal to have a transferkeys process running when the assistant is+running.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-assistant(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-trust.1 view
@@ -0,0 +1,22 @@+.TH git-annex-trust 1+.SH NAME+git\-annex trust \- trust a repository+.PP+.SH SYNOPSIS+git annex trust \fB[repository ...]\fP+.PP+.SH DESCRIPTION+Records that a repository is trusted to not unexpectedly lose+content. Use with care.+.PP+Repositories can be specified using their remote name, their+description, or their UUID. To trust the current repository, use "here".+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-unannex.1 view
@@ -0,0 +1,38 @@+.TH git-annex-unannex 1+.SH NAME+git\-annex unannex \- undo accidential add command+.PP+.SH SYNOPSIS+git annex unannex \fB[path ...]\fP+.PP+.SH DESCRIPTION+Use this to undo an accidental \fBgit annex add\fP command. It puts the+file back how it was before the add.+.PP+Note that for safety, the content of the file remains in the annex,+until you use \fBgit annex unused\fP and \fBgit annex dropunused\fP.+.PP+This is not the command you should use if you intentionally annexed a+file and don't want its contents any more. In that case you should use+\fBgit annex drop\fP instead, and you can also \fBgit rm\fP the file.+.PP+.SH OPTIONS+.IP "\fB\-\-fast\fP"+.IP+Normally this does a slow copy of the file. In \fB\-\-fast\fP mode, it+instead makes a hard link from the file to the content in the annex.+But use \-\-fast mode with caution, because editing the file will+change the content in the annex.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to unannex.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-undo.1 view
@@ -0,0 +1,30 @@+.TH git-annex-undo 1+.SH NAME+git\-annex undo \- undo last change to a file or directory+.PP+.SH SYNOPSIS+git annex \fB[filename|directory] ...\fP+.PP+.SH DESCRIPTION+When passed a filename, undoes the last change that was made to that+file.+.PP+When passed a directory, undoes the last change that was made to the+contents of that directory.+.PP+Running undo a second time will undo the undo, returning the working+tree to the same state it had before. In order for undoing an undo of+staged changes, any staged changes are first committed by the+undo command.+.PP+Note that this does not undo get/drop of a file's content; it only+operates on the file tree committed to git.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-ungroup.1 view
@@ -0,0 +1,18 @@+.TH git-annex-ungroup 1+.SH NAME+git\-annex ungroup \- remove a repository from a group+.PP+.SH SYNOPSIS+git annex ungroup \fBrepository groupname\fP+.PP+.SH DESCRIPTION+Removes a repository from a group.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-uninit.1 view
@@ -0,0 +1,22 @@+.TH git-annex-uninit 1+.SH NAME+git\-annex uninit \- de\-initialize git\-annex and clean out repository+.PP+.SH SYNOPSIS+git annex uninit+.PP+.SH DESCRIPTION+Use this to stop using git annex. It will unannex every file in the+repository, and remove all of git\-annex's other data, leaving you with a+git repository plus the previously annexed files.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-unannex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-unlock.1 view
@@ -0,0 +1,28 @@+.TH git-annex-unlock 1+.SH NAME+git\-annex unlock \- unlock files for modification+.PP+.SH SYNOPSIS+git annex unlock \fB[path ...]\fP+.PP+.SH DESCRIPTION+Normally, the content of annexed files is protected from being changed.+Unlocking an annexed file allows it to be modified. This replaces the+symlink for each specified file with a copy of the file's content.+You can then modify it and \fBgit annex add\fP (or \fBgit commit\fP) to inject+it back into the annex.+.PP+.SH OPTIONS+.IP "file matching options"+.IP+The git\-annex\-matching\-options(1)+can be used to specify files to unlock.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-untrust.1 view
@@ -0,0 +1,22 @@+.TH git-annex-untrust 1+.SH NAME+git\-annex untrust \- do not trust a repository+.PP+.SH SYNOPSIS+git annex untrust \fB[repository ...]\fP+.PP+.SH DESCRIPTION+Records that a repository is not trusted and could lose content+at any time.+.PP+Repositories can be specified using their remote name, their+description, or their UUID. To untrust the current repository, use "here".+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-unused.1 view
@@ -0,0 +1,34 @@+.TH git-annex-unused 1+.SH NAME+git\-annex unused \- look for unused file content+.PP+.SH SYNOPSIS+git annex unused+.PP+.SH DESCRIPTION+Checks the annex for data that does not correspond to any files present+in any tag or branch, and prints a numbered list of the data.+.PP+After running this command, you can use the \fB\-\-unused\fP option with many +other git\-annex commands to operate on all the unused data that was found.+.PP+For example, to move all unused data to origin:+.PP+ git annex unused; git annex move \-\-unused \-\-to origin+.PP+.SH OPTIONS+.IP "\fB\-\-fast\fP"+.IP+Only show unused temp and bad files.+.IP+.IP "\fB\-\-from=remote\fP"+Check for unused data on a remote.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-upgrade.1 view
@@ -0,0 +1,29 @@+.TH git-annex-upgrade 1+.SH NAME+git\-annex upgrade \- upgrade repository layout+.PP+.SH SYNOPSIS+git annex upgrade+.PP+.SH DESCRIPTION+Upgrades the repository to current layout.+.PP+Each git\-annex repository has an annex.version in its git configuration,+that indicates the repository version. If git\-annex changes to a new+layout, you must upgrade the repository before git\-annex can be used in it.+.PP+To see version information, run \fBgit annex version\fP. +.PP+Currently, git\-annex supports upgrades all the way back to version 0, which+was only used by its author. It's expected that git\-annex will always+support upgrading from all past repository versions \-\- this is necessary to+allow archives to be taken offline for years and later used.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-vadd.1 view
@@ -0,0 +1,33 @@+.TH git-annex-vadd 1+.SH NAME+git\-annex vadd \- add subdirs to current view+.PP+.SH SYNOPSIS+git annex vadd \fB[field=glob ...] [field=value ...] [tag ...]\fP+.PP+.SH DESCRIPTION+Changes the current view, adding an additional level of directories+to categorize the files.+.PP+For example, when the view is by author/tag, \fBvadd year=*\fP will+change it to year/author/tag.+.PP+So will \fBvadd year=2014 year=2013\fP, but limiting the years in view+to only those two.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-view(1)+.PP+git\-annex\-vpop(1)+.PP+git\-annex\-vfilter(1)+.PP+git\-annex\-vcycle(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-vcycle.1 view
@@ -0,0 +1,29 @@+.TH git-annex-vcycle 1+.SH NAME+git\-annex vcycle \- switch view to next layout+.PP+.SH SYNOPSIS+git annex vcycle+.PP+.SH DESCRIPTION+When a view involves nested subdirectories, this cycles the order.+.PP+For example, when the view is by year/author/tag, \fBvcycle\fP will switch+it to author/tag/year.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-view(1)+.PP+git\-annex\-vpop(1)+.PP+git\-annex\-vadd(1)+.PP+git\-annex\-vfilter(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-version.1 view
@@ -0,0 +1,27 @@+.TH git-annex-version 1+.SH NAME+git\-annex version \- show version info+.PP+.SH SYNOPSIS+git annex version+.PP+.SH DESCRIPTION+Shows the version of git\-annex, as well as repository version information.+.PP+git\-annex's version is in the form MAJOR.DATE, where MAJOR is a number+like 5, which corresponds to the current repository version, and DATE+is the date of the last release, like 20150320.+.PP+Daily builds of git\-annex will append a "\-gREF" to the version, which+corresponds to the git ref from git\-annex's source repository that was+built. Therefore, "5.20150320\-gdd35cf3" is a daily build, and+"5.20150401" is an April 1st release made a bit later.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-vfilter.1 view
@@ -0,0 +1,27 @@+.TH git-annex-vfilter 1+.SH NAME+git\-annex vfilter \- filter current view+.PP+.SH SYNOPSIS+git annex vfilter \fB[tag ...] [field=value ...] [!tag ...] [field!=value ...]\fP+.PP+.SH DESCRIPTION+Filters the current view to only the files that have the+specified field values and tags.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-view(1)+.PP+git\-annex\-vpop(1)+.PP+git\-annex\-vadd(1)+.PP+git\-annex\-vcycle(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-vicfg.1 view
@@ -0,0 +1,20 @@+.TH git-annex-vicfg 1+.SH NAME+git\-annex vicfg \- edit git\-annex's configuration+.PP+.SH SYNOPSIS+git annex vicfg+.PP+.SH DESCRIPTION+Opens EDITOR on a temp file containing all of git\-annex's global +configuration settings, and when it exits, stores any+changes made back to the git\-annex branch.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-view.1 view
@@ -0,0 +1,48 @@+.TH git-annex-view 1+.SH NAME+git\-annex view \- enter a view branch+.PP+.SH SYNOPSIS+git annex view \fB[tag ...] [field=value ...] [field=glob ...] [!tag ...] [field!=value ...]\fP+.PP+.SH DESCRIPTION+Uses metadata to build a view branch of the files in the current branch,+and checks out the view branch. Only files in the current branch whose+metadata matches all the specified field values and tags will be+shown in the view.+.PP+Multiple values for a metadata field can be specified, either by using+a glob (\fBfield="*"\fP) or by listing each wanted value. The resulting view+will put files in subdirectories according to the value of their fields.+.PP+Once within such a view, you can make additional directories, and+copy or move files into them. When you commit, the metadata will+be updated to correspond to your changes.+.PP+There are fields corresponding to the path to the file. So a file+"foo/bar/baz/file" has fields "/=foo", "foo/=bar", and "foo/bar/=baz".+These location fields can be used the same as other metadata to construct+the view.+.PP+For example, \fB/=podcasts\fP will only include files from the podcasts+directory in the view, while \fBpodcasts/=*\fP will preserve the+subdirectories of the podcasts directory in the view.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-metadata(1)+.PP+git\-annex\-vpop(1)+.PP+git\-annex\-vfilter(1)+.PP+git\-annex\-vadd(1)+.PP+git\-annex\-vcycle(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-vpop.1 view
@@ -0,0 +1,29 @@+.TH git-annex-vpop 1+.SH NAME+git\-annex vpop \- switch back to previous view+.PP+.SH SYNOPSIS+git annex vpop \fB[N]\fP+.PP+.SH DESCRIPTION+Switches from the currently active view back to the previous view.+Or, from the first view back to original branch.+.PP+The optional number tells how many views to pop.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-view(1)+.PP+git\-annex\-vfilter(1)+.PP+git\-annex\-vadd(1)+.PP+git\-annex\-vcycle(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-wanted.1 view
@@ -0,0 +1,26 @@+.TH git-annex-wanted 1+.SH NAME+git\-annex wanted \- get or set preferred content expression+.PP+.SH SYNOPSIS+git annex wanted \fBrepository [expression]\fP+.PP+.SH DESCRIPTION+When run with an expression, configures the content that is preferred+to be held in the archive. See git\-annex\-preferred\-content(1)+.PP+For example:+.PP+ git annex wanted . "include=*.mp3 or include=*.ogg"+.PP+Without an expression, displays the current preferred content setting+of the repository.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-watch.1 view
@@ -0,0 +1,38 @@+.TH git-annex-watch 1+.SH NAME+git\-annex watch \- watch for changes+.PP+.SH SYNOPSIS+git annex watch+.PP+.SH DESCRIPTION+Watches for changes to files in the current directory and its subdirectories,+and takes care of automatically adding new files, as well as dealing with+deleted, copied, and moved files. With this running as a daemon in the+background, you no longer need to manually run git commands when+manipulating your files.+.PP+By default, all files in the directory will be added to the repository.+(Including dotfiles.) To block some files from being added, use+\fB.gitignore\fP files.+.PP+By default, all files that are added are added to the annex, the same+as when you run \fBgit annex add\fP. If you configure annex.largefiles,+files that it does not match will instead be added with \fBgit add\fP.+.PP+.SH OPTIONS+.IP "\fB\-\-foreground\fP"+.IP+Avoid forking to the background.+.IP+.IP "\fB\-\-stop\fP"+Stop a running daemon.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-webapp.1 view
@@ -0,0 +1,44 @@+.TH git-annex-webapp 1+.SH NAME+git\-annex webapp \- launch webapp+.PP+.SH SYNOPSIS+git annex webapp+.PP+.SH DESCRIPTION+Opens a web app, that allows easy setup of a git\-annex repository,+and control of the git\-annex assistant. If the assistant is not+already running, it will be started.+.PP+By default, the webapp can only be accessed from localhost, and running+it opens a browser window.+.PP+.SH OPTIONS+.IP "\fB\-\-listen=address\fP"+.IP+Useful for using the webapp on a remote computer. This makes the webapp+listen on the specified address.+.IP+This disables running a local web browser, and outputs the url you+can use to open the webapp.+.IP+Set annex.listen in the git config to make the webapp always+listen on an address.+.IP+.SH USING HTTPS+When using the webapp on a remote computer, you'll almost certainly+want to enable HTTPS. The webapp will use HTTPS if it finds+a .git/annex/privkey.pem and .git/annex/certificate.pem. Here's+one way to generate those files, using a self\-signed certificate:+.PP+ openssl genrsa \-out .git/annex/privkey.pem 4096+ openssl req \-new \-x509 \-key .git/annex/privkey.pem > .git/annex/certificate.pem+.PP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-whereis.1 view
@@ -0,0 +1,38 @@+.TH git-annex-whereis 1+.SH NAME+git\-annex whereis \- lists repositories that have file content+.PP+.SH SYNOPSIS+git annex whereis \fB[path ...]\fP+.PP+.SH DESCRIPTION+Displays information about where the contents of files are located.+.PP+For example:+.PP+ # git annex whereis+ whereis my_cool_big_file (1 copy)+ 0c443de8\-e644\-11df\-acbf\-f7cd7ca6210d \-\- laptop+ whereis other_file (3 copies)+ 0c443de8\-e644\-11df\-acbf\-f7cd7ca6210d \-\- laptop+ 62b39bbe\-4149\-11e0\-af01\-bb89245a1e61 \-\- usb drive [here]+ 7570b02e\-15e9\-11e0\-adf0\-9f3f94cb2eaa \-\- backup drive+.PP+.SH OPTIONS+.IP "\fB\-\-json\fP"+.IP+Enable JSON output. This is intended to be parsed by programs that use+git\-annex. Each line of output is a JSON object.+.IP+.IP "file matching options"+The git\-annex\-matching\-options(1)+can be used to specify files to act on.+.IP+.SH SEE ALSO+git\-annex(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex-xmppgit.1 view
@@ -0,0 +1,20 @@+.TH git-annex-xmppgit 1+.SH NAME+git\-annex xmppgit \- git to XMPP relay+.PP+.SH SYNOPSIS+git annex xmppgit+.PP+.SH DESCRIPTION+This command is used internally by the assistant to perform git pulls over XMPP.+.PP+.SH SEE ALSO+git\-annex(1)+.PP+git\-annex\-assistant(1)+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+.PP+
+ man/git-annex.1 view
@@ -0,0 +1,1079 @@+.TH git-annex 1+.SH NAME+git\-annex \- manage files with git, without checking their contents in+.PP+.SH SYNOPSIS+git annex command [params ...]+.PP+.SH DESCRIPTION+git\-annex allows managing files with git, without checking the file+contents into git. While that may seem paradoxical, it is useful when+dealing with files larger than git can currently easily handle, whether due+to limitations in memory, checksumming time, or disk space.+.PP+Even without file content tracking, being able to manage files with git,+move files around and delete files with versioned directory trees, and use+branches and distributed clones, are all very handy reasons to use git. And+annexed files can co\-exist in the same git repository with regularly+versioned files, which is convenient for maintaining documents, Makefiles,+etc that are associated with annexed files but that benefit from full+revision control.+.PP+When a file is annexed, its content is moved into a key\-value store, and+a symlink is made that points to the content. These symlinks are checked into+git and versioned like regular files. You can move them around, delete+them, and so on. Pushing to another git repository will make git\-annex+there aware of the annexed file, and it can be used to retrieve its+content from the key\-value store.+.PP+.SH EXAMPLES+ # git annex get video/hackity_hack_and_kaxxt.mov+ get video/hackity_hack_and_kaxxt.mov (not available)+ I was unable to access these remotes: server+ Try making some of these repositories available:+ 5863d8c0\-d9a9\-11df\-adb2\-af51e6559a49 \-\- my home file server+ 58d84e8a\-d9ae\-11df\-a1aa\-ab9aa8c00826 \-\- portable USB drive+ ca20064c\-dbb5\-11df\-b2fe\-002170d25c55 \-\- backup SATA drive+ failed+ # sudo mount /media/usb+ # git remote add usbdrive /media/usb+ # git annex get video/hackity_hack_and_kaxxt.mov+ get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok+ + # git annex add iso+ add iso/Debian_5.0.iso ok+ + # git annex drop iso/Debian_4.0.iso+ drop iso/Debian_4.0.iso ok+ + # git annex move iso \-\-to=usbdrive+ move iso/Debian_5.0.iso (moving to usbdrive...) ok+.PP+.SH COMMONLY USED COMMANDS+Like many git commands, git\-annex can be passed a path that+is either a file or a directory. In the latter case it acts on all relevant+files in the directory. When no path is specified, most git\-annex commands+default to acting on all relevant files in the current directory (and+subdirectories).+.PP+.IP "\fBhelp\fP"+Display built\-in help.+.IP+For help on a specific command, use \fBgit annex help command\fP+.IP+.IP "\fBadd [path ...]\fP"+Adds files in the path to the annex. If no path is specified, adds+files from the current directory and below. +.IP+See git\-annex\-add(1) for details.+.IP+.IP "\fBget [path ...]\fP"+Makes the content of annexed files available in this repository.+.IP+See git\-annex\-get(1) for details.+.IP+.IP "\fBdrop [path ...]\fP"+Drops the content of annexed files from this repository.+.IP+See git\-annex\-drop(1) for details.+.IP+.IP "\fBmove [path ...] [\-\-from=remote|\-\-to=remote]\fP"+Moves the content of files from or to another remote.+.IP+See git\-annex\-move(1) for details.+.IP+.IP "\fBcopy [path ...] [\-\-from=remote|\-\-to=remote]\fP"+Copies the content of files from or to another remote.+.IP+See git\-annex\-copy(1) for details.+.IP+.IP "\fBstatus [path ...]\fP"+Similar to \fBgit status \-\-short\fP, displays the status of the files in the+working tree. Particularly useful in direct mode.+.IP+See git\-annex\-status(1) for details.+.IP+.IP "\fBunlock [path ...]\fP"+Unlock annexed files for modification.+.IP+See git\-annex\-unlock(1) for details.+.IP+.IP "\fBedit [path ...]\fP"+This is an alias for the unlock command. May be easier to remember,+if you think of this as allowing you to edit an annexed file.+.IP+.IP "\fBlock [path ...]\fP"+Use this to undo an unlock command if you don't want to modify+the files, or have made modifications you want to discard.+.IP+See git\-annex\-lock(1) for details.+.IP+.IP "\fBsync [remote ...]\fP"+Synchronize local repository with remotes.+.IP+See git\-annex\-sync(1) for details.+.IP+.IP "\fBmirror [path ...] [\-\-to=remote|\-\-from=remote]\fP"+Mirror content of files to/from another repository.+.IP+See git\-annex\-mirror(1) for details.+.IP+.IP "\fBaddurl [url ...]\fP"+Downloads each url to its own file, which is added to the annex.+.IP+See git\-annex\-addurl(1) for details.+.IP+.IP "\fBrmurl file url\fP"+Record that the file is no longer available at the url.+.IP+See git\-annex\-rmurl(1) for details.+.IP+.IP "\fBimport [path ...]\fP"+Move and add files from outside git working copy into the annex.+.IP+See git\-annex\-import(1) for details.+.IP+.IP "\fBimportfeed [url ...]\fP"+Imports the contents of podcast feeds into the annex.+.IP+See git\-annex\-importfeed(1) for details.+.IP+.IP "\fBundo [filename|directory] ...\fP"+Undo last change to a file or directory.+.IP+See git\-annex\-undo(1) for details.+.IP+.IP "\fBwatch\fP"+Watch for changes and autocommit.+.IP+See git\-annex\-watch(1) for details.+.IP+.IP "\fBassistant\fP"+Atomatically sync folders between devices.+.IP+See git\-annex\-assistant(1) for details.+.IP+.IP "\fBwebapp\fP"+Opens a web app, that allows easy setup of a git\-annex repository,+and control of the git\-annex assistant. If the assistant is not+already running, it will be started.+.IP+See git\-annex\-webapp(1) for details.+.IP+.SH REPOSITORY SETUP COMMANDS+.IP "\fBinit [description]\fP"+.IP+Until a repository (or one of its remotes) has been initialized,+git\-annex will refuse to operate on it, to avoid accidentally+using it in a repository that was not intended to have an annex.+.IP+See git\-annex\-init(1) for details.+.IP+.IP "\fBdescribe repository description\fP"+Changes the description of a repository.+.IP+See git\-annex\-describe(1) for details.+.IP+.IP "\fBinitremote name type=value [param=value ...]\fP"+Creates a new special remote, and adds it to \fB.git/config\fP.+.IP+See git\-annex\-initremote(1) for details.+.IP+.IP "\fBenableremote name [param=value ...]\fP"+Enables use of an existing special remote in the current repository.+.IP+See git\-annex\-enableremote(1) for details.+.IP+.IP "\fBnumcopies [N]\fP"+Configure desired number of copies.+.IP+See git\-annex\-numcopies(1) for details.+.IP+.IP "\fBtrust [repository ...]\fP"+Records that a repository is trusted to not unexpectedly lose+content. Use with care.+.IP+See git\-annex\-trust(1) for details.+.IP+.IP "\fBuntrust [repository ...]\fP"+Records that a repository is not trusted and could lose content+at any time.+.IP+See git\-annex\-untrust(1) for details.+.IP+.IP "\fBsemitrust [repository ...]\fP"+Returns a repository to the default semi trusted state.+.IP+See git\-annex\-semitrust(1) for details.+.IP+.IP "\fBdead [repository ...]\fP"+Indicates that the repository has been irretrievably lost.+.IP+See git\-annex\-dead(1) for details.+.IP+.IP "\fBgroup repository groupname\fP"+Add a repository to a group.+.IP+See git\-annex\-group(1) for details.+.IP+.IP "\fBungroup repository groupname\fP"+Removes a repository from a group.+.IP+See git\-annex\-ungroup(1) for details.+.IP+.IP "\fBwanted repository [expression]\fP"+Get or set preferred content expression.+.IP+See git\-annex\-wanted(1) for details.+.IP+.IP "\fBgroupwanted groupname [expression]\fP"+See git\-annex\-groupwanted(1) for details.+.IP+.IP "\fBschedule repository [expression]\fP"+Get or set scheduled jobs.+.IP+See git\-annex\-schedule(1) for details.+.IP+.IP "\fBvicfg\fP"+Opens EDITOR on a temp file containing most of the above configuration+settings, as well as a few others, and when it exits, stores any changes+made back to the git\-annex branch.+.IP+See git\-annex\-vicfg(1) for details.+.IP+.IP "\fBdirect\fP"+Switches a repository to use direct mode, where rather than symlinks to+files, the files are directly present in the repository.+.IP+See git\-annex\-direct(1) for details.+.IP+.IP "\fBindirect\fP"+Switches a repository back from direct mode to the default, indirect mode.+.IP+See git\-annex\-indirect(1) for details.+.IP+.SH REPOSITORY MAINTENANCE COMMANDS+.IP "\fBfsck [path ...]\fP"+.IP+Checks the annex consistency, and warns about or fixes any problems found. +This is a good complement to \fBgit fsck\fP.+.IP+See git\-annex\-fsck(1) for details.+.IP+.IP "\fBunused\fP"+Checks the annex for data that does not correspond to any files present+in any tag or branch, and prints a numbered list of the data.+.IP+See git\-annex\-unused(1) for details.+.IP+.IP "\fBdropunused [number|range ...]\fP"+Drops the data corresponding to the numbers, as listed by the last+\fBgit annex unused\fP+.IP+See git\-annex\-dropunused(1) for details.+.IP+.IP "\fBaddunused [number|range ...]\fP"+Adds back files for the content corresponding to the numbers or ranges,+as listed by the last \fBgit annex unused\fP.+.IP+See git\-annex\-addunused(1) for details.+.IP+.IP "\fBfix [path ...]\fP"+Fixes up symlinks that have become broken to again point to annexed content.+.IP+See git\-annex\-fix(1) for details.+.IP+.IP "\fBmerge\fP"+Automatically merge changes from remotes.+.IP+See git\-annex\-merge(1) for details.+.IP+.IP "\fBupgrade\fP"+Upgrades the repository to current layout.+.IP+See git\-annex\-upgrade(1) for details.+.IP+.IP "\fBforget\fP"+Causes the git\-annex branch to be rewritten, throwing away historical+data about past locations of files.+.IP+See git\-annex\-forget(1) for details.+.IP+.IP "\fBrepair\fP"+This can repair many of the problems with git repositories that \fBgit fsck\fP+detects, but does not itself fix. It's useful if a repository has become+badly damaged. One way this can happen is if a repository used by git\-annex+is on a removable drive that gets unplugged at the wrong time.+.IP+See git\-annex\-repair(1) for details.+.IP+.SH QUERY COMMANDS+.IP "\fBfind [path ...]\fP"+.IP+Outputs a list of annexed files in the specified path. With no path,+finds files in the current directory and its subdirectories.+.IP+See git\-annex\-find(1) for details.+.IP+.IP "\fBwhereis [path ...]\fP"+Displays information about where the contents of files are located.+.IP+See git\-annex\-whereis(1) for details.+.IP+.IP "\fBlist [path ...]\fP"+Displays a table of remotes that contain the contents of the specified+files. This is similar to whereis but a more compact display.+.IP+See git\-annex\-list(1) for details.+.IP+.IP "\fBlog [path ...]\fP"+Displays the location log for the specified file or files,+showing each repository they were added to ("+") and removed from ("\-").+.IP+See git\-annex\-log(1) for details.+.IP+.IP "\fBinfo [directory|file|remote|uuid ...]\fP"+Displays statistics and other information for the specified item,+which can be a directory, or a file, or a remote, or the uuid of a+repository. +.IP+When no item is specified, displays statistics and information+for the repository as a whole.+.IP+See git\-annex\-info(1) for details.+.IP+.IP "\fBversion\fP"+Shows the version of git\-annex, as well as repository version information.+.IP+See git\-annex\-version(1) for details.+.IP+.IP "\fBmap\fP"+Generate map of repositories.+.IP+See git\-annex\-map(1) for details.+.IP+.SH METADATA COMMANDS+.IP "\fBmetadata [path ...]\fP"+.IP+The content of an annexed file can have any number of metadata fields+attached to it to describe it. Each metadata field can in turn+have any number of values.+.IP+This command can be used to set metadata, or show the currently set+metadata.+.IP+See git\-annex\-metadata(1) for details.+.IP+.IP "\fBview [tag ...] [field=value ...] [field=glob ...] [!tag ...] [field!=value ...]\fP"+Uses metadata to build a view branch of the files in the current branch,+and checks out the view branch. Only files in the current branch whose+metadata matches all the specified field values and tags will be+shown in the view.+.IP+See git\-annex\-view(1) for details.+.IP+.IP "\fBvpop [N]\fP"+Switches from the currently active view back to the previous view.+Or, from the first view back to original branch.+.IP+See git\-annex\-vpop(1) for details.+.IP+.IP "\fBvfilter [tag ...] [field=value ...] [!tag ...] [field!=value ...]\fP"+Filters the current view to only the files that have the+specified field values and tags.+.IP+See git\-annex\-vfilter(1) for details.+.IP+.IP "\fBvadd [field=glob ...] [field=value ...] [tag ...]\fP"+Changes the current view, adding an additional level of directories+to categorize the files.+.IP+See git\-annex\-vfilter(1) for details.+.IP+.IP "\fBvcycle\fP"+When a view involves nested subdirectories, this cycles the order.+.IP+See git\-annex\-vcycle(1) for details.+.IP+.SH UTILITY COMMANDS+.IP "\fBmigrate [path ...]\fP"+.IP+Changes the specified annexed files to use a different key\-value backend.+.IP+See git\-annex\-migrate(1) for details.+.IP+.IP "\fBreinject src dest\fP"+Moves the src file into the annex as the content of the dest file.+This can be useful if you have obtained the content of a file from+elsewhere and want to put it in the local annex.+.IP+See git\-annex\-reinject(1) for details.+.IP+.IP "\fBunannex [path ...]\fP"+Use this to undo an accidental \fBgit annex add\fP command. It puts the+file back how it was before the add.+.IP+See git\-annex\-unannex(1) for details.+.IP+.IP "\fBuninit\fP"+De\-initialize git\-annex and clean out repository.+.IP+See git\-annex\-unannex(1) for details.+.IP+.IP "\fBreinit uuid|description\fP"+Initialize repository, reusing old UUID.+.IP+See git\-annex\-reinit(1) for details.+.IP+.SH PLUMBING COMMANDS+.IP "\fBpre\-commit [path ...]\fP"+.IP+This is meant to be called from git's pre\-commit hook. \fBgit annex init\fP+automatically creates a pre\-commit hook using this.+.IP+See git\-annex\-pre\-commit(1) for details.+.IP+.IP "\fBlookupkey [file ...]\fP"+Looks up key used for file.+.IP+See git\-annex\-lookupkey(1) for details.+.IP+.IP "\fBexaminekey [key ...]\fP"+Print information that can be determined purely by looking at the key.+.IP+See git\-annex\-examinekey(1) for details.+.IP+.IP "\fBfromkey [key file]\fP"+Manually set up a file in the git repository to link to a specified key.+.IP+See git\-annex\-fromkey(1) for details.+.IP+.IP "\fBregisterurl [key url]\fP"+Registers an url for a key.+.IP+See git\-annex\-registerurl(1) for details.+.IP+.IP "\fBdropkey [key ...]\fP"+Drops annexed content for specified keys.+.IP+See git\-annex\-dropkey(1) for details.+.IP+.IP "\fBtransferkey key [\-\-from=remote|\-\-to=remote]\fP"+Transfers a key from or to a remote.+.IP+See git\-annex\-transferkey(1) for details.+.IP+.IP "\fBtransferkeys\fP"+Used internally by the assistant.+.IP+See git\-annex\-transferkey(1) for details.+.IP+.IP "\fBsetpresentkey key uuid [1|0]\fP"+This plumbing\-level command changes git\-annex's records about whether+the specified key's content is present in a remote with the specified uuid.+.IP+See git\-annex\-setpresentkey(1) for details.+.IP+.IP "\fBreadpresentkey key uuid\fP"+Read records of where key is present.+.IP+See git\-annex\-readpresentkey(1) for details.+.IP+.IP "\fBcheckpresentkey key remote\fP"+Check if key is present in remote.+.IP+See git\-annex\-checkpresentkey(1) for details.+.IP+.IP "\fBrekey [file key ...]\fP"+Change keys used for files.+.IP+See git\-annex\-rekey(1) for details.+.IP+.IP "\fBfindref [ref]\fP"+Lists files in a git ref.+.IP+See git\-annex\-findref(1) for details.+.IP+.IP "\fBproxy \-\- git cmd [options]\fP"+Only useful in a direct mode repository, this runs the specified git+command with a temporary work tree, and updates the working tree to+reflect any changes staged or committed by the git command.+.IP+See git\-annex\-proxy(1) for details.+.IP+.IP "\fBresolvemerge\fP"+Resolves a conflicted merge, by adding both conflicting versions of the+file to the tree, using variants of their filename. This is done+automatically when using \fBgit annex sync\fP or \fBgit annex merge\fP.+.IP+See git\-annex\-resolvemerge(1) for details.+.IP+.IP "\fBdiffdriver\fP"+This can be used to make \fBgit diff\fP use an external diff driver with+annexed files.+.IP+See git\-annex\-diffdriver(1) for details.+.IP+.IP "\fBremotedaemon\fP"+Detects when network remotes have received git pushes and fetches from them.+.IP+See git\-annex\-remotedaemon(1) for details.+.IP+.IP "\fBxmppgit\fP"+This command is used internally by the assistant to perform git pulls+over XMPP.+.IP+See git\-annex\-xmppgit(1) for details.+.IP+.SH TESTING COMMANDS+.IP "\fBtest\fP"+.IP+This runs git\-annex's built\-in test suite.+.IP+See git\-annex\-test(1) for details.+.IP+.IP "\fBtestremote remote\fP"+This tests a remote by generating some random objects and sending them to+the remote, then redownloading them, removing them from the remote, etc.+.IP+It's safe to run in an existing repository (the repository contents are+not altered), although it may perform expensive data transfers.+.IP+See git\-annex\-testremote(1) for details.+.IP+.IP "\fBfuzztest\fP"+Generates random changes to files in the current repository,+for use in testing the assistant.+.IP+See git\-annex\-fuzztest(1) for details.+.IP+.SH COMMON OPTIONS+These common options are accepted by all git\-annex commands, and+may not be explicitly listed on their individual man pages.+(Many commands also accept the git\-annex\-matching\-options(1).)+.PP+.IP "\fB\-\-force\fP"+Force unsafe actions, such as dropping a file's content when no other+source of it can be verified to still exist, or adding ignored files.+Use with care.+.IP+.IP "\fB\-\-fast\fP"+Enable less expensive, but also less thorough versions of some commands.+What is avoided depends on the command.+.IP+.IP "\fB\-\-quiet\fP"+Avoid the default verbose display of what is done; only show errors+and progress displays.+.IP+.IP "\fB\-\-verbose\fP"+Enable verbose display.+.IP+.IP "\fB\-\-debug\fP"+Show debug messages.+.IP+.IP "\fB\-\-no\-debug\fP"+Disable debug messages.+.IP+.IP "\fB\-\-numcopies=n\fP"+Overrides the numcopies setting, forcing git\-annex to ensure the+specified number of copies exist.+.IP+Note that setting numcopies to 0 is very unsafe.+.IP+.IP "\fB\-\-time\-limit=time\fP"+Limits how long a git\-annex command runs. The time can be something+like "5h", or "30m" or even "45s" or "10d".+.IP+Note that git\-annex may continue running a little past the specified+time limit, in order to finish processing a file.+.IP+Also, note that if the time limit prevents git\-annex from doing all it+was asked to, it will exit with a special code, 101.+.IP+.IP "\fB\-\-trust=repository\fP"+.IP "\fB\-\-semitrust=repository\fP"+.IP "\fB\-\-untrust=repository\fP"+Overrides trust settings for a repository. May be specified more than once.+.IP+The repository should be specified using the name of a configured remote,+or the UUID or description of a repository.+.IP+.IP "\fB\-\-trust\-glacier\-inventory\fP"+Amazon Glacier inventories take hours to retrieve, and may not represent+the current state of a repository. So git\-annex does not trust that+files that the inventory claims are in Glacier are really there.+This switch can be used to allow it to trust the inventory.+.IP+Be careful using this, especially if you or someone else might have recently+removed a file from Glacier. If you try to drop the only other copy of the+file, and this switch is enabled, you could lose data!+.IP+.IP "\fB\-\-backend=name\fP"+Specifies which key\-value backend to use. This can be used when+adding a file to the annex, or migrating a file. Once files+are in the annex, their backend is known and this option is not+necessary.+.IP+.IP "\fB\-\-user\-agent=value\fP"+Overrides the User\-Agent to use when downloading files from the web.+.IP+.IP "\fB\-\-notify\-finish\fP"+Caused a desktop notification to be displayed after each successful+file download and upload.+.IP+(Only supported on some platforms, e.g. Linux with dbus. A no\-op when+not supported.)+.IP+.IP "\fB\-\-notify\-start\fP"+Caused a desktop notification to be displayed when a file upload+or download has started, or when a file is dropped.+.IP+.IP "\fB\-c name=value\fP"+Overrides git configuration settings. May be specified multiple times.+.IP+.SH CONFIGURATION VIA .git/config+Like other git commands, git\-annex is configured via \fB.git/config\fP.+Here are all the supported configuration settings.+.PP+.IP "\fBannex.uuid\fP"+A unique UUID for this repository (automatically set).+.IP+.IP "\fBannex.backends\fP"+Space\-separated list of names of the key\-value backends to use.+The first listed is used to store new files by default.+.IP+.IP "\fBannex.diskreserve\fP"+Amount of disk space to reserve. Disk space is checked when transferring+content to avoid running out, and additional free space can be reserved+via this option, to make space for more important content (such as git+commit logs). Can be specified with any commonly used units, for example,+"0.5 gb", "500M", or "100 KiloBytes"+.IP+The default reserve is 1 megabyte.+.IP+.IP "\fBannex.largefiles\fP"+Allows configuring which files \fBgit annex add\fP and the assistant consider+to be large enough to need to be added to the annex. By default,+all files are added to the annex.+.IP+The value is a preferred content expression. See PREFERRED CONTENT+for details.+.IP+Example:+.IP+ annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h)+.IP+.IP "\fBannex.numcopies\fP"+This is a deprecated setting. You should instead use the+\fBgit annex numcopies\fP command to configure how many copies of files+are kept across all repositories.+.IP+This config setting is only looked at when \fBgit annex numcopies\fP has+never been configured.+.IP+Note that setting numcopies to 0 is very unsafe.+.IP+.IP "\fBannex.genmetadata\fP"+Set this to \fBtrue\fP to make git\-annex automatically generate some metadata+when adding files to the repository.+.IP+In particular, it stores year and month metadata, from the file's+modification date.+.IP+When importfeed is used, it stores additional metadata from the feed.+.IP+.IP "\fBannex.queuesize\fP"+git\-annex builds a queue of git commands, in order to combine similar+commands for speed. By default the size of the queue is limited to+10240 commands; this can be used to change the size. If you have plenty+of memory and are working with very large numbers of files, increasing+the queue size can speed it up.+.IP+.IP "\fBannex.bloomcapacity\fP"+The \fBgit annex unused\fP command uses a bloom filter to determine+what data is no longer used. The default bloom filter is sized to handle+up to 500000 keys. If your repository is larger than that,+you can adjust this to avoid \fBgit annex unused\fP not noticing some unused+data files. Increasing this will make \fBgit\-annex unused\fP consume more memory;+run \fBgit annex info\fP for memory usage numbers.+.IP+.IP "\fBannex.bloomaccuracy\fP"+Adjusts the accuracy of the bloom filter used by+\fBgit annex unused\fP. The default accuracy is 1000 \-\-+1 unused file out of 1000 will be missed by \fBgit annex unused\fP. Increasing+the accuracy will make \fBgit annex unused\fP consume more memory;+run \fBgit annex info\fP for memory usage numbers.+.IP+.IP "\fBannex.sshcaching\fP"+By default, git\-annex caches ssh connections using ssh's+ControlMaster and ControlPersist settings+(if built using a new enough ssh). To disable this, set to \fBfalse\fP.+.IP+.IP "\fBannex.alwayscommit\fP"+By default, git\-annex automatically commits data to the git\-annex branch+after each command is run. If you have a series+of commands that you want to make a single commit, you can+run the commands with \fB\-c annex.alwayscommit=false\fP. You can later+commit the data by running \fBgit annex merge\fP (or by automatic merges)+or \fBgit annex sync\fP.+.IP+.IP "\fBannex.hardlink\fP"+Set this to \fBtrue\fP to make file contents be hard linked into the+repository when possible, instead of a more expensive copy.+.IP+Use with caution \-\- This can invalidate numcopies counting, since+with hard links, fewer copies of a file can exist. So, it is a good+idea to mark a repository using this setting as untrusted.+.IP+When a repository is set up using \fBgit clone \-\-shared\fP, git\-annex init+will automatically set annex.hardlink and mark the repository as+untrusted.+.IP+.IP "\fBannex.delayadd\fP"+Makes the watch and assistant commands delay for the specified number of+seconds before adding a newly created file to the annex. Normally this+is not needed, because they already wait for all writers of the file+to close it. On Mac OSX, when not using direct mode this defaults to+1 second, to work around a bad interaction with software there.+.IP+.IP "\fBannex.expireunused\fP"+Controls what the assistant does about unused file contents+that are stored in the repository.+.IP+The default is \fBfalse\fP, which causes+all old and unused file contents to be retained, unless the assistant+is able to move them to some other repository (such as a backup repository).+.IP+Can be set to a time specification, like "7d" or "1m", and then+file contents that have been known to be unused for a week or a+month will be deleted.+.IP+.IP "\fBannex.fscknudge\fP"+When set to false, prevents the webapp from reminding you when using+repositories that lack consistency checks.+.IP+.IP "\fBannex.autoupgrade\fP"+When set to ask (the default), the webapp will check for new versions+and prompt if they should be upgraded to. When set to true, automatically+upgrades without prompting (on some supported platforms). When set to+false, disables any upgrade checking.+.IP+Note that upgrade checking is only done when git\-annex is installed+from one of the prebuilt images from its website. This does not+bypass e.g., a Linux distribution's own upgrade handling code.+.IP+This setting also controls whether to restart the git\-annex assistant+when the git\-annex binary is detected to have changed. That is useful+no matter how you installed git\-annex.+.IP+.IP "\fBannex.autocommit\fP"+Set to false to prevent the git\-annex assistant from automatically+committing changes to files in the repository.+.IP+.IP "\fBannex.startupscan\fP"+Set to false to prevent the git\-annex assistant from scanning the+repository for new and changed files on startup. This will prevent it+from noticing changes that were made while it was not running, but can be+a useful performance tweak for a large repository.+.IP+.IP "\fBannex.listen\fP"+Configures which address the webapp listens on. The default is localhost.+Can be either an IP address, or a hostname that resolves to the desired+address.+.IP+.IP "\fBannex.debug\fP"+Set to true to enable debug logging by default.+.IP+.IP "\fBannex.version\fP"+Automatically maintained, and used to automate upgrades between versions.+.IP+.IP "\fBannex.direct\fP"+Set to true when the repository is in direct mode. Should not be set+manually; use the "git annex direct" and "git annex indirect" commands+instead.+.IP+.IP "\fBannex.crippledfilesystem\fP"+Set to true if the repository is on a crippled filesystem, such as FAT,+which does not support symbolic links, or hard links, or unix permissions.+This is automatically probed by "git annex init".+.IP+.IP "\fBremote.<name>.annex\-cost\fP"+When determining which repository to+transfer annexed files from or to, ones with lower costs are preferred.+The default cost is 100 for local repositories, and 200 for remote+repositories.+.IP+.IP "\fBremote.<name>.annex\-cost\-command\fP"+If set, the command is run, and the number it outputs is used as the cost.+This allows varying the cost based on e.g., the current network. The+cost\-command can be any shell command line.+.IP+.IP "\fBremote.<name>.annex\-start\-command\fP"+A command to run when git\-annex begins to use the remote. This can+be used to, for example, mount the directory containing the remote.+.IP+The command may be run repeatedly when multiple git\-annex processes+are running concurrently.+.IP+.IP "\fBremote.<name>.annex\-stop\-command\fP"+A command to run when git\-annex is done using the remote.+.IP+The command will only be run once *all* running git\-annex processes+are finished using the remote.+.IP+.IP "\fBremote.<name>.annex\-shell\fP"+Specify an alternative git\-annex\-shell executable on the remote+instead of looking for "git\-annex\-shell" on the PATH.+.IP+This is useful if the git\-annex\-shell program is outside the PATH+or has a non\-standard name.+.IP+.IP "\fBremote.<name>.annex\-ignore\fP"+If set to \fBtrue\fP, prevents git\-annex+from storing file contents on this remote by default.+(You can still request it be used by the \fB\-\-from\fP and \fB\-\-to\fP options.)+.IP+This is, for example, useful if the remote is located somewhere+without git\-annex\-shell. (For example, if it's on GitHub).+Or, it could be used if the network connection between two+repositories is too slow to be used normally.+.IP+This does not prevent git\-annex sync (or the git\-annex assistant) from+syncing the git repository to the remote.+.IP+.IP "\fBremote.<name>.annex\-sync\fP"+If set to \fBfalse\fP, prevents git\-annex sync (and the git\-annex assistant)+from syncing with this remote.+.IP+.IP "\fBremote.<name>.annex\-readonly\fP"+If set to \fBtrue\fP, prevents git\-annex from making changes to a remote.+This both prevents git\-annex sync from pushing changes, and prevents+storing or removing files from read\-only remote.+.IP+.IP "\fBremote.<name>.annexUrl\fP"+Can be used to specify a different url than the regular \fBremote.<name>.url\fP+for git\-annex to use when talking with the remote. Similar to the \fBpushUrl\fP+used by git\-push.+.IP+.IP "\fBremote.<name>.annex\-uuid\fP"+git\-annex caches UUIDs of remote repositories here.+.IP+.IP "\fBremote.<name>.annex\-trustlevel\fP"+Configures a local trust level for the remote. This overrides the value+configured by the trust and untrust commands. The value can be any of+"trusted", "semitrusted" or "untrusted".+.IP+.IP "\fBremote.<name>.annex\-availability\fP"+Can be used to tell git\-annex whether a remote is LocallyAvailable+or GloballyAvailable. Normally, git\-annex determines this automatically.+.IP+.IP "\fBremote.<name>.annex\-bare\fP"+Can be used to tell git\-annex if a remote is a bare repository+or not. Normally, git\-annex determines this automatically.+.IP+.IP "\fBremote.<name>.annex\-ssh\-options\fP"+Options to use when using ssh to talk to this remote.+.IP+.IP "\fBremote.<name>.annex\-rsync\-options\fP"+Options to use when using rsync+to or from this remote. For example, to force ipv6, and limit+the bandwidth to 100Kbyte/s, set it to \fB\-6 \-\-bwlimit 100\fP+.IP+.IP "\fBremote.<name>.annex\-rsync\-upload\-options\fP"+Options to use when using rsync to upload a file to a remote.+.IP+These options are passed after other applicable rsync options,+so can be used to override them. For example, to limit upload bandwidth+to 10Kbyte/s, set \fB\-\-bwlimit 10\fP.+.IP+.IP "\fBremote.<name>.annex\-rsync\-download\-options\fP"+Options to use when using rsync to download a file from a remote.+.IP+These options are passed after other applicable rsync options,+so can be used to override them.+.IP+.IP "\fBremote.<name>.annex\-rsync\-transport\fP"+The remote shell to use to connect to the rsync remote. Possible+values are \fBssh\fP (the default) and \fBrsh\fP, together with their+arguments, for instance \fBssh \-p 2222 \-c blowfish\fP; Note that the+remote hostname should not appear there, see rsync(1) for details.+When the transport used is \fBssh\fP, connections are automatically cached+unless \fBannex.sshcaching\fP is unset.+.IP+.IP "\fBremote.<name>.annex\-bup\-split\-options\fP"+Options to pass to bup split when storing content in this remote.+For example, to limit the bandwidth to 100Kbyte/s, set it to \fB\-\-bwlimit 100k\fP+(There is no corresponding option for bup join.)+.IP+.IP "\fBremote.<name>.annex\-gnupg\-options\fP"+Options to pass to GnuPG for symmetric encryption. For instance, to+use the AES cipher with a 256 bits key and disable compression, set it+to \fB\-\-cipher\-algo AES256 \-\-compress\-algo none\fP. (These options take+precedence over the default GnuPG configuration, which is otherwise+used.)+.IP+.IP "\fBannex.ssh\-options\fP, \fBannex.rsync\-options\fP,"+\fBannex.rsync\-upload\-options\fP, \fBannex.rsync\-download\-options\fP,+\fBannex.bup\-split\-options\fP, \fBannex.gnupg\-options\fP+.IP+Default options to use if a remote does not have more specific options+as described above.+.IP+.IP "\fBannex.web\-options\fP"+Options to pass when running wget or curl.+For example, to force ipv4 only, set it to "\-4"+.IP+.IP "\fBannex.quvi\-options\fP"+Options to pass to quvi when using it to find the url to download for a+video.+.IP+.IP "\fBannex.aria\-torrent\-options\fP"+Options to pass to aria2c when using it to download a torrent.+.IP+.IP "\fBannex.http\-headers\fP"+HTTP headers to send when downloading from the web. Multiple lines of+this option can be set, one per header.+.IP+.IP "\fBannex.http\-headers\-command\fP"+If set, the command is run and each line of its output is used as a HTTP+header. This overrides annex.http\-headers.+.IP+.IP "\fBannex.web\-download\-command\fP"+Use to specify a command to run to download a file from the web.+(The default is to use wget or curl.)+.IP+In the command line, %url is replaced with the url to download,+and %file is replaced with the file that it should be saved to.+.IP+.IP "\fBannex.secure\-erase\-command\fP"+This can be set to a command that should be run whenever git\-annex+removes the content of a file from the repository.+.IP+In the command line, %file is replaced with the file that should be+erased.+.IP+For example, to use the wipe command, set it to \fBwipe \-f %file\fP.+.IP+.IP "\fBremote.<name>.rsyncurl\fP"+Used by rsync special remotes, this configures+the location of the rsync repository to use. Normally this is automatically+set up by \fBgit annex initremote\fP, but you can change it if needed.+.IP+.IP "\fBremote.<name>.buprepo\fP"+Used by bup special remotes, this configures+the location of the bup repository to use. Normally this is automatically+set up by \fBgit annex initremote\fP, but you can change it if needed.+.IP+.IP "\fBremote.<name>.ddarrepo\fP"+Used by ddar special remotes, this configures+the location of the ddar repository to use. Normally this is automatically+set up by \fBgit annex initremote\fP, but you can change it if needed.+.IP+.IP "\fBremote.<name>.directory\fP"+Used by directory special remotes, this configures+the location of the directory where annexed files are stored for this+remote. Normally this is automatically set up by \fBgit annex initremote\fP,+but you can change it if needed.+.IP+.IP "\fBremote.<name>.s3\fP"+Used to identify Amazon S3 special remotes.+Normally this is automatically set up by \fBgit annex initremote\fP.+.IP+.IP "\fBremote.<name>.glacier\fP"+Used to identify Amazon Glacier special remotes.+Normally this is automatically set up by \fBgit annex initremote\fP.+.IP+.IP "\fBremote.<name>.webdav\fP"+Used to identify webdav special remotes.+Normally this is automatically set up by \fBgit annex initremote\fP.+.IP+.IP "\fBremote.<name>.tahoe\fP"+Used to identify tahoe special remotes.+Points to the configuration directory for tahoe.+.IP+.IP "\fBremote.<name>.annex\-xmppaddress\fP"+Used to identify the XMPP address of a Jabber buddy.+Normally this is set up by the git\-annex assistant when pairing over XMPP.+.IP+.IP "\fBremote.<name>.gcrypt\fP"+Used to identify gcrypt special remotes.+Normally this is automatically set up by \fBgit annex initremote\fP.+.IP+It is set to "true" if this is a gcrypt remote.+If the gcrypt remote is accessible over ssh and has git\-annex\-shell+available to manage it, it's set to "shell".+.IP+.IP "\fBremote.<name>.hooktype\fP, \fBremote.<name>.externaltype\fP"+Used by hook special remotes and external special remotes to record+the type of the remote.+.IP+.IP "\fBannex.tune.objecthash1\fP, \fBannex.tune.objecthashlower\fP, \fBannex.tune.branchhash1\fP"+These can be passed to \fBgit annex init\fP to tune the repository.+They cannot be safely changed in a running repository.+For details, see <http://git\-annex.branchable.com/tuning/>.+.IP+.SH CONFIGURATION VIA .gitattributes+The key\-value backend used when adding a new file to the annex can be+configured on a per\-file\-type basis via \fB.gitattributes\fP files. In the file,+the \fBannex.backend\fP attribute can be set to the name of the backend to+use. For example, this here's how to use the WORM backend by default,+but the SHA256E backend for ogg files:+.PP+ * annex.backend=WORM+ *.ogg annex.backend=SHA256E+.PP+The numcopies setting can also be configured on a per\-file\-type basis via+the \fBannex.numcopies\fP attribute in \fB.gitattributes\fP files. This overrides+other numcopies settings.+For example, this makes two copies be needed for wav files and 3 copies+for flac files:+.PP+ *.wav annex.numcopies=2+ *.flac annex.numcopies=3+.PP+Note that setting numcopies to 0 is very unsafe.+.PP+These settings are honored by git\-annex whenever it's operating on a+matching file. However, when using \-\-all, \-\-unused, or \-\-key to specify+keys to operate on, git\-annex is operating on keys and not files, so will+not honor the settings from .gitattributes.+.PP+Also note that when using views, only the toplevel .gitattributes file is+preserved in the view, so other settings in other files won't have any+effect.+.PP+.SH FILES+These files are used by git\-annex:+.PP+\fB.git/annex/objects/\fP in your git repository contains the annexed file+contents that are currently available. Annexed files in your git+repository symlink to that content.+.PP+\fB.git/annex/\fP in your git repository contains other run\-time information+used by git\-annex.+.PP+\fB~/.config/git\-annex/autostart\fP is a list of git repositories+to start the git\-annex assistant in.+.PP+\fB.git/hooks/pre\-commit\-annex\fP in your git repository will be run whenever+a commit is made to the HEAD branch, either by git commit, git\-annex+sync, or the git\-annex assistant.+.PP+\fB.git/hooks/post\-update\-annex\fP in your git repository will be run+whenever the git\-annex branch is updated. You can make this hook run+\fBgit update\-server\-info\fP when publishing a git\-annex repository by http.+.PP+.SH SEE ALSO+More git\-annex documentation is available on its web site,+<http://git\-annex.branchable.com/>+.PP+If git\-annex is installed from a package, a copy of its documentation+should be included, in, for example, \fB/usr/share/doc/git\-annex/\fP.+.PP+.SH AUTHOR+Joey Hess <id@joeyh.name>+.PP+<http://git\-annex.branchable.com/>+.PP+.PP+
standalone/linux/skel/git-annex view
@@ -28,4 +28,7 @@ export GIT_ANNEX_APP_BASE fi +GIT_ANNEX_PROGRAMPATH="$0"+export GIT_ANNEX_PROGRAMPATH+ exec "$base/runshell" git-annex "$@"
standalone/windows/build-simple.sh view
@@ -1,7 +1,5 @@ #!/bin/sh # Script to build git-annex on windows. Run by build.bat-# Does not currently build the NSIS installer. See build.sh for how to do-# that. set -e set -x@@ -23,6 +21,7 @@ # Install haskell dependencies. # cabal install is not run in cygwin, because we don't want configure scripts # for haskell libraries to link them with the cygwin library.+cabal update || true cabal install --only-dependencies || true # Build git-annex