diff --git a/doc/todo/assure_correct_names___40__and_values__41___for_special_remotes_parameters/comment_1_63d48db769863cdfe411404e8c26a399._comment b/doc/todo/assure_correct_names___40__and_values__41___for_special_remotes_parameters/comment_1_63d48db769863cdfe411404e8c26a399._comment new file mode 100644 index 0000000000..a3e2d62db4 --- /dev/null +++ b/doc/todo/assure_correct_names___40__and_values__41___for_special_remotes_parameters/comment_1_63d48db769863cdfe411404e8c26a399._comment @@ -0,0 +1,30 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2020-01-06T16:12:01Z" + content=""" +There's a subtle backwards compatibility issue here: The stored config of a +special remote is used when enabling it, so if an older version of +git-annex is used to enable a remote, there might be a setting that it does +not know about, or a value it doesn't understand. If that caused it to fail +to enable the remote it wouldn't be possible to use it, at least w/o +changing/removing the config. + +For example, autoenable=true did not used to be a config setting, but older +versions of git-annex can still use remotes that have that. + +Another example is chunk=. While older versions of git-annex don't +understand that, and so won't use chunks when storing/retrieving, +the newer git-annex falls back to getting the unchunked object. +So things stored by the old git-annex can be retrieved by the new, +but not vice-versa. + +Another example is S3's storageclass=. Older git-annex doesn't understand +it, so uses the default storage class, but that behavior is interoperable +with the new behavior. + +So the stored config of a remote should not be checked +everytime the remote is instantiated, but only the new settings passed +to initremote/enableremote. That will complicate the API, since currently +the old and new config are combined together by enableremote. +"""]]