CI to automate build of cargo lockfiles on different Alpine releases for git-annex aports https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/community/git-annex
Find a file
Joey Hess bca3fd65b9 fix key directory hash calculation code
Fix Key directory hash calculation code to behave as it did before version
3.20120227 when a key contains non-ascii.

The hash directories for a given Key are based on its md5sum.
Prior to ghc 7.4, Keys contained raw, undecoded bytes, so the md5sum was
taken of each byte in turn. With the ghc 7.4 filename encoding change,
keys contains decoded unicode characters (possibly with surrigates for
undecodable bytes). This changes the result of the md5sum, since the md5sum
used is pure haskell and supports unicode. And that won't do, as git-annex
will start looking in a different hash directory for the content of a key.

The surrigates are particularly bad, since that's essentially a ghc
implementation detail, so could change again at any time. Also, changing
the locale changes how the bytes are decoded, which can also change
the md5sum.

Symptoms would include things like:

* git annex fsck would complain that no copies existed of a file,
  despite its symlink pointing to the content that was locally present
* git annex fix would change the symlink to use the wrong hash
  directory.

Only WORM backend is likely to have been affected, since only it tends
to include much filename data (SHA1E could in theory also be affected).

I have not tried to support the hash directories used by git-annex versions
3.20120227 to 3.20120308, so things added with those versions with WORM
will require manual fixups. Sorry for the inconvenience!
2012-03-09 20:03:51 -04:00
Annex syscall optimisation 2012-03-06 13:56:20 -04:00
Backend handle really long urls 2012-02-16 02:05:06 -04:00
Build moved files around 2011-08-20 16:11:42 -04:00
Command cleanup 2012-03-06 14:12:15 -04:00
Common lint 2011-11-11 01:52:58 -04:00
debian fix key directory hash calculation code 2012-03-09 20:03:51 -04:00
doc Added a comment 2012-03-06 17:22:54 +00:00
Git fix filename encoding for git cat-file 2012-02-26 14:11:50 -04:00
Logs revert hlint change 2012-02-20 15:37:31 -04:00
Messages find --json 2011-12-23 01:08:19 -04:00
Remote add remote start and stop hooks 2012-03-04 19:12:58 -04:00
Types order commands in usage by name 2012-02-16 16:53:44 -04:00
Upgrade IO exception rework 2012-02-03 16:47:24 -04:00
Utility fix key directory hash calculation code 2012-03-09 20:03:51 -04:00
.gitattributes decruft 2011-06-22 18:56:08 -04:00
.gitignore update ignores 2012-01-05 23:21:03 -04:00
Annex.hs do a cleanup commit after moving data from or to a git remote 2012-02-25 18:02:49 -04:00
Backend.hs hlint 2012-02-16 00:44:51 -04:00
CHANGELOG symlinks 2010-10-27 15:14:59 -04:00
Checks.hs layout 2012-01-06 21:53:47 -04:00
CmdLine.hs do a cleanup commit after moving data from or to a git remote 2012-02-25 18:02:49 -04:00
Command.hs set oneshot mode on a per-command basis 2012-02-14 12:40:40 -04:00
Common.hs factor out Utility.FileSystemEncoding 2012-03-09 19:08:10 -04:00
Config.hs configure: Check if ssh connection caching is supported by the installed version of ssh and default annex.sshcaching accordingly. 2012-02-25 19:15:29 -04:00
configure.hs configure: Check if ssh connection caching is supported by the installed version of ssh and default annex.sshcaching accordingly. 2012-02-25 19:15:29 -04:00
Crypto.hs split out Utility.Gpg with the generic gpg interface, from Crypto 2011-12-20 23:24:06 -04:00
git-annex-shell.hs add git-annex-shell commit 2012-02-25 16:47:28 -04:00
git-annex.cabal version base dependency for ghc 7.4 2012-03-06 17:32:18 -04:00
git-annex.hs renamed GitRepo to Git 2011-06-30 13:21:39 -04:00
git-union-merge.hs git-annex, git-union-merge: Support GIT_DIR and GIT_WORK_TREE. 2012-01-13 12:52:09 -04:00
Git.hs configure: Check if ssh connection caching is supported by the installed version of ssh and default annex.sshcaching accordingly. 2012-02-25 19:15:29 -04:00
GitAnnex.hs rekey: New plumbing level command, can be used to change the keys used for files en masse. 2012-02-16 16:36:35 -04:00
GPL symlinks 2010-10-27 15:14:59 -04:00
Init.hs hlint 2012-02-16 00:44:51 -04:00
INSTALL symlinks 2010-10-27 15:14:59 -04:00
Limit.hs rename readMaybe to readish 2012-01-23 17:00:10 -04:00
Locations.hs fix key directory hash calculation code 2012-03-09 20:03:51 -04:00
Makefile remove -fspec-constr-count workaround 2012-02-27 14:36:40 -04:00
mdwn2man mwdn2man: Fix a bug in newline supression. Closes: #606578 2010-12-10 17:27:02 -04:00
Messages.hs make meter slightly wider 2012-03-04 10:49:28 -04:00
NEWS update NEWS 2012-01-19 15:27:39 -04:00
Option.hs hlint 2012-02-16 00:44:51 -04:00
README add README 2011-05-13 19:20:54 -04:00
Remote.hs "here" can be used to refer to the current repository, which can read better than the old "." (which still works too). 2012-03-01 22:35:10 -04:00
Seek.hs rekey: New plumbing level command, can be used to change the keys used for files en masse. 2012-02-16 16:36:35 -04:00
Setup.hs cabal can now be used to build git-annex. 2011-06-30 14:55:03 -04:00
test.hs remove addurl test 2012-03-06 13:21:46 -04:00
Types.hs tweak 2012-01-06 10:57:57 -04:00
Upgrade.hs tweaks 2012-01-11 00:06:54 -04:00
Usage.hs make Migrate use ReKey rather than the other way around 2012-02-16 22:36:56 -04:00

git-annex allows managing files with git, without checking the file
contents into git. While that may seem paradoxical, it is useful when
dealing with files larger than git can currently easily handle, whether due
to limitations in memory, checksumming time, or disk space.

For documentation, see doc/ or <http://git-annex.branchable.com/>