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
This commit is contained in:
Joey Hess 2023-05-16 16:25:23 -04:00
parent 212442dd9b
commit 2e984c51b6
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 7 additions and 3 deletions

View file

@ -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 <id@joeyh.name> Sat, 08 Apr 2023 13:57:18 -0400

View file

@ -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)