summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-09-12 13:22:16 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-09-12 13:22:16 -0400
commit3724344461d50a606419bd483a5513c0a139f43e (patch)
treec4193ef1d3715761a3b6ede1abe5f32a952923ff
parent6e08bf96336a6beee233e0dfa60728e3f6983334 (diff)
SHA256E is new default backend
The default backend used when adding files to the annex is changed from SHA256 to SHA256E, to simplify interoperability with OSX, media players, and various programs that needlessly look at symlink targets. To get old behavior, add a .gitattributes containing: * annex.backend=SHA256
-rw-r--r--Backend/SHA.hs9
-rw-r--r--debian/changelog4
-rw-r--r--doc/backends.mdwn20
-rw-r--r--doc/git-annex.mdwn4
4 files changed, 21 insertions, 16 deletions
diff --git a/Backend/SHA.hs b/Backend/SHA.hs
index 8f7dbe774..497e7d7e2 100644
--- a/Backend/SHA.hs
+++ b/Backend/SHA.hs
@@ -1,4 +1,4 @@
-{- git-annex SHA backend
+{- git-annex SHA backends
-
- Copyright 2011,2012 Joey Hess <joey@kitenet.net>
-
@@ -19,13 +19,14 @@ import qualified Data.ByteString.Lazy as L
type SHASize = Int
--- order is slightly significant; want SHA256 first, and more general
--- sizes earlier
+{- Order is slightly significant; want SHA256 first, and more general
+ - sizes earlier. -}
sizes :: [Int]
sizes = [256, 1, 512, 224, 384]
+{- The SHA256E backend is the default. -}
backends :: [Backend]
-backends = catMaybes $ map genBackend sizes ++ map genBackendE sizes
+backends = catMaybes $ map genBackendE sizes ++ map genBackend sizes
genBackend :: SHASize -> Maybe Backend
genBackend size = Just $ Backend
diff --git a/debian/changelog b/debian/changelog
index b0dd0d24d..f35b0e05d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,10 @@ git-annex (3.20120826) UNRELEASED; urgency=low
as well as automatically syncing file contents between repositories.
* webapp: New command (and FreeDesktop menu item) that allows managing
and configuring the assistant in a web browser.
+ * The default backend used when adding files to the annex is changed
+ from SHA256 to SHA256E, to simplify interoperability with OSX, media
+ players, and various programs that needlessly look at symlink targets.
+ To get old behavior, add a .gitattributes containing: * annex.backend=SHA256
* init: If no description is provided for a new repository, one will
automatically be generated, like "joey@gnu:~/foo"
* test: Set a lot of git environment variables so testing works in strange
diff --git a/doc/backends.mdwn b/doc/backends.mdwn
index 2030d107a..e1a3da218 100644
--- a/doc/backends.mdwn
+++ b/doc/backends.mdwn
@@ -5,21 +5,21 @@ to retrieve the file's content (its value).
Multiple pluggable key-value backends are supported, and a single repository
can use different ones for different files.
-* `SHA256` -- The default backend for new files. This allows
+* `SHA256E` -- The default backend for new files. This allows
verifying that the file content is right, and can avoid duplicates of
files with the same content. Its need to generate checksums
can make it slower for large files.
+* `SHA256` -- Does not include the file extension in the key, which can
+ lead to better deduplication.
* `WORM` ("Write Once, Read Many") This assumes that any file with
the same basename, size, and modification time has the same content.
This is the the least expensive backend, recommended for really large
files or slow systems.
-* `SHA512` -- Best currently available hash, for the very paranoid.
-* `SHA1` -- Smaller hash than `SHA256` for those who want a checksum
+* `SHA512`, `SHA512E` -- Best currently available hash, for the very paranoid.
+* `SHA1`, `SHA1E` -- Smaller hash than `SHA256` for those who want a checksum
but are not concerned about security.
-* `SHA384`, `SHA224` -- Hashes for people who like unusual sizes.
-* `SHA256E`, `SHA1E`, etc -- Variants that preserve filename extension as
- part of the key. Useful for archival tasks where the filename extension
- contains metadata that should be preserved.
+* `SHA384`, `SHA384E`, `SHA224`, `SHA224E` -- Hashes for people who like
+ unusual sizes.
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
@@ -29,11 +29,11 @@ For finer control of what backend is used when adding different types of
files, the `.gitattributes` file can be used. The `annex.backend`
attribute can be set to the name of the backend to use for matching files.
-For example, to use the SHA256 backend for sound files, which tend to be
+For example, to use the SHA256E backend for sound files, which tend to be
smallish and might be modified or copied over time,
while using the WORM backend for everything else, you could set
in `.gitattributes`:
* annex.backend=WORM
- *.mp3 annex.backend=SHA256
- *.ogg annex.backend=SHA256
+ *.mp3 annex.backend=SHA256E
+ *.ogg annex.backend=SHA256E
diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn
index 48e4f24ea..e2c881dfb 100644
--- a/doc/git-annex.mdwn
+++ b/doc/git-annex.mdwn
@@ -801,10 +801,10 @@ The key-value backend used when adding a new file to the annex can be
configured on a per-file-type basis via `.gitattributes` files. In the file,
the `annex.backend` attribute can be set to the name of the backend to
use. For example, this here's how to use the WORM backend by default,
-but the SHA1 backend for ogg files:
+but the SHA256E backend for ogg files:
* annex.backend=WORM
- *.ogg annex.backend=SHA1
+ *.ogg annex.backend=SHA256E
The numcopies setting can also be configured on a per-file-type basis via
the `annex.numcopies` attribute in `.gitattributes` files.