ifAnnexed in a bare repo passes to git cat-file :./filename , which it
refuses to do since the repo is bare.
Note that, reinject somefile someannexedfile in a bare repo silently does
nothing, because someannexedfile is never actually an annexed worktree
file, because the repo is bare.
* add: --force-annex/--force-git options make it easier to override
annex.largefiles configuration (and potentially safer as it avoids
bugs like the smudge bug fixed in the last release).
+ * reinject --known: Fix bug that prevented it from working in a bare repo.
-- Joey Hess <id@joeyh.name> Wed, 01 Jan 2020 12:51:40 -0400
import Backend
import Types.KeySource
import Utility.Metered
+import qualified Git
cmd :: Command
cmd = command "reinject" SectionUtility
)
notAnnexed :: FilePath -> CommandStart -> CommandStart
-notAnnexed src = ifAnnexed (toRawFilePath src) $
- giveup $ "cannot used annexed file as src: " ++ src
+notAnnexed src a =
+ ifM (fromRepo Git.repoIsLocalBare)
+ ( a
+ , ifAnnexed (toRawFilePath src)
+ (giveup $ "cannot used annexed file as src: " ++ src)
+ a
+ )
perform :: FilePath -> Key -> CommandPerform
perform src key = ifM move
Obviously this wasn't actually a file known to git-annex. But I get the same error in a non-dummy bare repo I am trying to reinject.
A workaround is to use `git worktree add` and run `git annex reinject` from there.
+
+> [[fixed|done]] --[[Joey]]