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 e5b4d447b6 assistant: Start a new git-annex transferkeys process after a network connection change
So that remotes that use a persistent network connection are restarted.

A remote might keep open a long duration network connection, and could
fail to deal well with losing the connection. This is particularly a
concern now that we have external special reotes. An external
special remote that is implemented naively might open the connection only
when PREPARE is sent, and if it loses connection, throw errors on each
request that is made.

(Note that the ssh connection caching should not have this problem; if the
long-duration ssh process loses connection, the named pipe is disconnected
and the next ssh attempt will reconnect. Also, XMPP already deals with
disconnection robustly in its own way.)

There's no way for git-annex to know if a lost network connection actually
affects a given remote, which might have a transfer in process. It does not
make sense to force kill the transferkeys process every time the NetWatcher
detects a change. (Especially because the NetWatcher sometimes polls 1
change per hour.)

In any case, the NetWatcher only detects connection to a network, not
disconnection. So if a transfer is in progress over the network, and the
network goes down, that will need to time out on its own.

An alternate approch that was considered is to use a separate transferkeys
process for each remote, and detect when a request fails, and assume that
means that process is in a failing state and restart it. The problem with
that approach is that if a resource is not available and a remote fails
every time, it degrades to starting a new transferkeys process for every
file transfer, which is too expensive.

Instead, this commit only handles the network reconnection case, and restarts
transferkeys only once the network has reconnected and another transfer needs
to be made. So, a transferkeys process will be reused for 1 hour, or until the
next network connection.

----

The NotificationBroadcaster was rewritten to use TMVars rather than MSampleVars,
to allow checking without blocking if a notification has been received.

----

This commit was sponsored by Tobias Brunner.
2014-01-06 16:03:39 -04:00
Annex also check diskreserve for quvi downloads 2014-01-04 15:38:59 -04:00
Assistant assistant: Start a new git-annex transferkeys process after a network connection change 2014-01-06 16:03:39 -04:00
Backend import: Add --skip-duplicates option. 2013-12-04 13:13:30 -04:00
Build OSX: Avoid using external hash programs, since SIGILL is not fun 2014-01-01 16:26:43 -04:00
Command add: Fix rollback when disk is completely full. 2014-01-05 14:09:57 -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 move programPath out of Config.Files to Annex.Path 2013-11-24 16:03:03 -04:00
debian assistant: Start a new git-annex transferkeys process after a network connection change 2014-01-06 16:03:39 -04:00
doc format 2014-01-06 14:33:47 -04:00
Git Avoid looping if long-running git cat-file or git hash-object crashes and keeps crashing when restarted. 2014-01-01 21:42:25 -04:00
GitAnnex pass -c option on to all git commands run 2013-11-05 13:38:37 -04:00
Limit add --want-get and --want-drop options 2013-10-28 14:50:17 -04:00
Logs add remote state logs 2014-01-03 16:35:57 -04:00
Messages hlint 2013-04-03 03:52:41 -04:00
Remote add remote state logs 2014-01-03 16:35:57 -04:00
standalone work around windows apparent random dislike of removing files 2013-12-30 14:11:40 -04:00
static Tweak magic number to fix bad behavior in Firefox, which was caused by an earlier fix to bad behavior in Chromium. 2013-12-09 17:44:45 -04:00
templates don't shown non-working file browser opening UI on android 2013-12-03 13:41:23 -04:00
Types Remotes can now be made read-only, by setting remote.<name>.annex-readonly 2014-01-02 13:12:32 -04:00
Upgrade forgot to add this file 2013-12-29 16:56:20 -04:00
Utility assistant: Start a new git-annex transferkeys process after a network connection change 2014-01-06 16:03:39 -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 update for LinuxMkLibs 2013-12-24 13:25:40 -04:00
Annex.hs fix reversion in relative paths to local remotes of direct mode repos 2013-11-26 19:33:26 -04:00
Assistant.hs add support for fully automatic upgrades 2013-11-24 13:20:58 -04:00
Backend.hs Added SKEIN256 and SKEIN512 backends 2013-10-01 20:34:36 -04:00
build.bat windows build foo 2013-12-05 20:40:28 -04:00
BuildFlags.hs Allow optionally configuring git-annex with -fEKG to enable awesome remote monitoring interfaceat http://localhost:4242/ 2013-11-06 16:33:45 -04:00
CHANGELOG symlinks 2010-10-27 15:14:59 -04:00
Checks.hs direct, indirect: Refuse to do anything when the assistant or git-annex watch daemon is running. 2013-04-22 16:41:46 -04:00
CmdLine.hs make "git annex help options" work outside a git repo 2013-11-30 15:18:40 -04:00
Command.hs make "git annex help options" work outside a git repo 2013-11-30 15:18:40 -04:00
Common.hs clean up some ugly code 2013-09-27 19:52:36 -04:00
Config.hs external special remotes mostly implemented (untested) 2013-12-26 18:23:13 -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 add credential storage support for external special remotes & update example 2013-12-27 16:01:43 -04:00
Crypto.hs remove *>=> and >=*> ; use <$$> instead 2013-09-27 19:58:48 -04:00
Fields.hs safe recv-key in direct mode 2013-01-11 16:03:45 -04:00
ghci brought back fast ghci 2013-02-27 21:38:01 -04:00
git-annex.cabal prep release 2013-12-30 14:20:55 -04:00
git-annex.hs try building test suite on windows 2013-05-17 16:45:44 -04:00
git-union-merge.hs factor out nukeFile 2012-06-06 13:13:13 -04:00
Git.hs squash compiler warnings on Windows 2013-08-04 13:18:05 -04:00
GitAnnex.hs Add plumbing-level lookupkey examinekey command. 2013-12-15 14:52:09 -04:00
GitAnnexShell.hs git-annex-shell gcryptsetup command 2013-10-01 17:20:51 -04:00
Init.hs Auto-upgrade v3 indirect repos to v5 with no changes. This also fixes a problem when a direct mode repo was somehow set to v3 rather than v4, and so the automatic direct mode upgrade to v5 was not done. 2013-12-29 13:06:23 -04:00
INSTALL symlinks 2010-10-27 15:14:59 -04:00
Limit.hs refactor 2013-10-28 14:05:55 -04:00
Locations.hs add git fsck to cronner, and UI for repository repair (not yet wired up) 2013-10-22 16:02:52 -04:00
Logs.hs add remote state logs 2014-01-03 16:35:57 -04:00
Makefile git pull in distributionupdate 2014-01-03 17:11:19 -04:00
Messages.hs annex.debug can now be set to enable debug logging by default. The webapp's debugging check box does this. 2013-06-17 20:41:27 -04:00
NEWS update NEWS 2012-01-19 15:27:39 -04:00
Option.hs annex.debug can now be set to enable debug logging by default. The webapp's debugging check box does this. 2013-06-17 20:41:27 -04:00
README add README 2011-05-13 19:20:54 -04:00
Remote.hs Fix bug that caused bad information to be written to the git-annex branch when running describe or other commands with a remote that has no uuid. 2013-11-09 13:37:30 -04:00
Seek.hs assistant: Fix OSX-specific bug that caused the startup scan to try to follow symlinks to other directories, and add their contents to the annex. 2013-12-18 15:05:29 -04:00
Setup.hs split out library 2013-04-17 12:02:44 -04:00
Test.hs Fix typo in test suite. 2013-12-24 14:02:02 -04:00
Types.hs moved AssociatedFile definition 2013-07-04 02:36:02 -04:00
Upgrade.hs Auto-upgrade v3 indirect repos to v5 with no changes. This also fixes a problem when a direct mode repo was somehow set to v3 rather than v4, and so the automatic direct mode upgrade to v5 was not done. 2013-12-29 13:06:23 -04:00
Usage.hs content: New command line way to view and configure a repository's preferred content settings. 2013-05-25 12:44:58 -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/>