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 151562b537
convert key2file and file2key to use builder and attoparsec
The new parser is significantly stricter than the old one:

The old file2key allowed the fields to come in any order,
but the new one requires the fixed order that git-annex has always used.
Hopefully this will not cause any breakage.

And the old file2key allowed eg SHA1-m1-m2-m3-m4-m5-m6--xxxx
while the new does not allow duplication of fields. This could potentially
improve security, because allowing lots of extra junk like that in a key
could potentially be used in a SHA1 collision attack, although the current
attacks need binary data and not this kind of structured numeric data.

Speed improved of course, and fairly substantially, in microbenchmarks:

benchmarking old/key2file
time                 2.264 μs   (2.257 μs .. 2.273 μs)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 2.265 μs   (2.260 μs .. 2.275 μs)
std dev              21.17 ns   (13.06 ns .. 39.26 ns)

benchmarking new/key2file'
time                 1.744 μs   (1.741 μs .. 1.747 μs)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 1.745 μs   (1.742 μs .. 1.751 μs)
std dev              13.55 ns   (9.099 ns .. 21.89 ns)

benchmarking old/file2key
time                 6.114 μs   (6.102 μs .. 6.129 μs)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 6.118 μs   (6.106 μs .. 6.143 μs)
std dev              55.00 ns   (30.08 ns .. 100.2 ns)

benchmarking new/file2key'
time                 1.791 μs   (1.782 μs .. 1.801 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 1.792 μs   (1.785 μs .. 1.804 μs)
std dev              32.46 ns   (20.59 ns .. 50.82 ns)
variance introduced by outliers: 19% (moderately inflated)
2019-01-11 16:33:42 -04:00
Annex convert transitions.log to attoparsec and bytestring-builder 2019-01-10 17:13:30 -04:00
Assistant newtype Group to ByteString 2019-01-09 15:05:49 -04:00
Backend import Utility.FileSystemEncoding in Common 2019-01-03 11:37:02 -04:00
Build remove old android app autobuild 2018-10-13 12:13:13 -04:00
CmdLine build cleanrly when benchmark flag is not enabled 2019-01-05 08:09:28 -04:00
Command newtype Group to ByteString 2019-01-09 15:05:49 -04:00
Config fix syntax 2018-08-29 09:20:25 -04:00
Database Merge branch 'remove-esqueleto' 2018-11-20 11:50:04 -04:00
debian fix link on download page and add a few more to break later 2018-12-10 12:55:13 -04:00
doc devblog 2019-01-10 17:24:51 -04:00
Git simplification now that all logs use Builder 2019-01-09 14:10:05 -04:00
Limit support findred and --branch with file matching options 2018-12-09 13:38:35 -04:00
Logs convert transitions.log to attoparsec and bytestring-builder 2019-01-10 17:13:30 -04:00
Messages Fix build without concurrent-output. 2018-12-03 12:33:00 -04:00
P2P distinguish between cached and uncached creds 2018-12-04 14:09:18 -04:00
Remote follow-on changes from MetaData type changes 2019-01-07 15:51:05 -04:00
RemoteDaemon instrument P2P --debug with connection and thread info 2018-10-22 15:52:11 -04:00
standalone remove android stuff 2018-11-04 20:06:49 -04:00
static Revert "remove newlines from static js and css" 2014-06-13 02:20:39 -04:00
templates removed the old Android app 2018-10-13 01:41:11 -04:00
Test new improved benchmark command that can benchmark anything git-annex does 2019-01-04 13:46:36 -04:00
Types convert key2file and file2key to use builder and attoparsec 2019-01-11 16:33:42 -04:00
Upgrade convert git-annex branch access to ByteStrings and Builders 2019-01-03 13:21:48 -04:00
Utility switch MetaValue to ByteString and MetaField to Text 2019-01-07 14:18:24 -04:00
.ghci workaround for ghci fragility in reusing objects compiled with ghc 2012-10-20 16:20:42 -04:00
.gitattributes update changelog location 2016-08-22 23:54:11 -04:00
.gitignore Removed Esqueleto as a dependency. 2018-11-06 22:18:55 +00:00
.mailmap alias for Yaroslav @ yahoo to mailmap 2015-09-09 12:38:59 -04:00
Annex.hs Support being built with ghc 8.0.1 (MonadFail) 2019-01-05 11:55:15 -04:00
Assistant.hs fold Build/SysConfig.hs into BuildInfo via include 2017-12-14 12:46:57 -04:00
Backend.hs more lambda-case conversion 2017-12-05 15:00:50 -04:00
bash-completion.bash bash completion fix 2018-11-12 13:23:05 -04:00
Benchmark.hs new improved benchmark command that can benchmark anything git-annex does 2019-01-04 13:46:36 -04:00
build.bat let build.bat also be run from cygwin terminal 2015-04-21 14:12:14 -04:00
BuildFlags.hs removed the old Android app 2018-10-13 01:41:11 -04:00
BuildInfo.hs Make Build/BuildVersion update embedded version number 2018-06-26 10:36:54 -04:00
CHANGELOG convert transitions.log to attoparsec and bytestring-builder 2019-01-10 17:13:30 -04:00
CmdLine.hs new improved benchmark command that can benchmark anything git-annex does 2019-01-04 13:46:36 -04:00
Command.hs add --json-error-messages (not yet implemented) 2018-02-19 14:32:15 -04:00
Common.hs import Utility.FileSystemEncoding in Common 2019-01-03 11:37:02 -04:00
Config.hs centralized "yes"/"no" parsing 2018-10-10 11:14:27 -04:00
COPYRIGHT convert transitions.log to attoparsec and bytestring-builder 2019-01-10 17:13:30 -04:00
Creds.hs S3: Improve diagnostics when a remote is configured with exporttree and versioning, but no S3 version id has been recorded for a key. 2018-12-06 13:44:37 -04:00
Crypto.hs add KeyVariety type 2017-02-24 15:16:56 -04:00
ghci avoid tab warnings from ghc 8 2016-11-17 13:39:30 -04:00
git-annex.cabal build cleanrly when benchmark flag is not enabled 2019-01-05 08:09:28 -04:00
git-annex.hs new improved benchmark command that can benchmark anything git-annex does 2019-01-04 13:46:36 -04:00
git-union-merge.hs Always use filesystem encoding for all file and handle reads and writes. 2016-12-24 14:46:31 -04:00
Git.hs Propigate GIT_DIR and GIT_WORK_TREE environment to external special remotes. 2016-05-06 12:26:44 -04:00
Jenkinsfile Revert "debugging strange old version of git-annex in windows installer bundle" 2017-10-26 11:32:04 -04:00
Key.hs convert key2file and file2key to use builder and attoparsec 2019-01-11 16:33:42 -04:00
Limit.hs newtype Group to ByteString 2019-01-09 15:05:49 -04:00
Logs.hs dropdead per-remote metadata 2018-09-05 13:52:46 -04:00
Makefile add BUILDERCOMMONOPTIONS 2018-11-21 11:36:38 -04:00
Messages.hs add DebugLocks build flag 2018-11-19 15:02:43 -04:00
NEWS releasing package git-annex version 7.20181031 2018-10-31 15:46:57 -04:00
README use https 2014-11-06 14:20:10 -04:00
Remote.hs import Utility.FileSystemEncoding in Common 2019-01-03 11:37:02 -04:00
Setup.hs Added git-remote-tor-annex, which allows git pull and push to the tor hidden service. 2016-11-21 17:27:38 -04:00
stack-lts-9.9.yaml explicitly default benchmark build flag to false 2019-01-04 11:24:16 -04:00
stack-windows.yaml explicitly default benchmark build flag to false 2019-01-04 11:24:16 -04:00
stack.yaml explicitly default benchmark build flag to false 2019-01-04 11:24:16 -04:00
Test.hs convert old uuid-based log parsers to attoparsec 2019-01-10 16:34:20 -04:00
Types.hs better dup key with -J fix 2017-10-17 18:48:53 -04:00
Upgrade.hs fix upgrade of more than 1 version at a time 2018-10-26 14:31:13 -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 <https://git-annex.branchable.com/>