enableremote: Avoid overwriting existing git remote when passed the uuid of a special...
authorJoey Hess <joeyh@joeyh.name>
Fri, 22 Sep 2023 17:29:48 +0000 (13:29 -0400)
committerJoey Hess <joeyh@joeyh.name>
Fri, 22 Sep 2023 17:29:48 +0000 (13:29 -0400)
CHANGELOG
Command/EnableRemote.hs
doc/bugs/git-annex-enableremote_confusing_behavior_when_there_is_a_git_remote_with_same_name_as_special_remote.mdwn
doc/bugs/git-annex-enableremote_confusing_behavior_when_there_is_a_git_remote_with_same_name_as_special_remote/comment_1_7f28aecc6ecefd7d47979f73330759d2._comment [new file with mode: 0644]

index 0923922b43f40d376efbb6c527b4ca711ceffd9b..ef2765a7738104a4b8630e417d3980ec8c274729 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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
 
index 9f364c19c91db2e67edad6b274eb18681707433e..4d04610cdd1c5e2597a21c82290b39b9f57edf6a 100644 (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
 
index d6d51ed563c18b3c6445bf3d13691e9a72c35bd1..84ac671cee36b8ffbdb46428aa19ea4b51530ad9 100644 (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]]
diff --git a/doc/bugs/git-annex-enableremote_confusing_behavior_when_there_is_a_git_remote_with_same_name_as_special_remote/comment_1_7f28aecc6ecefd7d47979f73330759d2._comment b/doc/bugs/git-annex-enableremote_confusing_behavior_when_there_is_a_git_remote_with_same_name_as_special_remote/comment_1_7f28aecc6ecefd7d47979f73330759d2._comment
new file mode 100644 (file)
index 0000000..d70e000
--- /dev/null
@@ -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"
+"""]]