summaryrefslogtreecommitdiff
path: root/Annex
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-11-28 15:26:27 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-11-28 16:17:55 -0400
commit6869e6023e21698038da7e4a858cbaf6f7b7bbed (patch)
treed6ae8aecbc2b8f65b36f3e0e1dba740d1308bb2e /Annex
parentff2d9c828379ce29e5feb6ac770996be04ac072f (diff)
support .git/annex on a different disk than the rest of the repo
The only fully supported thing is to have the main repository on one disk, and .git/annex on another. Only commands that move data in/out of the annex will need to copy it across devices. There is only partial support for putting arbitrary subdirectories of .git/annex on different devices. For one thing, but this can require more copies to be done. For example, when .git/annex/tmp is on one device, and .git/annex/journal on another, every journal write involves a call to mv(1). Also, there are a few places that make hard links between various subdirectories of .git/annex with createLink, that are not handled. In the common case without cross-device, the new moveFile is actually faster than renameFile, avoiding an unncessary stat to check that a file (not a directory) is being moved. Of course if a cross-device move is needed, it is as slow as mv(1) of the data.
Diffstat (limited to 'Annex')
-rw-r--r--Annex/Branch.hs2
-rw-r--r--Annex/Content.hs8
2 files changed, 5 insertions, 5 deletions
diff --git a/Annex/Branch.hs b/Annex/Branch.hs
index ccc614555..a92f05b2c 100644
--- a/Annex/Branch.hs
+++ b/Annex/Branch.hs
@@ -312,7 +312,7 @@ setJournalFile file content = do
let jfile = journalFile g file
let tmpfile = gitAnnexTmpDir g </> takeFileName jfile
writeBinaryFile tmpfile content
- renameFile tmpfile jfile
+ moveFile tmpfile jfile
{- Gets any journalled content for a file in the branch. -}
getJournalFile :: FilePath -> Annex (Maybe String)
diff --git a/Annex/Content.hs b/Annex/Content.hs
index 83839ea13..f5571b54a 100644
--- a/Annex/Content.hs
+++ b/Annex/Content.hs
@@ -113,7 +113,7 @@ logStatus key status = do
u <- getUUID
logChange key u status
-{- Runs an action, passing it a temporary filename to download,
+{- Runs an action, passing it a temporary filename to get,
- and if the action succeeds, moves the temp file into
- the annex as a key's content. -}
getViaTmp :: Key -> (FilePath -> Annex Bool) -> Annex Bool
@@ -221,7 +221,7 @@ moveAnnex key src = do
else liftIO $ do
createDirectoryIfMissing True dir
allowWrite dir -- in case the directory already exists
- renameFile src dest
+ moveFile src dest
preventWrite dest
preventWrite dir
@@ -243,7 +243,7 @@ fromAnnex :: Key -> FilePath -> Annex ()
fromAnnex key dest = withObjectLoc key $ \(dir, file) -> liftIO $ do
allowWrite dir
allowWrite file
- renameFile file dest
+ moveFile file dest
removeDirectory dir
{- Moves a key out of .git/annex/objects/ into .git/annex/bad, and
@@ -256,7 +256,7 @@ moveBad key = do
liftIO $ do
createDirectoryIfMissing True (parentDir dest)
allowWrite (parentDir src)
- renameFile src dest
+ moveFile src dest
removeDirectory (parentDir src)
logStatus key InfoMissing
return dest