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 5b4e5ce7e5 deletion
When a new file is annexed, a deletion event occurs when it's moved away
to be replaced by a symlink. Most of the time, there is no problimatic
race, because the same thread runs the add event as the deletion event.
So, once the symlink is in place, the deletion code won't run at all,
due to existing checks that a deleted file is really gone.

But there is a race at startup, as then the inotify thread is running
at the same time as the main thread, which does the initial tree walking
and annexing. It would be possible for the deletion inotify to run
in a perfect race with the addition, and remove the newly added symlink
from the git cache.

To solve this race, added event serialization via a MVar. We putMVar
before running each event, which blocks if an event is already running.
And when an event finishes (or crashes!), we takeMVar to free the lock.

Also, make rm -rf not spew warnings by passing --ignore-unmatch when
deleting directories.
2012-06-04 18:09:18 -04:00
Annex Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Backend Require that the SHA256 backend can be used when building, since it's the default. 2012-05-31 23:15:40 -04:00
Build check at configure time for sha commands in Mac OSX location 2012-05-31 23:33:07 -04:00
Command deletion 2012-06-04 18:09:18 -04:00
Common lint 2011-11-11 01:52:58 -04:00
debian add hinotify dependencies 2012-06-04 13:34:22 -04:00
doc Merge branch 'master' into watch 2012-06-04 17:07:25 -04:00
Git more worktree improvements 2012-05-19 11:08:50 -04:00
Logs use strict insertWith 2012-05-04 00:44:11 -04:00
Messages find --json 2011-12-23 01:08:19 -04:00
Remote suppress "(Recording state in git)" message when committing change to remote state 2012-05-20 00:14:56 -04:00
Types Added shared cipher mode to encryptable special remotes. 2012-04-29 14:02:43 -04:00
Upgrade Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Utility deletion 2012-06-04 18:09:18 -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 update 2012-04-30 14:23:18 -04:00
Annex.hs Add support for core.worktree, and fix support for GIT_WORK_TREE and GIT_DIR. 2012-05-18 18:20:53 -04:00
Backend.hs Fix display of warning message when encountering a file that uses an unsupported backend. 2012-05-31 21:03:24 -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 noop 2012-04-21 23:32:33 -04:00
Command.hs added ifM and nuked 11 lines of code 2012-03-14 17:43:34 -04:00
Common.hs factor out Utility.FileSystemEncoding 2012-03-09 19:08:10 -04:00
Config.hs test suite saved my bacon 2012-05-19 10:22:43 -04:00
configure.hs Rewrote free disk space checking code 2012-03-22 17:32:47 -04:00
Crypto.hs refactor 2012-04-29 14:33:07 -04:00
git-annex.cabal add hinotify dependencies 2012-06-04 13:34:22 -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 Add support for core.worktree, and fix support for GIT_WORK_TREE and GIT_DIR. 2012-05-18 18:20:53 -04:00
Git.hs Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
GitAnnex.hs Merge branch 'master' into watch 2012-06-04 12:07:59 -04:00
GitAnnexShell.hs noop 2012-04-21 23:32:33 -04:00
GPL symlinks 2010-10-27 15:14:59 -04:00
Init.hs Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -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 Fix display of warning message when encountering a file that uses an unsupported backend. 2012-05-31 21:03:24 -04:00
Makefile use LANGUAGE CPP pragma, avoids running cpp on all the other sources 2012-04-17 18:37:40 -04:00
mdwn2man mwdn2man: Fix a bug in newline supression. Closes: #606578 2010-12-10 17:27:02 -04:00
Messages.hs suppress "(Recording state in git)" message when committing change to remote state 2012-05-20 00:14:56 -04:00
NEWS update NEWS 2012-01-19 15:27:39 -04:00
Option.hs fix test suite build 2012-04-30 13:59:05 -04:00
README add README 2011-05-13 19:20:54 -04:00
Remote.hs noop 2012-04-21 23:32:33 -04:00
Seek.hs import: New subcommand, pulls files from a directory outside the annex and adds them 2012-05-31 19:47:18 -04:00
Setup.hs cabal now installs git-annex-shell as a symlink to git-annex. 2012-04-14 14:01:14 -04:00
test.hs make GIT_DIR, GIT_WORK_TREE absolute 2012-05-18 18:32:19 -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/>