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 41271e4eb4
avoid git check-ignore overhead on importing known files
isKnownImportLocation does a database lookup and there's an index
to make that lookup fast, so it's probably faster than talking to git
check-ignore. Checking the matcher is faster still.

While before the gitignore check was added it did not need to always
check isknown, now it does, because it's that or the more expensive
notignored. But at least we can skip notignored when a file is known,
which will often be the common case: Importing from a remote that's been
exported to, and/or imported from before, only new files will not be
known, so only those will need to check notignored.

At first, I had this:
	(matches <&&> (isknown <||> notignored)) <||> isknown
Notice that checks isknown every time, whether it matches or not.

So, it's no slower to instead do this:
	isknown <||> (matches <&&> notignored)
That has the benefit that, when it's known, it doesn't need to run
matches, which while faster than isknown, is still going to use some CPU.

And it perhaps more clearly expresses the condition: Any known file is
wanted, otherwise it's down to what matches and is not ignored.

This commit was sponsored by Jack Hill on Patren.
2020-09-30 11:20:44 -04:00
Annex avoid git check-ignore overhead on importing known files 2020-09-30 11:20:44 -04:00
Assistant cache remote.log 2020-09-22 13:52:26 -04:00
Backend types for async protocol extension 2020-08-12 12:04:12 -04:00
Build fix build failure on i386-ancient 2020-08-10 16:49:09 -04:00
CmdLine allow matching on files whose content is not present 2020-09-28 11:17:46 -04:00
Command import: Check gitignores when importing trees from special remotes 2020-09-30 10:41:59 -04:00
Config rename Configurable for clarity 2020-09-16 11:16:48 -04:00
Database remove redundant imports 2020-06-22 11:05:34 -04:00
debian Revert "data type that starts off using a set but converts to a bloom filter when large" 2020-07-01 20:12:19 -04:00
doc import: Check gitignores when importing trees from special remotes 2020-09-30 10:41:59 -04:00
Git remove zombie process in file seeking 2020-09-25 11:38:42 -04:00
Limit split ProvidedInfo and UserProvidedInfo 2020-09-28 12:12:38 -04:00
Logs explicitly wait for a git process 2020-09-25 11:03:12 -04:00
Messages add "input" field to json output 2020-09-15 16:22:44 -04:00
P2P avoid failure to lock content of removed file causing drop etc to fail 2020-07-25 11:59:33 -04:00
Remote Parse youtube-dl progress output 2020-09-29 17:53:48 -04:00
RemoteDaemon add back git-annex branch read cache 2020-07-06 12:22:33 -04:00
standalone Removed the S3 and WebDAV build flags 2020-09-08 12:42:59 -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 remove reapZombies 2020-09-25 11:50:38 -04:00
Types split ProvidedInfo and UserProvidedInfo 2020-09-28 12:12:38 -04:00
Upgrade add import 2020-09-29 13:51:51 -04:00
Utility Parse youtube-dl progress output 2020-09-29 17:53:48 -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 cache remote.log 2020-09-22 13:52:26 -04:00
Assistant.hs add back git-annex branch read cache 2020-07-06 12:22:33 -04:00
Backend.hs external backends wip 2020-07-29 15:23:18 -04:00
bash-completion.bash bash completion fix 2018-11-12 13:23:05 -04:00
Benchmark.hs remove reapZombies 2020-09-25 11:50:38 -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 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 import: Check gitignores when importing trees from special remotes 2020-09-30 10:41:59 -04:00
CmdLine.hs audit all uses of SomeException to avoid catching async exceptions 2020-06-05 15:16:57 -04:00
Command.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Common.hs import Utility.FileSystemEncoding in Common 2019-01-03 11:37:02 -04:00
Config.hs build warnings 2020-07-01 14:30:08 -04:00
COPYRIGHT update 2020-07-20 14:27:14 -04:00
Creds.hs remove redundant imports 2020-06-22 11:05:34 -04:00
Crypto.hs fix strictness issue 2020-06-16 17:09:34 -04:00
git-annex.cabal releasing package git-annex version 8.20200908 2020-09-08 14:20:47 -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 ByteString Ref continued 2020-04-07 11:54:27 -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 encoding a git sha as a git-annex key 2020-06-23 14:25:39 -04:00
Limit.hs import --no-content: Check annex.largefiles 2020-09-28 13:28:57 -04:00
Logs.hs cache one more log file for metadata 2020-07-07 14:18:55 -04:00
Makefile fix osxapp build issue 2020-08-10 18:41:02 -04:00
Messages.hs Improve the "Try making some of these repositories available" message 2020-09-22 14:10:30 -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 Improve the "Try making some of these repositories available" message 2020-09-22 14:10:30 -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 Removed the S3 and WebDAV build flags 2020-09-08 12:42:59 -04:00
Test.hs fix reversion in skipping deleted files 2020-07-19 21:25:01 -04:00
Types.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Upgrade.hs add gitAnnexChildProcess and use instead of incorrect use of runsGitAnnexChildProcess 2020-08-25 14:57:49 -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/>