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.
This commit is contained in:
Joey Hess 2011-11-28 15:26:27 -04:00
parent ff2d9c8283
commit 6869e6023e
9 changed files with 81 additions and 11 deletions

View file

@ -1,3 +1,12 @@
This works with bind-mount, I might try with softlinks as well.
Going through git's data on push/pull can take ages on a spindle disk even if the repo is rather small in size. This is especially true if you are used to ssd speeds, but ssd storage is expensive. Storing the annex objects on a cheap spindle disk and everything else on a ssd makes things a _lot_ faster.
Going through git's data on push/pull can take ages on a spindle disk even
if the repo is rather small in size. This is especially true if you are
used to ssd speeds, but ssd storage is expensive. Storing the annex objects
on a cheap spindle disk and everything else on a ssd makes things a _lot_
faster.
> Update: git-annex supports `.git/annex/` being moved to a different disk
> than the rest of the repisitory, but does *not* support individual
> subdirectories, like `.git/annex/objects/` being on a different disk
> than the main `.git/annex/` directory. --[[Joey]]