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:
parent
80ee107880
commit
41f4d0bda9
4 changed files with 32 additions and 0 deletions
|
@ -13,6 +13,8 @@ git-annex (10.20230829) UNRELEASED; urgency=medium
|
||||||
before updating export remotes.
|
before updating export remotes.
|
||||||
* lookupkey: Added --ref option.
|
* lookupkey: Added --ref option.
|
||||||
* Support being built with crypton rather than cryptonite.
|
* 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
|
-- Joey Hess <id@joeyh.name> Mon, 28 Aug 2023 13:10:17 -0400
|
||||||
|
|
||||||
|
|
|
@ -99,6 +99,16 @@ startSpecialRemote' _ _ _ _ _ =
|
||||||
|
|
||||||
performSpecialRemote :: PerformSpecialRemote
|
performSpecialRemote :: PerformSpecialRemote
|
||||||
performSpecialRemote t u oldc c gc mcu = do
|
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
|
(c', u') <- R.setup t (R.Enable oldc) (Just u) Nothing c gc
|
||||||
next $ cleanupSpecialRemote t u' c' mcu
|
next $ cleanupSpecialRemote t u' c' mcu
|
||||||
|
|
||||||
|
|
|
@ -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
|
(initremote does check if there's already a remote with the same name, and
|
||||||
refuses to overwrite it).
|
refuses to overwrite it).
|
||||||
|
|
||||||
|
> [[fixed|done]] --[[Joey]]
|
||||||
|
|
|
@ -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"
|
||||||
|
"""]]
|
Loading…
Reference in a new issue