From 2e984c51b65165e79c2fcd5212712ac4e73850de Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 16 May 2023 16:25:23 -0400 Subject: [PATCH] sync --no-pull and --no-push affect download and upload of content The man page is somewhat vague about this, but I do think it was a bug that these options didn't alreay behave that way. The options are documented to disable imports and exports, which is the same operations just with a special remote that uses trees. The real motivation for this is that I'm adding git-annex pull and git-annex push, and I want these options to turn off the equivilant of those commands. And git-annex pull will certianly download and push upload. Sponsored-by: Nicholas Golder-Manning on Patreon --- CHANGELOG | 6 ++++-- Command/Sync.hs | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d4064e6059..ec018fb3b2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -49,8 +49,10 @@ git-annex (10.20230408) UNRELEASED; urgency=medium * reinject: Fix support for operating on multiple pairs of files and keys. * importfeed: Support -J * importfeed: Support --json-progress - * sync: Fix bug that made --no-pull, rather than --no-push prevent - exporting trees to special remotes. + * sync: Fix buggy handling of --no-pull and --no-push when syncing + --content. With --no-pull, avoid downloading content, and with + --no-push avoid uploading content. This was done before, but + inconsistently. * uninit: Avoid buffering the names of all annexed files in memory. -- Joey Hess Sat, 08 Apr 2023 13:57:18 -0400 diff --git a/Command/Sync.hs b/Command/Sync.hs index 1a570a3780..def9bef8fe 100644 --- a/Command/Sync.hs +++ b/Command/Sync.hs @@ -866,7 +866,8 @@ syncFile ebloom rs af k = do return (got || not (null putrs)) where wantget have inhere = allM id - [ pure (not $ null have) + [ pure (maybe True pullOption o) + , pure (not $ null have) , pure (not inhere) , wantGet True (Just k) af ] @@ -879,6 +880,7 @@ syncFile ebloom rs af k = do next $ return True wantput r + | pushOption o = Just False = return False | Remote.readonly r || remoteAnnexReadOnly (Remote.gitconfig r) = return False | isThirdPartyPopulated r = return False | otherwise = wantGetBy True (Just k) af (Remote.uuid r)