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 a3370ac459 allow for concurrent incremental fsck processes again (sorta)
Sqlite doesn't support multiple concurrent writers
at all. One of them will fail to write. It's not even possible to have two
processes building up separate transactions at the same time. Before using
sqlite, incremental fsck could work perfectly well with multiple fsck
processes running concurrently. I'd like to keep that working.

My partial solution, so far, is to make git-annex buffer writes, and every
so often send them all to sqlite at once, in a transaction. So most of the
time, nothing is writing to the database. (And if it gets unlucky and
a write fails due to a collision with another writer, it can just wait and
retry the write later.) This lets multiple processes write to the database
successfully.

But, for the purposes of concurrent, incremental fsck, it's not ideal.
Each process doesn't immediately learn of files that another process has
checked. So they'll tend to do redundant work.

Only way I can see to improve this is to use some other mechanism for
short-term IPC between the fsck processes. Not yet done.

----

Also, make addDb check if an item is in the database already, and not try
to re-add it. That fixes an intermittent crash with
"SQLite3 returned ErrorConstraint while attempting to perform step."

I am not 100% sure why; it only started happening when I moved write
buffering into the queue. It seemed to generally happen on the same file
each time, so could just be due to multiple files having the same key.
However, I doubt my sound repo has many duplicate keys, and I suspect
something else is going on.

----

Updated benchmark, with the 1000 item queue: 6m33.808s
2015-02-17 16:56:12 -04:00
Annex avoid crash when starting fsck --incremental when one is already running 2015-02-17 13:30:24 -04:00
Assistant sync, assistant: Include repository name in head branch commit message. 2015-02-11 13:34:05 -04:00
Backend Added MD5 and MD5E backends. 2015-02-04 13:47:54 -04:00
Build Linux standalone: Improved process names of linker shimmed programs. 2015-02-16 19:36:26 -04:00
CmdLine propigate ssh-options everywhere ssh caching is used 2015-02-12 16:14:53 -04:00
Command avoid crash when starting fsck --incremental when one is already running 2015-02-17 13:30:24 -04:00
Common Use lower case hash directories for storing files on crippled filesystems, same as is already done for bare repositories. 2013-04-04 15:46:33 -04:00
Config update my email address and homepage url 2015-01-21 12:50:09 -04:00
Database allow for concurrent incremental fsck processes again (sorta) 2015-02-17 16:56:12 -04:00
debian Merge branch 'master' into database 2015-02-17 16:15:00 -04:00
doc Merge branch 'master' of ssh://git-annex.branchable.com 2015-02-16 19:38:19 -04:00
Git avoid unncessary IO 2015-02-12 15:33:44 -04:00
Limit update my email address and homepage url 2015-01-21 12:50:09 -04:00
Logs implement annex.tune.branchhash1 2015-01-28 17:17:26 -04:00
Messages update my email address and homepage url 2015-01-21 12:50:09 -04:00
Remote The ssh-options git config is now used by gcrypt, rsync, and ddar special remotes that use ssh as a transport. 2015-02-12 15:44:10 -04:00
RemoteDaemon propigate ssh-options everywhere ssh caching is used 2015-02-12 16:14:53 -04:00
standalone Linux standalone: Improved process names of linker shimmed programs. 2015-02-16 19:36:26 -04:00
static Revert "remove newlines from static js and css" 2014-06-13 02:20:39 -04:00
templates update copyright year 2014-10-24 17:05:27 -04:00
Types The ssh-options git config is now used by gcrypt, rsync, and ddar special remotes that use ssh as a transport. 2015-02-12 15:44:10 -04:00
Upgrade implement annex.tune.branchhash1 2015-01-28 17:17:26 -04:00
Utility bittorrent: Fix mojibake introduced in parsing arai2c progress output. 2015-02-10 12:34:34 -04:00
.ghci workaround for ghci fragility in reusing objects compiled with ghc 2012-10-20 16:20:42 -04:00
.gitattributes decruft 2011-06-22 18:56:08 -04:00
.gitignore gitignore Build/BuildVersion 2014-06-18 14:43:20 -04:00
.mailmap .mailmap: Add mapping for RichiH 2015-01-21 23:24:59 -04:00
Annex.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Assistant.hs comment 2015-02-09 14:16:42 -04:00
Backend.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
build.bat windows build foo 2013-12-05 20:40:28 -04:00
BuildFlags.hs Remove support for building without cryptohash. 2015-02-04 13:41:26 -04:00
CHANGELOG symlinks 2010-10-27 15:14:59 -04:00
Checks.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
CmdLine.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Command.hs The file matching options are now only accepted by commands that can actually use them. 2015-02-06 17:16:41 -04:00
Common.hs import Data.Default in Common 2015-01-28 16:11:28 -04:00
Config.hs import Data.Default in Common 2015-01-28 16:11:28 -04:00
configure.hs Rewrote free disk space checking code 2012-03-22 17:32:47 -04:00
COPYRIGHT Add link COPYRIGHT -> debian/copyright; add COPYRIGHT to sdist. 2012-06-11 23:27:00 -07:00
Creds.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Crypto.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
ghci brought back fast ghci 2013-02-27 21:38:01 -04:00
git-annex.cabal convert incremental fsck to using sqlite database 2015-02-16 15:35:26 -04:00
git-annex.hs Windows: Fix S3 special remote; need to call withSocketsDo to support Windows. Thanks, Trent. 2015-02-05 14:00:30 -04:00
git-union-merge.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Git.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
INSTALL symlinks 2010-10-27 15:14:59 -04:00
Limit.hs relFile does not have to be relative; rename to currFile 2015-02-06 16:03:02 -04:00
Locations.hs avoid crash when starting fsck --incremental when one is already running 2015-02-17 13:30:24 -04:00
Logs.hs implement annex.tune.branchhash1 2015-01-28 17:17:26 -04:00
Makefile pass pie options to C compiler, not just to linker 2015-01-06 13:16:32 -04:00
Messages.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
NEWS update NEWS 2012-01-19 15:27:39 -04:00
README use https 2014-11-06 14:20:10 -04:00
Remote.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Setup.hs make configure -Wall clean 2014-03-10 16:59:38 -04:00
Test.hs dropdrive drops the leading slash, so need fil:/// 2015-02-11 12:22:43 -04:00
Types.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Upgrade.hs update my email address and homepage url 2015-01-21 12:50:09 -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/>