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 2c86651180
optimise adjustTree when adding many TreeItems
The old code traversed the list of addtreeitems once per subdirectory in
the tree, so could get quite slow. Converting to Map lookups sped it up
significantly.

In my test case, git-annex import used to take about 2 minutes, when
calling adjustTree to add back excluded files to the imported tree. This
dropped it down to 6 seconds. Of which 4 seconds are the actual
enumeration of the contents of the remote, so really only 2 seconds for
this.

The path prefix map is a bit suboptimal memory-wise, since items get
stored in the map once per subdirectory on the path to the item. It
would perhaps be better to use a tree data structure.

Also it's suboptimal memory-wise that it builds two maps, as well
as retaining a reference to addtreeitems. I could not see a way around
that though.

Sponsored-by: Luke T. Shumaker on Patreon
2024-01-03 15:07:49 -04:00
Annex bump copyright year 2024-01-02 14:10:52 -04:00
Assistant fix --from overriding annex-ignore 2023-11-30 15:12:07 -04:00
Backend filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
Build use unshorted hash in version 2023-09-20 09:31:59 -04:00
CmdLine log migration trees to git-annex branch 2023-12-06 15:40:03 -04:00
Command remove slightly incorrect comments 2023-12-29 13:23:27 -04:00
Config use status --ignore-submodules in configureSmudgeFilter 2022-12-20 16:02:42 -04:00
Database avoid build warnings 2023-12-26 19:39:01 -04:00
debian Removed the vendored git-lfs and the GitLfs build flag 2023-08-28 13:12:31 -04:00
doc optimise adjustTree when adding many TreeItems 2024-01-03 15:07:49 -04:00
Git optimise adjustTree when adding many TreeItems 2024-01-03 15:07:49 -04:00
Limit initial implementation of --explain 2023-07-25 16:52:57 -04:00
Logs importtree: support preferred content expressions needing keys 2023-12-18 16:27:59 -04:00
Messages factor out maybeAddJSONField 2023-05-08 16:15:41 -04:00
P2P filter out control characters in error messages 2023-04-10 13:50:51 -04:00
Remote convert StorableCipher to ByteString 2023-11-01 14:39:49 -04:00
RemoteDaemon remove unused import 2023-08-28 12:35:57 -04:00
standalone enable parallel ghc for building git-annex 2023-09-26 13:46:44 -04:00
static
templates Apply codespell -w throughout 2023-03-17 15:14:58 -04:00
Test display summary after concurrent output is complete 2023-10-26 14:19:41 -04:00
Types distributed migration for pull and sync --content 2023-12-08 14:18:18 -04:00
Upgrade filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
Utility Revert "import Data.Time.Clock to build with time-1.9.1" 2023-12-27 19:11:15 -04:00
.appveyor.yml windows back to lts-18.13 temporarily 2023-08-02 12:49:38 -04:00
.codespellrc keyspell ignore tmp directory 2023-03-17 15:21:31 -04:00
.ghci turn of PackageImports in cabal file 2022-02-25 13:16:36 -04:00
.gitattributes
.gitignore ignore git-annex-build-deps files from dpkg-genbuilddeps 2023-01-29 11:29:51 -04:00
.mailmap
Annex.hs initial implementation of --explain 2023-07-25 16:52:57 -04:00
Assistant.hs assistant: Fix a crash on startup by avoiding using forkProcess 2021-05-12 15:08:03 -04:00
Author.hs improve attribution armoring 2023-11-21 11:34:21 -04:00
Backend.hs filter out control characters in warning messages 2023-04-10 15:55:44 -04:00
bash-completion.bash
Benchmark.hs --size-limit exit 101 2021-06-04 16:43:47 -04:00
BuildFlags.hs Support being built with crypton rather than cryptonite 2023-09-21 12:43:42 -04:00
BuildInfo.hs
CHANGELOG optimise adjustTree when adding many TreeItems 2024-01-03 15:07:49 -04:00
CmdLine.hs Adapt code to optparse-applicative 0.18.1 and later. 2023-06-21 11:51:04 -04:00
Command.hs uninit: Support --json and --json-error-messages 2023-05-11 13:43:02 -04:00
Common.hs Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Config.hs added an optional cost= configuration to all special remotes 2023-01-12 13:42:28 -04:00
COPYRIGHT bump copyright year 2024-01-02 14:10:52 -04:00
Creds.hs simplify base64 to only use ByteString 2023-10-26 13:10:05 -04:00
Crypto.hs convert StorableCipher to ByteString 2023-11-01 14:39:49 -04:00
git-annex.cabal releasing package git-annex version 10.20231227 2023-12-27 19:27:55 -04:00
git-annex.hs sanitize control characters in main thread fatal exceptions 2023-04-12 14:21:53 -04:00
git-union-merge.hs
Git.hs filter out control characters in error messages 2023-04-10 13:50:51 -04:00
Key.hs convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Limit.hs Fix behavior of onlyingroup 2023-08-07 13:05:11 -04:00
Logs.hs log migration trees to git-annex branch 2023-12-06 15:40:03 -04:00
Makefile remove vim dev hack 2023-10-20 12:50:31 -04:00
Messages.hs Windows: Consistently avoid ending output lines with CR 2023-10-30 14:43:43 -04:00
NEWS prep release 2023-06-26 10:41:36 -04:00
README improve description 2022-01-06 12:24:27 -04:00
Remote.hs fix --from overriding annex-ignore 2023-11-30 15:12:07 -04:00
Setup.hs Setup.hs: Stop installing man pages, desktop files, and the git-annex-shell and git-remote-tor-annex symlinks 2023-08-01 15:08:56 -04:00
stack-lts-18.13.yaml enable parallel ghc for building git-annex 2023-09-26 13:46:44 -04:00
stack.yaml update to lts-22.3 2023-12-26 12:56:59 -04:00
Test.hs simplify base64 to only use ByteString 2023-10-26 13:10:05 -04:00
Types.hs plumb VerifyConfig into retrieveKeyFile 2021-08-17 12:43:13 -04:00
Upgrade.hs don't say a supported version is unsupported 2023-10-09 14:26:24 -04:00

git-annex allows managing large files with git, without storing the file
contents in git. It can sync, backup, and archive your data, offline
and online. Checksums and encryption keep your data safe and secure. Bring
the power and distributed nature of git to bear on your large files with
git-annex.

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