analysis of regression and fix related less serious regression

This commit is contained in:
Joey Hess 2020-06-16 15:16:36 -04:00
parent 5b8933b914
commit 4773713cc9
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 20 additions and 1 deletions

View file

@ -42,6 +42,9 @@ git-annex (8.20200523) UNRELEASED; urgency=medium
* checkpresentkey: When no remote is specified, try all remotes, not
only ones that the location log says contain the key. This is what
the documentation has always said it did.
* Fix regression in external special remote handling: GETCONFIG did not
return a value that was set with SETCONFIG immediately before.
(Regression introduced in version 7.20200202.7)
-- Joey Hess <id@joeyh.name> Tue, 26 May 2020 10:20:52 -0400

View file

@ -414,7 +414,11 @@ handleRequest' st external req mp responsehandler
(Accepted setting)
(RemoteConfigValue (PassedThrough value))
m
in ParsedRemoteConfig m' c
c' = M.insert
(Accepted setting)
(Accepted value)
c
in ParsedRemoteConfig m' c'
modifyTVar' (externalConfigChanges st) $ \f ->
f . M.insert (Accepted setting) (Accepted value)
handleRemoteRequest (GETCONFIG setting) = do

View file

@ -7,4 +7,16 @@ Confirmed this bug. This feels like it should trigger a release, as it
could break existing workflows in a surprising way, and even maybe result
in data loss if the user was relying on git-annex embedding the creds and
didn't otherwise have a way to get them.
The cause is that there's a externalConfigChanges that SETCONFIG
updates, but SETCREDS does not, instead it swap in a new externalConfig.
But that externalConfig is not examined when extracting the config changes
to store in remote.log, because the types don't match up any longer.
So, SETCREDS needs to also update externalConfigChanges.
Related reversion: When SETCONFIG is used, followed by GETCONFIG
of the same value, it does not return the value. This doesn't affect
SETCONFIG at init time followed by GETCONFIG later, so it's unlikely to
affect anything, but it's still wrong, and so I've fixed it.
"""]]