sync: Started transition to --content being enabled by default
When used without --content or --no-content, warn about the upcoming transition, and suggest using one of the options, or setting annex.synccontent. Sponsored-by: Brett Eisenberg on Patreon
This commit is contained in:
parent
af6b73a7e6
commit
f93a7fce1d
4 changed files with 44 additions and 13 deletions
|
@ -57,8 +57,12 @@ git-annex (10.20230408) UNRELEASED; urgency=medium
|
|||
--content. With --no-pull, avoid downloading content, and with
|
||||
--no-push avoid uploading content. This was done before, but
|
||||
inconsistently.
|
||||
* sync: Added -g as a short option for --no-content.
|
||||
* uninit: Avoid buffering the names of all annexed files in memory.
|
||||
* sync: Started a transition to --content being enabled by default.
|
||||
When used without --content or --no-content, warn about the upcoming
|
||||
transition, and suggest using one of the options, or setting
|
||||
annex.synccontent.
|
||||
* sync: Added -g as a short option for --no-content.
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Sat, 08 Apr 2023 13:57:18 -0400
|
||||
|
||||
|
|
|
@ -106,8 +106,8 @@ data SyncOptions = SyncOptions
|
|||
, messageOption :: Maybe String
|
||||
, pullOption :: Bool
|
||||
, pushOption :: Bool
|
||||
, contentOption :: Bool
|
||||
, noContentOption :: Bool
|
||||
, contentOption :: Maybe Bool
|
||||
, noContentOption :: Maybe Bool
|
||||
, contentOfOption :: [FilePath]
|
||||
, cleanupOption :: Bool
|
||||
, keyOptions :: Maybe KeyOptions
|
||||
|
@ -126,8 +126,8 @@ instance Default SyncOptions where
|
|||
, messageOption = Nothing
|
||||
, pullOption = False
|
||||
, pushOption = False
|
||||
, contentOption = False
|
||||
, noContentOption = False
|
||||
, contentOption = Just False
|
||||
, noContentOption = Just False
|
||||
, contentOfOption = []
|
||||
, cleanupOption = False
|
||||
, keyOptions = Nothing
|
||||
|
@ -175,15 +175,15 @@ optParser mode desc = SyncOptions
|
|||
)
|
||||
PullMode -> pure False
|
||||
PushMode -> pure True
|
||||
<*> switch
|
||||
<*> optional (flag' True
|
||||
( long "content"
|
||||
<> help "transfer annexed file contents"
|
||||
)
|
||||
<*> switch
|
||||
))
|
||||
<*> optional (flag' True
|
||||
( long "no-content"
|
||||
<> short 'g'
|
||||
<> help "do not transfer annexed file contents"
|
||||
)
|
||||
))
|
||||
<*> many (strOption
|
||||
( long "content-of"
|
||||
<> short 'C'
|
||||
|
@ -236,9 +236,11 @@ instance DeferredParseClass SyncOptions where
|
|||
|
||||
seek :: SyncOptions -> CommandSeek
|
||||
seek o = do
|
||||
warnSyncContentTransition o
|
||||
|
||||
prepMerge
|
||||
startConcurrency transferStages (seek' o)
|
||||
|
||||
|
||||
seek' :: SyncOptions -> CommandSeek
|
||||
seek' o = do
|
||||
let withbranch a = a =<< getCurrentBranch
|
||||
|
@ -1038,11 +1040,11 @@ cleanupRemote remote (Just b, _) =
|
|||
|
||||
shouldSyncContent :: SyncOptions -> Annex Bool
|
||||
shouldSyncContent o
|
||||
| noContentOption o = pure False
|
||||
| fromMaybe False (noContentOption o) = pure False
|
||||
-- For git-annex pull and git-annex push,
|
||||
-- annex.syncontent defaults to True unless set
|
||||
| operationMode o /= SyncMode = annexsynccontent True
|
||||
| contentOption o || not (null (contentOfOption o)) = pure True
|
||||
| fromMaybe False (contentOption o) || not (null (contentOfOption o)) = pure True
|
||||
-- For git-annex sync,
|
||||
-- annex.syncontent defaults to False unless set
|
||||
| otherwise = annexsynccontent False <||> onlyAnnex o
|
||||
|
@ -1053,6 +1055,24 @@ shouldSyncContent o
|
|||
HasGitConfig (Just c) -> return c
|
||||
_ -> return d
|
||||
|
||||
-- Transition started May 2023, should wait until that has been in a Debian
|
||||
-- stable release before completing the transition.
|
||||
warnSyncContentTransition :: SyncOptions -> Annex ()
|
||||
warnSyncContentTransition o
|
||||
| operationMode o /= SyncMode = noop
|
||||
| isJust (noContentOption o) || isJust (contentOption o) = noop
|
||||
| not (null (contentOfOption o)) = noop
|
||||
| otherwise = getGitConfigVal' annexSyncContent >>= \case
|
||||
HasGlobalConfig (Just _) -> noop
|
||||
HasGitConfig (Just _) -> noop
|
||||
_ -> showwarning
|
||||
where
|
||||
showwarning = earlyWarning $
|
||||
"git-annex sync will change default behavior to operate on"
|
||||
<> " --content in a future version of git-annex. Recommend"
|
||||
<> " you explicitly use --no-content (or -g) to prepare for"
|
||||
<> " that change. (Or you can configure annex.synccontent)"
|
||||
|
||||
notOnlyAnnex :: SyncOptions -> Annex Bool
|
||||
notOnlyAnnex o = not <$> onlyAnnex o
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ previously been added to the repository. Then it does the equivilant of
|
|||
[[git-annex-pull]](1) followed by [[git-annex-push]](1).
|
||||
|
||||
However, unlike those commands, this command does not transfer annexed
|
||||
content by default. This may change in a future version of git-annex.
|
||||
content by default. That will change in a future version of git-annex,
|
||||
|
||||
# OPTIONS
|
||||
|
||||
|
|
|
@ -10,3 +10,10 @@ version.
|
|||
after upgrading to the repo version that enables this. Depending on the
|
||||
timing of v11, this may need to be put in a v12 upgrade that is delayed
|
||||
some amount of time (eg 1 year) after v11.
|
||||
|
||||
* Finish the transition of git-annex sync defaulting to --content.
|
||||
A warning was added in May 2023 when it's run in a way that will change
|
||||
behavior. It would be good to wait until all git-annex users have
|
||||
gotten the version with the warning, and used it for a while,
|
||||
before finishing the transition. This does not need to be tied to a
|
||||
repository version change really, but it would be reasonable to do so.
|
||||
|
|
Loading…
Reference in a new issue