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 adf5195082 run current branch merge in annex monad
I was seeing some interesting crashes after the previous commit,
when making file changes slightly faster than the assistant could keep up.

error: Ref refs/heads/master is at 7074f8e0a11110c532d06746e334f2fec6af6ab4 but expected 95ea86008d72a40d97a81cfc8fb47a0da92166bd
fatal: cannot lock HEAD ref
Committer crashed: git commit [Param "--allow-empty-message",Param "-m",Param "",Param "--allow-empty",Param "--quiet"] failed
Pusher crashed: thread blocked indefinitely in an STM transaction

Clearly the the merger ended up running at the same time as the committer,
and with both modifying HEAD the committer crashed. I fixed that by
making the Merger run its merge inside the annex monad, which avoids
it running concurrently with other git operations. Also by making
the committer not crash if git fails.

What I don't understand is why the pusher then crashed with a STM deadlock.
That must be in either the DaemonStatusHandle or the FailedPushMap,
and the latter is only used by the pusher. Did the committer's crash somehow
break STM?

The BlockedIndefinitelyOnSTM exception is described as:

-- |The thread is waiting to retry an STM transaction, but there are no
-- other references to any @TVar@s involved, so it can't ever continue.

If the Committer had a reference to a TVar and crashed, I can sort of see
this leading to that exception..

The crash was quite easy to reproduce after the previous commit, but
after making the above change, I have yet to see it again. Here's hoping.
2012-09-17 22:04:43 -04:00
Annex flip catchDefaultIO 2012-09-17 00:18:07 -04:00
Assistant run current branch merge in annex monad 2012-09-17 22:04:43 -04:00
Backend Avoid crashing on encoding errors in filenames when writing transfer info files and reading from checksum commands. 2012-09-16 01:53:06 -04:00
Build flip catchDefaultIO 2012-09-17 00:18:07 -04:00
Command better name for fallback sync refs 2012-09-16 23:09:08 -04:00
Common lint 2011-11-11 01:52:58 -04:00
debian sync: Pushes the git-annex branch to remote/synced/git-annex, rather than directly to remote/git-annex. 2012-09-16 17:54:12 -04:00
doc deferred downloads 2012-09-17 21:05:50 -04:00
Git flip catchDefaultIO 2012-09-17 00:18:07 -04:00
Locations flip catchDefaultIO 2012-09-17 00:18:07 -04:00
Logs cleanup 2012-09-17 14:58:43 -04:00
Messages find --json 2011-12-23 01:08:19 -04:00
Remote git http:// remotes are readonly too 2012-08-26 15:53:31 -04:00
static add icons 2012-07-31 03:10:16 -04:00
templates italicise unconfigured repos 2012-09-13 17:31:36 -04:00
Types more descriptive name for oneshot 2012-09-15 20:46:38 -04:00
Upgrade flip catchDefaultIO 2012-09-17 00:18:07 -04:00
Utility flip catchDefaultIO 2012-09-17 00:18:07 -04:00
.ghci autoload Common too in ghci 2012-03-24 17:25:47 -04:00
.gitattributes decruft 2011-06-22 18:56:08 -04:00
.gitignore Merge branch 'master' into assistant 2012-08-20 16:04:56 -04:00
Annex.hs pointlessness 2012-06-29 10:00:05 -04:00
Assistant.hs deferred downloads 2012-09-17 21:05:50 -04:00
Backend.hs maintain set of files pendingAdd 2012-06-20 16:31:46 -04:00
CHANGELOG symlinks 2010-10-27 15:14:59 -04:00
Checks.hs layout 2012-01-06 21:53:47 -04:00
CmdLine.hs more descriptive name for oneshot 2012-09-15 20:46:38 -04:00
Command.hs more descriptive name for oneshot 2012-09-15 20:46:38 -04:00
Common.hs switch from System.Cmd.Utils to System.Process 2012-07-18 18:00:24 -04:00
Config.hs better readProcess 2012-07-19 00:57:40 -04:00
configure.hs Rewrote free disk space checking code 2012-03-22 17:32:47 -04:00
CONTRIBUTING Remove .dir-locals.el and add doc/contributing.mdwn. 2012-06-12 00:43:42 -07:00
COPYRIGHT Add link COPYRIGHT -> debian/copyright; add COPYRIGHT to sdist. 2012-06-11 23:27:00 -07:00
Crypto.hs add routes to pause/start/cancel transfers 2012-08-08 16:20:24 -04:00
Fields.hs keep logs of failed transfers, and requeue them when doing a non-full scan 2012-08-23 15:24:15 -04:00
git-annex.cabal add build dep on network-info 2012-09-07 19:44:20 -04:00
git-annex.hs shave some 12 mb from the installed size 2012-03-15 12:00:19 -04:00
git-union-merge.hs factor out nukeFile 2012-06-06 13:13:13 -04:00
Git.hs Avoid ugly failure mode when moving content from a local repository that is not available. 2012-06-26 17:22:44 -04:00
GitAnnex.hs add transferkey command 2012-08-24 17:23:58 -04:00
GitAnnexShell.hs flip catchDefaultIO 2012-09-17 00:18:07 -04:00
GPL symlinks 2010-10-27 15:14:59 -04:00
Init.hs adding removable drive repos now basically works 2012-08-05 14:49:47 -04:00
INSTALL symlinks 2010-10-27 15:14:59 -04:00
Limit.hs rename readMaybe to readish 2012-01-23 17:00:10 -04:00
Locations.hs bugfix: avoid staging but not committing changes to git-annex branch 2012-09-15 20:15:16 -04:00
Makefile add build dep on network-info 2012-09-07 19:44:20 -04:00
Messages.hs hlint 2012-06-12 11:32:06 -04:00
NEWS update NEWS 2012-01-19 15:27:39 -04:00
Option.hs debugging improvements 2012-07-20 19:29:59 -04:00
README add README 2011-05-13 19:20:54 -04:00
Remote.hs refactor 2012-08-26 14:45:47 -04:00
Seek.hs add routes to pause/start/cancel transfers 2012-08-08 16:20:24 -04:00
Setup.hs avoid installing man pages when they do not exist 2012-09-01 15:20:45 -04:00
test.hs broke out Verifiable to a utility library, and added a quickcheck test 2012-09-07 23:23:52 -04:00
Types.hs tweak 2012-01-06 10:57:57 -04:00
Upgrade.hs tweaks 2012-01-11 00:06:54 -04:00
Usage.hs addunused: New command, the opposite of dropunused, it relinks unused content into the git repository. 2012-05-02 14:59:05 -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 <http://git-annex.branchable.com/>