enableremote: Remove annex-ignore configuration from a remote.
This commit is contained in:
parent
b33a649a25
commit
1b3bde0625
5 changed files with 34 additions and 17 deletions
|
@ -22,6 +22,7 @@ git-annex (6.20160512) UNRELEASED; urgency=medium
|
|||
* enableremote: Can now be used to explicitly enable git-annex to use
|
||||
git remotes. Using the command this way prevents other git-annex
|
||||
commands from probing new git remotes to auto-enable them.
|
||||
* enableremote: Remove annex-ignore configuration from a remote.
|
||||
* Support building with ghc 8.0.1.
|
||||
* Pass the various gnupg-options configs to gpg in several cases where
|
||||
they were not before. Most notably, gnupg-decrypt-options is now
|
||||
|
|
|
@ -11,13 +11,14 @@ import Command
|
|||
import qualified Annex
|
||||
import qualified Logs.Remote
|
||||
import qualified Types.Remote as R
|
||||
import qualified Git.Types as Git
|
||||
import qualified Git
|
||||
import qualified Annex.SpecialRemote
|
||||
import qualified Remote
|
||||
import qualified Types.Remote as Remote
|
||||
import qualified Remote.Git
|
||||
import Logs.UUID
|
||||
import Annex.UUID
|
||||
import Config
|
||||
|
||||
import qualified Data.Map as M
|
||||
|
||||
|
@ -45,9 +46,10 @@ startNormalRemote :: RemoteName -> Git.Repo -> CommandStart
|
|||
startNormalRemote name r = do
|
||||
showStart "enableremote" name
|
||||
next $ next $ do
|
||||
setRemoteIgnore r False
|
||||
r' <- Remote.Git.configRead False r
|
||||
u <- getRepoUUID r'
|
||||
return (u /= NoUUID)
|
||||
return $ u /= NoUUID
|
||||
|
||||
startSpecialRemote :: RemoteName -> Remote.RemoteConfig -> Maybe (UUID, Remote.RemoteConfig) -> CommandStart
|
||||
startSpecialRemote name config Nothing = do
|
||||
|
@ -74,6 +76,10 @@ performSpecialRemote t u c gc = do
|
|||
cleanupSpecialRemote :: UUID -> R.RemoteConfig -> CommandCleanup
|
||||
cleanupSpecialRemote u c = do
|
||||
Logs.Remote.configSet u c
|
||||
mr <- Remote.byUUID u
|
||||
case mr of
|
||||
Nothing -> noop
|
||||
Just r -> setRemoteIgnore (R.repo r) False
|
||||
return True
|
||||
|
||||
unknownNameError :: String -> Annex a
|
||||
|
@ -85,8 +91,12 @@ unknownNameError prefix = do
|
|||
else Remote.prettyPrintUUIDsDescs
|
||||
"known special remotes"
|
||||
descm (M.keys m)
|
||||
nouuids <- filterM (\r -> (==) NoUUID <$> getRepoUUID r)
|
||||
=<< Annex.fromRepo Git.remotes
|
||||
let nouuidmsg = unlines $ map ("\t" ++) $
|
||||
mapMaybe Git.remoteName nouuids
|
||||
error $ concat $ filter (not . null) [prefix ++ "\n", nouuidmsg, specialmsg]
|
||||
disabledremotes <- filterM isdisabled =<< Annex.fromRepo Git.remotes
|
||||
let remotesmsg = unlines $ map ("\t" ++) $
|
||||
mapMaybe Git.remoteName disabledremotes
|
||||
error $ concat $ filter (not . null) [prefix ++ "\n", remotesmsg, specialmsg]
|
||||
where
|
||||
isdisabled r = anyM id
|
||||
[ (==) NoUUID <$> getRepoUUID r
|
||||
, remoteAnnexIgnore <$> Annex.getRemoteGitConfig r
|
||||
]
|
||||
|
|
|
@ -80,6 +80,12 @@ setRemoteCost r c = setConfig (remoteConfig r "cost") (show c)
|
|||
setRemoteAvailability :: Git.Repo -> Availability -> Annex ()
|
||||
setRemoteAvailability r c = setConfig (remoteConfig r "availability") (show c)
|
||||
|
||||
setRemoteIgnore :: Git.Repo -> Bool -> Annex ()
|
||||
setRemoteIgnore r b = setConfig (remoteConfig r "ignore") (Git.Config.boolConfig b)
|
||||
|
||||
setRemoteBare :: Git.Repo -> Bool -> Annex ()
|
||||
setRemoteBare r b = setConfig (remoteConfig r "bare") (Git.Config.boolConfig b)
|
||||
|
||||
isDirect :: Annex Bool
|
||||
isDirect = annexDirect <$> Annex.getGitConfig
|
||||
|
||||
|
|
|
@ -247,7 +247,7 @@ tryGitConfigRead autoinit r
|
|||
-- Cache when http remote is not bare for
|
||||
-- optimisation.
|
||||
unless (Git.Config.isBare r') $
|
||||
setremote "annex-bare" (Git.Config.boolConfig False)
|
||||
setremote setRemoteBare False
|
||||
return r'
|
||||
|
||||
store = observe $ \r' -> do
|
||||
|
@ -274,20 +274,17 @@ tryGitConfigRead autoinit r
|
|||
return r
|
||||
|
||||
set_ignore msg longmessage = do
|
||||
let k = "annex-ignore"
|
||||
case Git.remoteName r of
|
||||
Nothing -> noop
|
||||
Just n -> do
|
||||
warning $ "Remote " ++ n ++ " " ++ msg ++ "; setting " ++ k
|
||||
warning $ "Remote " ++ n ++ " " ++ msg ++ "; setting annex-ignore"
|
||||
when longmessage $
|
||||
warning $ "This could be a problem with the git-annex installation on the remote. Please make sure that git-annex-shell is available in PATH when you ssh into the remote. Once you have fixed the git-annex installation, run: git config remote." ++ n ++ "." ++ k ++ " false"
|
||||
setremote k (Git.Config.boolConfig True)
|
||||
warning $ "This could be a problem with the git-annex installation on the remote. Please make sure that git-annex-shell is available in PATH when you ssh into the remote. Once you have fixed the git-annex installation, run: git annex enableremote " ++ n
|
||||
setremote setRemoteIgnore True
|
||||
|
||||
setremote k v = case Git.remoteName r of
|
||||
setremote setter v = case Git.remoteName r of
|
||||
Nothing -> noop
|
||||
Just n -> do
|
||||
let k' = "remote." ++ n ++ "." ++ k
|
||||
inRepo $ Git.Command.run [Param "config", Param k', Param v]
|
||||
Just n -> setter r v
|
||||
|
||||
handlegcrypt Nothing = return r
|
||||
handlegcrypt (Just _cacheduuid) = do
|
||||
|
|
|
@ -59,6 +59,9 @@ a new clone, it will will attempt to enable the special remote. Of course,
|
|||
this works best when the special remote does not need anything special
|
||||
to be done to get it enabled.
|
||||
|
||||
(This command also can be used to enable a remote that git-annex has been
|
||||
prevented from using by the `remote.<name>.annex-ignore` setting.)
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
[[git-annex]](1)
|
||||
|
|
Loading…
Add table
Reference in a new issue