aboutsummaryrefslogtreecommitdiff
path: root/Upgrade
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-01-05 17:22:19 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-01-05 17:22:19 -0400
commit903241502a6ad1a4845ac2d131ef7fc2b547400d (patch)
treefba85c9751a19aa0873e0f2bd837a1b000588508 /Upgrade
parentcf911557bf4bb27768c4fc5ac482e8f827807497 (diff)
use TopFilePath for associated files
Fixes several bugs with updates of pointer files. When eg, running git annex drop --from localremote it was updating the pointer file in the local repository, not the remote. Also, fixes drop ../foo when run in a subdir, and probably lots of other problems. Test suite drops from ~30 to 11 failures now. TopFilePath is used to force thinking about what the filepath is relative to. The data stored in the sqlite db is still just a plain string, and TopFilePath is a newtype, so there's no overhead involved in using it in DataBase.Keys.
Diffstat (limited to 'Upgrade')
-rw-r--r--Upgrade/V5.hs4
1 files changed, 3 insertions, 1 deletions
diff --git a/Upgrade/V5.hs b/Upgrade/V5.hs
index 8e567b425..369188fb8 100644
--- a/Upgrade/V5.hs
+++ b/Upgrade/V5.hs
@@ -20,6 +20,7 @@ import qualified Annex.Content.Direct as Direct
import qualified Git
import qualified Git.LsFiles
import qualified Git.Branch
+import Git.FilePath
import Git.FileMode
import Git.Config
import Utility.InodeCache
@@ -89,7 +90,8 @@ upgradeDirectWorkTree = do
, fromdirect f k
)
stagePointerFile f =<< hashPointerFile k
- Database.Keys.addAssociatedFile k f
+ Database.Keys.addAssociatedFile k
+ =<< inRepo (toTopFilePath f)
return ()
go _ = noop