prevent trust commands from trying to do things in a bare repo
Since they need to stage changes, they would actually, if allowed to run, succeed, but wipe out existing trust.log content.
This commit is contained in:
parent
a9d0538da5
commit
b88637fff1
5 changed files with 11 additions and 7 deletions
|
@ -10,7 +10,7 @@ module Command where
|
|||
import Control.Monad.State (liftIO)
|
||||
import System.Directory
|
||||
import System.Posix.Files
|
||||
import Control.Monad (filterM, liftM)
|
||||
import Control.Monad (filterM, liftM, when)
|
||||
import System.Path.WildMatch
|
||||
import Text.Regex.PCRE.Light.Char8
|
||||
import Data.List
|
||||
|
@ -104,6 +104,13 @@ isAnnexed file a = do
|
|||
Just v -> a v
|
||||
Nothing -> return Nothing
|
||||
|
||||
notBareRepo :: Annex a -> Annex a
|
||||
notBareRepo a = do
|
||||
g <- Annex.gitRepo
|
||||
when (Git.repoIsLocalBare g) $ do
|
||||
error "You cannot run this subcommand in a bare repository."
|
||||
a
|
||||
|
||||
{- These functions find appropriate files or other things based on a
|
||||
user's parameters, and run a specified action on them. -}
|
||||
withFilesInGit :: CommandSeekStrings
|
||||
|
|
|
@ -22,7 +22,7 @@ seek :: [CommandSeek]
|
|||
seek = [withString start]
|
||||
|
||||
start :: CommandStartString
|
||||
start name = do
|
||||
start name = notBareRepo $ do
|
||||
showStart "semitrust" name
|
||||
Remotes.readConfigs
|
||||
r <- Remotes.byName name
|
||||
|
|
|
@ -22,7 +22,7 @@ seek :: [CommandSeek]
|
|||
seek = [withString start]
|
||||
|
||||
start :: CommandStartString
|
||||
start name = do
|
||||
start name = notBareRepo $ do
|
||||
showStart "trust" name
|
||||
Remotes.readConfigs
|
||||
r <- Remotes.byName name
|
||||
|
|
|
@ -22,7 +22,7 @@ seek :: [CommandSeek]
|
|||
seek = [withString start]
|
||||
|
||||
start :: CommandStartString
|
||||
start name = do
|
||||
start name = notBareRepo $ do
|
||||
showStart "untrust" name
|
||||
Remotes.readConfigs
|
||||
r <- Remotes.byName name
|
||||
|
|
|
@ -19,12 +19,9 @@ Known to work ok:
|
|||
|
||||
There are a few caveats to keep in mind:
|
||||
|
||||
* Using non-local bare repositories is not tested and probably broken.
|
||||
* `git annex init` can be run in a bare repository, but it cannot
|
||||
store the name you gave the repository in .git-annex/uuid.log (because
|
||||
the bare repository has no such file to commit to).
|
||||
* `git annex trust` cannot be used in a bare repository, and currently
|
||||
does something pointless. Same for `untrust` and `semitrust`.
|
||||
* `git annex fromkey` does something pointless in a bare repository.
|
||||
* `git annex fsck` cannot detect any problems in a bare repository.
|
||||
* `git annex unused` will think everything stored in a bare repository
|
||||
|
|
Loading…
Reference in a new issue