fix up commands that are trouble on bare repos
Most will just abort. init does a basic init and gives a command to run elsewhere to finish it.
This commit is contained in:
parent
b88637fff1
commit
b5b78f26ec
8 changed files with 31 additions and 23 deletions
|
@ -29,7 +29,7 @@ seek = [withStrings start]
|
|||
|
||||
{- Drops unused content by number. -}
|
||||
start :: CommandStartString
|
||||
start s = do
|
||||
start s = notBareRepo $ do
|
||||
m <- readUnusedLog
|
||||
case M.lookup s m of
|
||||
Nothing -> return Nothing
|
||||
|
|
|
@ -27,9 +27,8 @@ command = [Command "fromkey" paramPath seek
|
|||
seek :: [CommandSeek]
|
||||
seek = [withFilesMissing start]
|
||||
|
||||
{- Adds a file pointing at a manually-specified key -}
|
||||
start :: CommandStartString
|
||||
start file = do
|
||||
start file = notBareRepo $ do
|
||||
key <- cmdlineKey
|
||||
inbackend <- Backend.hasKey key
|
||||
unless inbackend $ error $
|
||||
|
|
|
@ -27,7 +27,7 @@ seek :: [CommandSeek]
|
|||
seek = [withAttrFilesInGit "annex.numcopies" start]
|
||||
|
||||
start :: CommandStartAttrFile
|
||||
start (file, attr) = isAnnexed file $ \(key, backend) -> do
|
||||
start (file, attr) = notBareRepo $ isAnnexed file $ \(key, backend) -> do
|
||||
showStart "fsck" file
|
||||
return $ Just $ perform key file backend numcopies
|
||||
where
|
||||
|
|
|
@ -41,11 +41,19 @@ perform :: String -> CommandPerform
|
|||
perform description = do
|
||||
g <- Annex.gitRepo
|
||||
u <- getUUID g
|
||||
describeUUID u description
|
||||
setVersion
|
||||
liftIO $ gitAttributesWrite g
|
||||
gitPreCommitHookWrite g
|
||||
return $ Just cleanup
|
||||
if Git.repoIsLocalBare g
|
||||
then do
|
||||
showLongNote $
|
||||
"This is a bare repository, so its description cannot be committed.\n" ++
|
||||
"To record the description, run this command in a clone of this repository:\n" ++
|
||||
" git annex describe " ++ (show u) ++ " '" ++ description ++ "'\n\n"
|
||||
return $ Just $ return True
|
||||
else do
|
||||
describeUUID u description
|
||||
liftIO $ gitAttributesWrite g
|
||||
gitPreCommitHookWrite g
|
||||
return $ Just cleanup
|
||||
|
||||
cleanup :: CommandCleanup
|
||||
cleanup = do
|
||||
|
|
|
@ -32,7 +32,7 @@ seek = [withNothing start]
|
|||
|
||||
{- Finds unused content in the annex. -}
|
||||
start :: CommandStartNothing
|
||||
start = do
|
||||
start = notBareRepo $ do
|
||||
showStart "unused" ""
|
||||
return $ Just perform
|
||||
|
||||
|
|
3
debian/changelog
vendored
3
debian/changelog
vendored
|
@ -11,7 +11,8 @@ git-annex (0.22) UNRELEASED; urgency=low
|
|||
* New backends: SHA512 SHA384 SHA256 SHA224
|
||||
* fsck: Check for and repair location log damage.
|
||||
* Git annexes can now be attached to bare git repositories. Due to popular
|
||||
demand.
|
||||
demand. Both the local and remote host must have this version of git-annex
|
||||
installed for it to work.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Sun, 13 Feb 2011 00:48:02 -0400
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
**This is still an experimental feature!** Use with caution.
|
||||
|
||||
Due to popular demand, git-annex can now be used with bare repositories.
|
||||
|
||||
So, for example, you can stash a file away in your
|
||||
repos's origin: `git annex move mybigfile --to origin`
|
||||
|
||||
Of course, for that to work, the bare repository has to be on a system with
|
||||
[[git-annex-shell]] installed. If "origin" is on gitweb, you still can't
|
||||
use git-annex to there.
|
||||
|
||||
**This is still an experimental feature!**
|
||||
[[git-annex-shell]] installed. If "origin" is on GitWeb, you still can't
|
||||
use git-annex to store stuff there.
|
||||
|
||||
Known to work ok:
|
||||
|
||||
|
@ -17,16 +17,15 @@ Known to work ok:
|
|||
that is being dropped.
|
||||
* `git annex get` can transfer data from a bare repository.
|
||||
|
||||
There are a few caveats to keep in mind:
|
||||
There are a few caveats to keep in mind when using bare repositories:
|
||||
|
||||
* `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 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
|
||||
is unused.
|
||||
* `git annex setkey` is a plumbing-level command, and using it manually
|
||||
the bare repository has no such file to commit to). Instead, it will
|
||||
tell you a command to run in some non-bare clone of the repository.
|
||||
* Some subcommands, like `fsck`, `trust`, `unused` and `fromkey`,
|
||||
cannot be run in a bare repository. Those subcommands will
|
||||
refuse to do anything.
|
||||
* `git annex setkey` is a plumbing-level command; using it manually
|
||||
to add content to a bare repository is not recommended, since there
|
||||
will be no record accessible by other repositories that the content
|
||||
is stored there.
|
||||
will be no record that the content is stored there.
|
||||
|
|
|
@ -54,6 +54,7 @@ files with git.
|
|||
* git-annex prevents accidental data loss by [[tracking copies|copies]]
|
||||
of your files
|
||||
* [[internals]]
|
||||
* [[bare_repositories]]
|
||||
* [[what git annex is not|not]]
|
||||
* git-annex is Free Software, licensed under the [[GPL]].
|
||||
|
||||
|
|
Loading…
Reference in a new issue