reinject --known: Fix bug that prevented it from working in a bare repo.
authorJoey Hess <joeyh@joeyh.name>
Mon, 6 Jan 2020 18:22:22 +0000 (14:22 -0400)
committerJoey Hess <joeyh@joeyh.name>
Mon, 6 Jan 2020 18:22:22 +0000 (14:22 -0400)
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.

CHANGELOG
Command/Reinject.hs
doc/todo/git-annex-reinject_does_not_work_in_a_bare_repo.mdwn

index 7a50cf28ce8f85d9a646f98140738ac5fef91caf..d94481da363ef9e1d915b31160fc5ad2b4aa2f22 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,7 @@ git-annex (7.20191231) UNRELEASED; urgency=medium
   * 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
 
index d33817debf9782984dbb2d63dcc2103771f3563d..a73253ba12de75fd4168c9c4274c001a9a601c91 100644 (file)
@@ -13,6 +13,7 @@ import Annex.Content
 import Backend
 import Types.KeySource
 import Utility.Metered
+import qualified Git
 
 cmd :: Command
 cmd = command "reinject" SectionUtility 
@@ -65,8 +66,13 @@ startKnown src = notAnnexed src $
                                )
 
 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
index dc46ac71ee8cecfce97f5ae2aaf5775a4dc019c7..d4813403fce7e8a708bab06af644798f3c9f8502 100644 (file)
@@ -26,3 +26,5 @@
 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]]