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 69f8e6c7c0
ImportableContentsChunkable
This improves the borg special remote memory usage, by
letting it only load one archive's worth of filenames into memory at a
time, and building up a larger tree out of the chunks.

When a borg repository has many archives, git-annex could easily OOM
before. Now, it will use only memory proportional to the number of
annexed keys in an archive.

Minor implementation wart: Each new chunk re-opens the content
identifier database, and also a new vector clock is used for each chunk.
This is a minor innefficiency only; the use of continuations makes
it hard to avoid, although putting the database handle into a Reader
monad would be one way to fix it.

It may later be possible to extend the ImportableContentsChunkable
interface to remotes that are not third-party populated. However, that
would perhaps need an interface that does not use continuations.

The ImportableContentsChunkable interface currently does not allow
populating the top of the tree with anything other than subtrees. It
would be easy to extend it to allow putting files in that tree, but borg
doesn't need that so I left it out for now.

Sponsored-by: Noam Kremen on Patreon
2021-10-08 13:15:22 -04:00
Annex ImportableContentsChunkable 2021-10-08 13:15:22 -04:00
Assistant improve function name 2021-09-27 12:52:30 -04:00
Backend convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Build test borg special remote 2021-09-03 13:18:07 -04:00
CmdLine --batch-keys 2021-08-25 14:21:12 -04:00
Command ImportableContentsChunkable 2021-10-08 13:15:22 -04:00
Config add: Significantly speed up adding lots of non-large files to git 2021-01-04 13:12:28 -04:00
Database convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
debian Enable building with git-annex benchmark by default 2020-10-02 13:57:10 -04:00
doc ImportableContentsChunkable 2021-10-08 13:15:22 -04:00
Git ImportableContentsChunkable 2021-10-08 13:15:22 -04:00
Limit fix longstanding indeterminite preferred content for duplicated file problem 2021-05-24 14:07:05 -04:00
Logs fix test suite failure when run with LANG=C 2021-08-18 17:36:00 -04:00
Messages bwlimit 2021-09-21 16:58:10 -04:00
P2P distinguish between incremental verification failing and not being done 2021-08-18 14:38:02 -04:00
Remote ImportableContentsChunkable 2021-10-08 13:15:22 -04:00
RemoteDaemon switch from hslogger to purpose-built Utility.Debug 2021-04-05 13:40:31 -04:00
standalone bump filepath-bytestring dep 2020-11-11 11:49:19 -04:00
static Revert "remove newlines from static js and css" 2014-06-13 02:20:39 -04:00
templates cache the serialization of a Key 2019-11-22 17:49:16 -04:00
Test add test case for readonly remote 2021-08-30 16:39:02 -04:00
Types ImportableContentsChunkable 2021-10-08 13:15:22 -04:00
Upgrade convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Utility fix bug in dirContains 2021-10-01 13:53:21 -04:00
.ghci avoid ghci warning on tabs 2019-01-21 12:35:44 -04:00
.gitattributes update changelog location 2016-08-22 23:54:11 -04:00
.gitignore stack.yaml: Updated to lts-16.10 2020-08-24 14:11:37 -04:00
.mailmap alias for Yaroslav @ yahoo to mailmap 2015-09-09 12:38:59 -04:00
Annex.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
Assistant.hs assistant: Fix a crash on startup by avoiding using forkProcess 2021-05-12 15:08:03 -04:00
Backend.hs remove unused imports 2021-10-05 21:27:06 -04:00
bash-completion.bash bash completion fix 2018-11-12 13:23:05 -04:00
Benchmark.hs --size-limit exit 101 2021-06-04 16:43:47 -04:00
BuildFlags.hs Removed the S3 and WebDAV build flags 2020-09-08 12:42:59 -04:00
BuildInfo.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
CHANGELOG ImportableContentsChunkable 2021-10-08 13:15:22 -04:00
CmdLine.hs --size-limit exit 101 2021-06-04 16:43:47 -04:00
Command.hs addon commands 2021-02-02 16:32:49 -04:00
Common.hs finish fixing removeLink on windows 2020-11-24 13:20:44 -04:00
Config.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
COPYRIGHT update year 2021-01-04 12:45:19 -04:00
Creds.hs avoid getting creds from environment during autoenable 2021-03-17 09:41:12 -04:00
Crypto.hs convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
git-annex.cabal releasing package git-annex version 8.20210903 2021-09-03 12:01:12 -04:00
git-annex.hs include git-annex-shell back in 2019-12-02 11:51:52 -04:00
git-union-merge.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Git.hs reinject: Fix crash when reinjecting a file from outside the repository 2021-10-01 14:06:34 -04:00
Key.hs convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Limit.hs New matching options --excludesamecontent and --includesamecontent 2021-05-25 13:08:18 -04:00
Logs.hs filter-branch working aside from some edge cases 2021-05-17 13:24:58 -04:00
Makefile remove TAGS target 2021-07-02 14:38:28 -04:00
Messages.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
NEWS fix dist in latest NEWS entry 2020-09-14 12:05:12 -04:00
README use https 2014-11-06 14:20:10 -04:00
Remote.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -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.yaml update to lts-16.27 2020-12-29 13:51:08 -04:00
Test.hs test borg special remote 2021-09-03 13:18:07 -04:00
Types.hs plumb VerifyConfig into retrieveKeyFile 2021-08-17 12:43:13 -04:00
Upgrade.hs propagate git-annex -c on to transferrer child process 2020-12-15 11:36:25 -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/>