local git remote autoinit improvements

* Improve display of problems auto-initializing or upgrading local git
  remotes.
* When a local git remote cannot be initialized because it has no
  git-annex branch or a .noannex file, avoid displaying a message about it.
This commit is contained in:
Joey Hess 2020-06-16 13:24:00 -04:00
parent 9f61cb94c0
commit a76b1ba3d6
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 27 additions and 2 deletions

View file

@ -10,6 +10,7 @@
module Annex.Init (
ensureInitialized,
autoInitialize,
isInitialized,
initialize,
initialize',
@ -61,7 +62,7 @@ import qualified Data.Map as M
import Control.Concurrent.Async
checkCanInitialize :: Annex a -> Annex a
checkCanInitialize a = inRepo (noAnnexFileContent . fmap fromRawFilePath . Git.repoWorkTree) >>= \case
checkCanInitialize a = canInitialize' >>= \case
Nothing -> a
Just noannexmsg -> do
warning "Initialization prevented by .noannex file (remove the file to override)"
@ -69,6 +70,12 @@ checkCanInitialize a = inRepo (noAnnexFileContent . fmap fromRawFilePath . Git.r
warning noannexmsg
giveup "Not initialized."
canInitialize :: Annex Bool
canInitialize = isNothing <$> canInitialize'
canInitialize' :: Annex (Maybe String)
canInitialize' = inRepo (noAnnexFileContent . fmap fromRawFilePath . Git.repoWorkTree)
genDescription :: Maybe String -> Annex UUIDDesc
genDescription (Just d) = return $ UUIDDesc $ encodeBS d
genDescription Nothing = do
@ -160,6 +167,17 @@ ensureInitialized = getVersion >>= maybe needsinit checkUpgrade
, giveup "First run: git-annex init"
)
{- Initialize if it can do so automatically.
-
- Checks repository version and handles upgrades too.
-}
autoInitialize :: Annex ()
autoInitialize = getVersion >>= maybe needsinit checkUpgrade
where
needsinit = whenM (canInitialize <&&> Annex.Branch.hasSibling) $ do
initialize Nothing Nothing
autoEnableSpecialRemotes
{- Checks if a repository is initialized. Does not check version for ugrade. -}
isInitialized :: Annex Bool
isInitialized = maybe Annex.Branch.hasSibling (const $ return True) =<< getVersion

View file

@ -35,6 +35,11 @@ git-annex (8.20200523) UNRELEASED; urgency=medium
* import: Avoid using some strange names for temporary keys.
* S3: The REDUCED_REDUNDANCY storage class is no longer cheaper so
stop documenting it, and stop offering it as a choice in the assistant.
* Improve display of problems auto-initializing or upgrading local git
remotes.
* When a local git remote cannot be initialized because it has no
git-annex branch or a .noannex file, avoid displaying a message about it.
-- Joey Hess <id@joeyh.name> Tue, 26 May 2020 10:20:52 -0400

View file

@ -337,7 +337,9 @@ tryGitConfigRead autoinit r hasuuid
readlocalannexconfig = do
let check = do
Annex.BranchState.disableUpdate
catchNonAsync ensureInitialized (warning . show)
catchNonAsync autoInitialize $ \e ->
warning $ "remote " ++ Git.repoDescribe r ++
" :" ++ show e
Annex.getState Annex.repo
s <- Annex.new r
Annex.eval s $ check `finally` stopCoProcesses