enableremote: Avoid overwriting existing git remote when passed the uuid of a specialremote that was earlier initialized with the same name

This commit is contained in:
Joey Hess 2023-09-22 13:29:48 -04:00
parent 80ee107880
commit 41f4d0bda9
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
4 changed files with 32 additions and 0 deletions

View file

@ -13,6 +13,8 @@ git-annex (10.20230829) UNRELEASED; urgency=medium
before updating export remotes.
* lookupkey: Added --ref option.
* Support being built with crypton rather than cryptonite.
* enableremote: Avoid overwriting existing git remote when passed the uuid
of a specialremote that was earlier initialized with the same name.
-- Joey Hess <id@joeyh.name> Mon, 28 Aug 2023 13:10:17 -0400

View file

@ -99,6 +99,16 @@ startSpecialRemote' _ _ _ _ _ =
performSpecialRemote :: PerformSpecialRemote
performSpecialRemote t u oldc c gc mcu = do
-- Avoid enabling a special remote if there is another remote
-- with the same name.
case SpecialRemote.lookupName c of
Nothing -> noop
Just name -> do
rs <- Remote.remoteList
case filter (\rmt -> Remote.name rmt == name) rs of
(rmt:_) | Remote.uuid rmt /= u ->
giveup $ "Not overwriting currently configured git remote named \"" ++ name ++ "\""
_ -> noop
(c', u') <- R.setup t (R.Enable oldc) (Just u) Nothing c gc
next $ cleanupSpecialRemote t u' c' mcu

View file

@ -9,3 +9,5 @@ annex-uuid and adding whatever other git configs the special remote uses.
(initremote does check if there's already a remote with the same name, and
refuses to overwrite it).
> [[fixed|done]] --[[Joey]]

View file

@ -0,0 +1,18 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2023-09-22T17:05:28Z"
content="""
The behavior in the first case has changed, it now displays:
enableremote (normal) foo ok
And the normal git remote is left as-is. Which seems more or less
reasonable.
The behavior in the second case (passing the uuid) is still as described.
I've fixed that to instead fail with:
git-annex: Not overwriting currently configured git remote named "foo"
"""]]