git-annex 10.20220322 → 10.20220504
raw patch · 28 files changed
+176/−93 lines, 28 files
Files
- Annex/Drop.hs +3/−3
- Annex/NumCopies.hs +6/−6
- Assistant/Threads/Merger.hs +9/−2
- Assistant/WebApp/Configurators/Preferences.hs +1/−1
- CHANGELOG +21/−0
- COPYRIGHT +1/−1
- CmdLine/GitAnnex/Options.hs +2/−2
- Command/Drop.hs +1/−1
- Command/Fsck.hs +7/−7
- Command/MinCopies.hs +1/−1
- Command/Multicast.hs +1/−1
- Command/NumCopies.hs +3/−7
- Command/Vicfg.hs +1/−1
- Git/Repair.hs +22/−11
- Limit.hs +2/−2
- Logs/NumCopies.hs +4/−4
- Remote/GCrypt.hs +2/−1
- Remote/Rsync.hs +22/−5
- Test.hs +6/−1
- Test/Framework.hs +9/−11
- Types/Export.hs +1/−1
- Types/GitConfig.hs +2/−1
- Types/NumCopies.hs +17/−3
- Utility/Tmp/Dir.hs +5/−3
- doc/git-annex-config.mdwn +24/−12
- doc/git-annex-forget.mdwn +2/−0
- doc/git-annex.mdwn +0/−4
- git-annex.cabal +1/−1
Annex/Drop.hs view
@@ -70,10 +70,10 @@ - will surely fail. -} checkcopies (have, numcopies, mincopies, _untrusted) Nothing =- NumCopies have > numcopies && MinCopies have > mincopies+ have > fromNumCopies numcopies && have > fromMinCopies mincopies checkcopies (have, numcopies, mincopies, untrusted) (Just u)- | S.member u untrusted = NumCopies have >= numcopies && MinCopies have >= mincopies- | otherwise = NumCopies have > numcopies && MinCopies have > mincopies+ | S.member u untrusted = have >= fromNumCopies numcopies && have >= fromMinCopies mincopies+ | otherwise = have > fromNumCopies numcopies && have > fromMinCopies mincopies decrcopies (have, numcopies, mincopies, untrusted) Nothing = (have - 1, numcopies, mincopies, untrusted)
Annex/NumCopies.hs view
@@ -43,10 +43,10 @@ import Data.Typeable defaultNumCopies :: NumCopies-defaultNumCopies = NumCopies 1+defaultNumCopies = configuredNumCopies 1 defaultMinCopies :: MinCopies-defaultMinCopies = MinCopies 1+defaultMinCopies = configuredMinCopies 1 fromSourcesOr :: v -> [Annex (Maybe v)] -> Annex v fromSourcesOr v = fromMaybe v <$$> getM id@@ -178,8 +178,8 @@ getNumMinCopiesAttr file = checkAttrs ["annex.numcopies", "annex.mincopies"] file >>= \case (n:m:[]) -> return- ( NumCopies <$> readish n- , MinCopies <$> readish m+ ( configuredNumCopies <$> readish n+ , configuredMinCopies <$> readish m ) _ -> error "internal" @@ -197,8 +197,8 @@ numCopiesCheck' :: RawFilePath -> (Int -> Int -> v) -> [UUID] -> Annex v numCopiesCheck' file vs have = do- NumCopies needed <- fst <$> getFileNumMinCopies file- return $ length have `vs` needed+ needed <- fst <$> getFileNumMinCopies file+ return $ length have `vs` fromNumCopies needed data UnVerifiedCopy = UnVerifiedRemote Remote | UnVerifiedHere deriving (Ord, Eq)
Assistant/Threads/Merger.hs view
@@ -1,6 +1,6 @@ {- git-annex assistant git merge thread -- - Copyright 2012-2017 Joey Hess <id@joeyh.name>+ - Copyright 2012-2021 Joey Hess <id@joeyh.name> - - Licensed under the GNU AGPL version 3 or higher. -}@@ -17,6 +17,7 @@ import Utility.DirWatcher.Types import Utility.Directory.Create import Annex.CurrentBranch+import Assistant.Commits import qualified Annex import qualified Annex.Branch import qualified Git@@ -83,7 +84,7 @@ mergecurrent = mergecurrent' =<< liftAnnex getCurrentBranch mergecurrent' currbranch@(Just b, _)- | changedbranch `isRelatedTo` b =+ | changedbranch `isRelatedTo` b = do whenM (liftAnnex $ inRepo $ Git.Branch.changed b changedbranch) $ do debug [ "merging", Git.fromRef changedbranch@@ -99,6 +100,12 @@ def cmode changedbranch+ recordCommit+ | changedbranch == b =+ -- Record commit so the pusher pushes it out.+ -- This makes sure pushes happen when+ -- annex.autocommit=false+ recordCommit mergecurrent' _ = noop {- Is the first branch a synced branch or remote tracking branch related
Assistant/WebApp/Configurators/Preferences.hs view
@@ -85,7 +85,7 @@ storePrefs :: PrefsForm -> Annex () storePrefs p = do setConfig (annexConfig "diskreserve") (T.unpack $ diskReserve p)- setGlobalNumCopies (NumCopies $ numCopies p)+ setGlobalNumCopies (configuredNumCopies $ numCopies p) unsetConfig (annexConfig "numcopies") -- deprecated setConfig (annexConfig "autoupgrade") (fromAutoUpgrade $ autoUpgrade p) unlessM ((==) <$> pure (autoStart p) <*> inAutoStartFile) $ do
CHANGELOG view
@@ -1,3 +1,24 @@+git-annex (10.20220504) upstream; urgency=medium++ * Ignore annex.numcopies set to 0 in gitattributes or git config,+ or by git-annex numcopies or by --numcopies, since that+ configuration would make git-annex easily lose data. + Same for mincopies.+ * assistant: When annex.autocommit is set, notice commits that+ the user makes manually, and push them out to remotes promptly.+ * multicast: Support uftp 5.0 by switching from aes256-cbc to+ aes256-gcm.+ * Fix test failure on NFS when cleaning up gpg temp directory.+ * Fix a build failure with ghc 9.2.2.+ Thanks, gnezdo for the patch.+ * rsync 3.2.4 broke backwards-compatability by preventing exposing+ filenames to the shell. Made the rsync and gcrypt special remotes+ detect this and disable shellescape. Closes: #1010397+ * repair: Avoid treating refs/annex/last-index or other refs that+ are not commit objects as evidence of repository corruption.++ -- Joey Hess <id@joeyh.name> Wed, 04 May 2022 11:45:27 -0400+ git-annex (10.20220322) upstream; urgency=medium * Directory special remotes with importtree=yes have changed to once more
COPYRIGHT view
@@ -48,7 +48,7 @@ License: AGPL-3+ Files: Utility/*-Copyright: 2012-2019 Joey Hess <id@joeyh.name>+Copyright: 2012-2022 Joey Hess <id@joeyh.name> License: BSD-2-clause Files: doc/logo* */favicon.ico standalone/osx/git-annex.app/Contents/Resources/git-annex.icns
CmdLine/GitAnnex/Options.hs view
@@ -100,8 +100,8 @@ ) ] where- setnumcopies n = Annex.changeState $ \s -> s { Annex.forcenumcopies = Just $ NumCopies n }- setmincopies n = Annex.changeState $ \s -> s { Annex.forcemincopies = Just $ MinCopies n }+ setnumcopies n = Annex.changeState $ \s -> s { Annex.forcenumcopies = Just $ configuredNumCopies n }+ setmincopies n = Annex.changeState $ \s -> s { Annex.forcemincopies = Just $ configuredMinCopies n } setuseragent v = Annex.changeState $ \s -> s { Annex.useragent = Just v } setgitconfig v = Annex.addGitConfigOverride v setdesktopnotify v = Annex.changeState $ \s -> s { Annex.desktopnotify = Annex.desktopnotify s <> v }
Command/Drop.hs view
@@ -252,7 +252,7 @@ uuid <- getUUID let remoteuuid = fromMaybe uuid $ Remote.uuid <$> mremote locs' <- trustExclude UnTrusted $ filter (/= remoteuuid) locs- if NumCopies (length locs') >= numcopies+ if length locs' >= fromNumCopies numcopies then a numcopies mincopies else stop | otherwise = a numcopies mincopies
Command/Fsck.hs view
@@ -517,8 +517,8 @@ locs <- loggedLocations key (untrustedlocations, otherlocations) <- trustPartition UnTrusted locs (deadlocations, safelocations) <- trustPartition DeadTrusted otherlocations- let present = NumCopies (length safelocations)- if present < numcopies+ let present = length safelocations+ if present < fromNumCopies numcopies then ifM (pure (not hasafile) <&&> checkDead key) ( do showLongNote $ "This key is dead, skipping."@@ -527,21 +527,21 @@ untrusted <- Remote.prettyPrintUUIDs "untrusted" untrustedlocations dead <- Remote.prettyPrintUUIDs "dead" deadlocations warning $ missingNote desc present numcopies untrusted dead- when (fromNumCopies present == 0 && not hasafile) $+ when (present == 0 && not hasafile) $ showLongNote "(Avoid this check by running: git annex dead --key )" return False ) else return True -missingNote :: String -> NumCopies -> NumCopies -> String -> String -> String-missingNote file (NumCopies 0) _ [] dead = +missingNote :: String -> Int -> NumCopies -> String -> String -> String+missingNote file 0 _ [] dead = "** No known copies exist of " ++ file ++ honorDead dead-missingNote file (NumCopies 0) _ untrusted dead =+missingNote file 0 _ untrusted dead = "Only these untrusted locations may have copies of " ++ file ++ "\n" ++ untrusted ++ "Back it up to trusted locations with git-annex copy." ++ honorDead dead missingNote file present needed [] _ =- "Only " ++ show (fromNumCopies present) ++ " of " ++ show (fromNumCopies needed) ++ + "Only " ++ show present ++ " of " ++ show (fromNumCopies needed) ++ " trustworthy copies exist of " ++ file ++ "\nBack it up with git-annex copy." missingNote file present needed untrusted dead =
Command/MinCopies.hs view
@@ -32,7 +32,7 @@ startSet :: Int -> CommandStart startSet n = startingUsualMessages "mincopies" ai si $ do- setGlobalMinCopies $ MinCopies n+ setGlobalMinCopies $ configuredMinCopies n next $ return True where ai = ActionItemOther (Just $ show n)
Command/Multicast.hs view
@@ -152,7 +152,7 @@ let ps = -- Force client authentication. [ Param "-c"- , Param "-Y", Param "aes256-cbc"+ , Param "-Y", Param "aes256-gcm" , Param "-h", Param "sha512" -- Picked ecdh_ecdsa for perfect forward secrecy, -- and because a EC key exchange algorithm is
Command/NumCopies.hs view
@@ -8,7 +8,6 @@ module Command.NumCopies where import Command-import qualified Annex import Annex.NumCopies cmd :: Command@@ -28,11 +27,8 @@ Nothing -> giveup $ "Bad number: " ++ s Just n | n > 0 -> startset n- | n == 0 -> ifM (Annex.getState Annex.force)- ( startset n- , giveup $ "Setting " ++ setting ++ " to 0 is very unsafe. You will lose data! If you really want to do that, specify --force."- )- | otherwise -> giveup "Number cannot be negative!"+ | n == 0 -> giveup $ "Cannot set " ++ setting ++ " to 0."+ | otherwise -> giveup $ setting ++ " cannot be negative!" start' _ _ _ _ = giveup "Specify a single number." startGet :: CommandStart@@ -50,7 +46,7 @@ startSet :: Int -> CommandStart startSet n = startingUsualMessages "numcopies" ai si $ do- setGlobalNumCopies $ NumCopies n+ setGlobalNumCopies $ configuredNumCopies n next $ return True where ai = ActionItemOther (Just $ show n)
Command/Vicfg.hs view
@@ -315,7 +315,7 @@ in Right $ cfg { cfgGlobalConfigs = m } | setting == "numcopies" = case readish val of Nothing -> Left "parse error (expected an integer)"- Just n -> Right $ cfg { cfgNumCopies = Just (NumCopies n) }+ Just n -> Right $ cfg { cfgNumCopies = Just (configuredNumCopies n) } | otherwise = badval "setting" setting where u = toUUID f
Git/Repair.hs view
@@ -325,7 +325,11 @@ - the commit. Also adds to a set of commit shas that have been verified to - be good, which can be passed into subsequent calls to avoid - redundant work when eg, chasing down branches to find the first- - uncorrupted commit. -}+ - uncorrupted commit.+ -+ - When the sha is not a commit but some other git object, returns+ - true, but does not add it to the set.+ -} verifyCommit :: MissingObjects -> GoodCommits -> Sha -> Repo -> IO (Bool, GoodCommits) verifyCommit missing goodcommits commit r | checkGoodCommit commit goodcommits = return (True, goodcommits)@@ -337,16 +341,23 @@ , Param (fromRef commit) ] r let committrees = map (parse . decodeBL) ls- if any isNothing committrees || null committrees- then do- void cleanup- return (False, goodcommits)- else do- let cts = catMaybes committrees- ifM (cleanup <&&> check cts)- ( return (True, addGoodCommits (map fst cts) goodcommits)- , return (False, goodcommits)- )+ -- git log on an object that is not a commit will+ -- succeed without any output+ if null committrees+ then ifM cleanup+ ( return (True, goodcommits)+ , return (False, goodcommits)+ )+ else if any isNothing committrees+ then do+ void cleanup+ return (False, goodcommits)+ else do+ let cts = catMaybes committrees+ ifM (cleanup <&&> check cts)+ ( return (True, addGoodCommits (map fst cts) goodcommits)+ , return (False, goodcommits)+ ) where parse l = case words l of (commitsha:treesha:[]) -> (,)
Limit.hs view
@@ -397,7 +397,7 @@ Nothing -> Left "bad value for number of lacking copies" where go mi needed notpresent key = do- NumCopies numcopies <- if approx+ numcopies <- if approx then approxNumCopies else case mi of MatchingFile fi -> getGlobalFileNumCopies $@@ -406,7 +406,7 @@ MatchingUserInfo {} -> approxNumCopies us <- filter (`S.notMember` notpresent) <$> (trustExclude UnTrusted =<< Remote.keyLocations key)- return $ numcopies - length us >= needed+ return $ fromNumCopies numcopies - length us >= needed approxNumCopies = fromMaybe defaultNumCopies <$> getGlobalNumCopies {- Match keys that are unused.
Logs/NumCopies.hs view
@@ -24,12 +24,12 @@ import Logs.SingleValue instance SingleValueSerializable NumCopies where- serialize (NumCopies n) = encodeBS (show n)- deserialize = NumCopies <$$> readish . decodeBS+ serialize = encodeBS . show . fromNumCopies+ deserialize = configuredNumCopies <$$> readish . decodeBS instance SingleValueSerializable MinCopies where- serialize (MinCopies n) = encodeBS (show n)- deserialize = MinCopies <$$> readish . decodeBS+ serialize = encodeBS . show . fromMinCopies+ deserialize = configuredMinCopies <$$> readish . decodeBS setGlobalNumCopies :: NumCopies -> Annex () setGlobalNumCopies new = do
Remote/GCrypt.hs view
@@ -130,7 +130,8 @@ cst <- remoteCost gc $ if repoCheap r then nearlyCheapRemoteCost else expensiveRemoteCost let (rsynctransport, rsyncurl, accessmethod) = rsyncTransportToObjects r gc- let rsyncopts = Remote.Rsync.genRsyncOpts c gc rsynctransport rsyncurl+ protectsargs <- liftIO Remote.Rsync.probeRsyncProtectsArgs+ let rsyncopts = Remote.Rsync.genRsyncOpts protectsargs c gc rsynctransport rsyncurl let this = Remote { uuid = u , cost = cst
Remote/Rsync.hs view
@@ -16,7 +16,8 @@ withRsyncScratchDir, rsyncRemoteConfigs, genRsyncOpts,- RsyncOpts+ RsyncOpts,+ probeRsyncProtectsArgs, ) where import Annex.Common@@ -36,6 +37,7 @@ import Crypto import Utility.Rsync import Utility.CopyFile+import Utility.Process.Transcript import Messages.Progress import Utility.Metered import Types.Transfer@@ -74,7 +76,8 @@ cst <- remoteCost gc expensiveRemoteCost (transport, url) <- rsyncTransport gc $ fromMaybe (giveup "missing rsyncurl") $ remoteAnnexRsyncUrl gc- let o = genRsyncOpts c gc transport url+ protectsargs <- liftIO probeRsyncProtectsArgs+ let o = genRsyncOpts protectsargs c gc transport url let islocal = rsyncUrlIsPath $ rsyncUrl o return $ Just $ specialRemote c (fileStorer $ store o)@@ -124,6 +127,18 @@ , remoteStateHandle = rs } +-- | Since 3.2.4, rsync protects filenames from being exposed to the shell.+newtype RsyncProtectsArgs = RsyncProtectsArgs Bool++probeRsyncProtectsArgs :: IO RsyncProtectsArgs+probeRsyncProtectsArgs = do+ (helpoutput, _) <- processTranscript "rsync" ["--help"] Nothing+ -- The --old-args option was added to disable the new arg+ -- protection, so use it to detect when that feature is supported+ -- by rsync, rather than parsing versions.+ return (RsyncProtectsArgs $ "--old-args" `isInfixOf` helpoutput)++ -- Things used by genRsyncOpts rsyncRemoteConfigs :: [RemoteConfigFieldParser] rsyncRemoteConfigs = @@ -131,15 +146,17 @@ (FieldDesc "set to no to avoid usual shell escaping (not recommended)") ] -genRsyncOpts :: ParsedRemoteConfig -> RemoteGitConfig -> Annex [CommandParam] -> RsyncUrl -> RsyncOpts-genRsyncOpts c gc transport url = RsyncOpts+genRsyncOpts :: RsyncProtectsArgs -> ParsedRemoteConfig -> RemoteGitConfig -> Annex [CommandParam] -> RsyncUrl -> RsyncOpts+genRsyncOpts (RsyncProtectsArgs protectsargs) c gc transport url = RsyncOpts { rsyncUrl = url , rsyncOptions = appendtransport $ opts [] , rsyncUploadOptions = appendtransport $ opts (remoteAnnexRsyncUploadOptions gc) , rsyncDownloadOptions = appendtransport $ opts (remoteAnnexRsyncDownloadOptions gc)- , rsyncShellEscape = fromMaybe True (getRemoteConfigValue shellEscapeField c)+ , rsyncShellEscape = if protectsargs+ then False+ else fromMaybe True (getRemoteConfigValue shellEscapeField c) } where appendtransport l = (++ l) <$> transport
Test.hs view
@@ -1794,7 +1794,12 @@ -- it needs to be able to store the agent socket there, -- which can be problimatic when testing some filesystems. absgpgtmp <- fromRawFilePath <$> absPath (toRawFilePath gpgtmp)- testscheme' scheme absgpgtmp+ res <- testscheme' scheme absgpgtmp+ -- gpg may still be running and would prevent+ -- removeDirectoryRecursive from succeeding, so+ -- force removal of the temp directory.+ liftIO $ removeDirectoryForCleanup gpgtmp+ return res testscheme' scheme absgpgtmp = intmpclonerepo $ do -- Since gpg uses a unix socket, which is limited to a -- short path, use whichever is shorter of absolute
Test/Framework.hs view
@@ -743,18 +743,16 @@ nvar <- newTVarIO (1, length ts) exitcodes <- forConcurrently [1..numjobs] $ \_ -> worker [] nvar runone- let exitcodes' = concat exitcodes unless (keepFailuresOption opts) finalCleanup- if all (== ExitSuccess) exitcodes'- then exitSuccess- else case (filter (/= ExitFailure 1) exitcodes') of- [] -> do- putStrLn " (Failures above could be due to a bug in git-annex, or an incompatibility"- putStrLn " with utilities, such as git, installed on this system.)"- exitFailure- v -> do- putStrLn $ " Test subprocesses exited with unexpected exit codes: " ++ show v- exitFailure+ case nub (filter (/= ExitSuccess) (concat exitcodes)) of+ [] -> exitSuccess+ [ExitFailure 1] -> do+ putStrLn " (Failures above could be due to a bug in git-annex, or an incompatibility"+ putStrLn " with utilities, such as git, installed on this system.)"+ exitFailure+ _ -> do+ putStrLn $ " Test subprocesses exited with unexpected exit codes: " ++ show (concat exitcodes)+ exitFailure go (Just subenvval) = case readish subenvval of Nothing -> error ("Bad " ++ subenv) Just (n, crippledfilesystem, adjustedbranchok) -> isolateGitConfig $ do
Types/Export.hs view
@@ -21,7 +21,7 @@ import Utility.Split import Utility.FileSystemEncoding -import Data.ByteString.Short as S+import qualified Data.ByteString.Short as S import qualified System.FilePath.Posix as Posix import GHC.Generics import Control.DeepSeq
Types/GitConfig.hs view
@@ -148,7 +148,8 @@ extractGitConfig configsource r = GitConfig { annexVersion = RepoVersion <$> getmayberead (annexConfig "version") , annexUUID = hereuuid- , annexNumCopies = NumCopies <$> getmayberead (annexConfig "numcopies")+ , annexNumCopies = configuredNumCopies+ <$> getmayberead (annexConfig "numcopies") , annexDiskReserve = fromMaybe onemegabyte $ readSize dataUnits =<< getmaybe (annexConfig "diskreserve") , annexDirect = getbool (annexConfig "direct") False
Types/NumCopies.hs view
@@ -1,14 +1,16 @@ {- git-annex numcopies types -- - Copyright 2014-2021 Joey Hess <id@joeyh.name>+ - Copyright 2014-2022 Joey Hess <id@joeyh.name> - - Licensed under the GNU AGPL version 3 or higher. -} module Types.NumCopies (- NumCopies(..),+ NumCopies,+ configuredNumCopies, fromNumCopies,- MinCopies(..),+ MinCopies,+ configuredMinCopies, fromMinCopies, VerifiedCopy(..), checkVerifiedCopy,@@ -38,11 +40,23 @@ newtype NumCopies = NumCopies Int deriving (Ord, Eq, Show) +-- Smart constructor; prevent configuring numcopies to 0 which would+-- cause data loss.+configuredNumCopies :: Int -> NumCopies+configuredNumCopies n+ | n > 0 = NumCopies n+ | otherwise = NumCopies 1+ fromNumCopies :: NumCopies -> Int fromNumCopies (NumCopies n) = n newtype MinCopies = MinCopies Int deriving (Ord, Eq, Show)++configuredMinCopies :: Int -> MinCopies+configuredMinCopies n+ | n > 0 = MinCopies n+ | otherwise = MinCopies 1 fromMinCopies :: MinCopies -> Int fromMinCopies (MinCopies n) = n
Utility/Tmp/Dir.hs view
@@ -1,6 +1,6 @@ {- Temporary directories -- - Copyright 2010-2013 Joey Hess <id@joeyh.name>+ - Copyright 2010-2022 Joey Hess <id@joeyh.name> - - License: BSD-2-clause -}@@ -63,8 +63,10 @@ -- after a process has just written to it and exited. -- Because it's crap, presumably. So, ignore failure -- to delete the temp directory.- _ <- tryIO $ removeDirectoryRecursive tmpdir+ _ <- tryIO $ go tmpdir return () #else- removeDirectoryRecursive tmpdir+ go tmpdir #endif+ where+ go = removeDirectoryRecursive
doc/git-annex-config.mdwn view
@@ -31,23 +31,23 @@ * `annex.largefiles` - Used to configure which files are large enough to be added to the annex.- It is an expression that matches the large files, eg- "`include=*.mp3 or largerthan(500kb)`".- See [[git-annex-matching-expression]](1) for details on the syntax.+ Used to configure which files are large enough to be added to the annex.+ It is an expression that matches the large files, eg+ "`include=*.mp3 or largerthan(500kb)`".+ See [[git-annex-matching-expression]](1) for details on the syntax. - This sets a default, which can be overridden by annex.largefiles- attributes in `.gitattributes` files, or by `git config`.+ This sets a default, which can be overridden by annex.largefiles+ attributes in `.gitattributes` files, or by `git config`. * `annex.dotfiles` - Normally, dotfiles are assumed to be files like .gitignore,- whose content should always be part of the git repository, so - they will not be added to the annex. Setting annex.dotfiles to true- makes dotfiles be added to the annex the same as any other file. + Normally, dotfiles are assumed to be files like .gitignore,+ whose content should always be part of the git repository, so + they will not be added to the annex. Setting annex.dotfiles to true+ makes dotfiles be added to the annex the same as any other file. - This sets a default, which can be overridden by annex.dotfiles- in `git config`.+ This sets a default, which can be overridden by annex.dotfiles+ in `git config`. * `annex.addunlocked` @@ -66,6 +66,9 @@ Set to false to prevent the `git-annex assistant` and `git-annex sync` from automatically committing changes to files in the repository.+ + This sets a default, which can be overridden by annex.autocommit+ in `git config`. * `annex.resolvemerge` @@ -73,15 +76,24 @@ being automatically resolved by the `git-annex assitant`, `git-annex sync`, `git-annex merge`, and the `git-annex post-receive` hook.+ + This sets a default, which can be overridden by annex.resolvemerge+ in `git config`. * `annex.synccontent` Set to true to make git-annex sync default to syncing annexed content.+ + This sets a default, which can be overridden by annex.synccontent+ in `git config`. * `annex.synconlyannex` Set to true to make git-annex sync default to only sync the git-annex branch and annexed content.+ + This sets a default, which can be overridden by annex.synconlyannex+ in `git config`. * `annex.securehashesonly`
doc/git-annex-forget.mdwn view
@@ -32,6 +32,8 @@ [[git-annex]](1) +[[git-annex-dead]](1)+ [[git-annex-filter-branch]](1) # AUTHOR
doc/git-annex.mdwn view
@@ -932,8 +932,6 @@ never been configured, and when there's no annex.numcopies setting in the .gitattributes file. - Note that setting numcopies to 0 is very unsafe.- * `annex.genmetadata` Set this to `true` to make git-annex automatically generate some metadata@@ -1880,8 +1878,6 @@ *.wav annex.numcopies=2 *.flac annex.numcopies=3--Note that setting numcopies or mincopies 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
git-annex.cabal view
@@ -1,5 +1,5 @@ Name: git-annex-Version: 10.20220322+Version: 10.20220504 Cabal-Version: >= 1.10 License: AGPL-3 Maintainer: Joey Hess <id@joeyh.name>