From 559162273127be23727afa26a13bc96b4954a93b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 20 Dec 2019 13:17:28 -0400 Subject: [PATCH] git-annex-config --set/--unset: No longer change the local git config setting e53070c1f quietly made it set the local git config too, but that was never documented anywhere, and it had surprising results. If I set annex.largefiles globally in a repo, I would expect to be able to change it in another repo, and the original repo would get the change and use it, rather than being stuck on the old value set there. And, if I have a local annex.largefiles and set a different global default, I'd be surprised to have my local setting overwritten. annex.securehashesonly does need to be set locally, since it's a security feature and the global is only a default until it gets set locally. So special cased. --- CHANGELOG | 2 ++ Command/Config.hs | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7d40230ff9..b4d11b4c96 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,6 +11,8 @@ git-annex (7.20191219) UNRELEASED; urgency=medium to more easily set a default that will also be used by clones, without needing to shoehorn the expression into the gitattributes file. The git config and gitattributes override that. + * git-annex-config --set/--unset: No longer change the local git config + setting, except for in the special case of annex.securehashesonly. -- Joey Hess Wed, 18 Dec 2019 15:12:40 -0400 diff --git a/Command/Config.hs b/Command/Config.hs index fb64dfdf90..79c78a1685 100644 --- a/Command/Config.hs +++ b/Command/Config.hs @@ -5,6 +5,8 @@ - Licensed under the GNU AGPL version 3 or higher. -} +{-# LANGUAGE OverloadedStrings #-} + module Command.Config where import Command @@ -54,12 +56,14 @@ seek :: Action -> CommandSeek seek (SetConfig ck@(ConfigKey name) val) = commandAction $ startingUsualMessages (decodeBS' name) (ActionItemOther (Just (fromConfigValue val))) $ do setGlobalConfig ck val - setConfig ck (fromConfigValue val) + when (needLocalUpdate ck) $ + setConfig ck (fromConfigValue val) next $ return True seek (UnsetConfig ck@(ConfigKey name)) = commandAction $ startingUsualMessages (decodeBS' name) (ActionItemOther (Just "unset")) $do unsetGlobalConfig ck - unsetConfig ck + when (needLocalUpdate ck) $ + unsetConfig ck next $ return True seek (GetConfig ck) = commandAction $ startingCustomOutput (ActionItemOther Nothing) $ do @@ -67,3 +71,7 @@ seek (GetConfig ck) = commandAction $ Nothing -> return () Just (ConfigValue v) -> liftIO $ S8.putStrLn v next $ return True + +needLocalUpdate :: ConfigKey -> Bool +needLocalUpdate (ConfigKey "annex.securehashesonly") = True +needLocalUpdate _ = False