2010-10-19 19:59:40 +00:00
|
|
|
git-annex uses a key-value abstraction layer to allow file contents to be
|
|
|
|
stored in different ways. In theory, any key-value storage system could be
|
|
|
|
used to store file contents.
|
|
|
|
|
|
|
|
When a file is annexed, a key is generated from its content and/or metadata.
|
|
|
|
The file checked into git symlinks to the key. This key can later be used
|
|
|
|
to retrieve the file's content (its value).
|
|
|
|
|
2010-11-01 23:11:06 +00:00
|
|
|
Multiple pluggable backends are supported, and a single repository
|
|
|
|
can use different backends for different files.
|
2010-10-19 19:59:40 +00:00
|
|
|
|
|
|
|
* `WORM` ("Write Once, Read Many") This backend stores the file's content
|
2010-11-08 19:14:54 +00:00
|
|
|
only in `.git/annex/objects/`, and assumes that any file with the same
|
|
|
|
basename, size, and modification time has the same content. So with
|
|
|
|
this backend, files can be moved around, but should never be added to
|
|
|
|
or changed. This is the default, and the least expensive backend.
|
2010-10-19 19:59:40 +00:00
|
|
|
* `SHA1` -- This backend stores the file's content in
|
2010-11-08 19:14:54 +00:00
|
|
|
`.git/annex/objects/`, with a name based on its sha1 checksum. This backend
|
|
|
|
allows modifications of files to be tracked. Its need to generate checksums
|
2010-11-08 01:02:25 +00:00
|
|
|
can make it slower for large files.
|
2010-10-27 19:02:05 +00:00
|
|
|
for use.
|
2010-10-19 19:59:40 +00:00
|
|
|
* `URL` -- This backend downloads the file's content from an external URL.
|
2010-11-01 23:11:06 +00:00
|
|
|
|
|
|
|
The `annex.backends` git-config setting can be used to list the backends
|
|
|
|
git-annex should use. The first one listed will be used by default when
|
|
|
|
new files are added.
|
|
|
|
|
|
|
|
For finer control of what backend is used when adding different types of
|
2010-11-28 22:58:03 +00:00
|
|
|
files, the `.gitattributes` file can be used. The `annex.backend`
|
2010-11-01 23:11:06 +00:00
|
|
|
attribute can be set to the name of the backend to use for matching files.
|
|
|
|
|
|
|
|
For example, to use the SHA1 backend for sound files, which tend to be
|
|
|
|
smallish and might be modified over time, you could set in
|
|
|
|
`.gitattributes`:
|
|
|
|
|
2010-11-28 22:58:03 +00:00
|
|
|
*.mp3 annex.backend=SHA1
|
|
|
|
*.ogg annex.backend=SHA1
|