git-annex/Assistant
Joey Hess b191d5c595 gitignore support for the assistant and watcher
Requires git 1.8.4 or newer. When it's installed, a background
git check-ignore process is run, and used to efficiently check ignores
whenever a new file is added.

Thanks to Adam Spiers, for getting the necessary support into git for this.

A complication is what to do about files that are gitignored but have
been checked into git anyway. git commands assume the ignore has been
overridden in this case, and not need any more overriding to commit a
changed version.

However, for the assistant to do the same, it would have to run git ls-files
to check if the ignored file is in git. This is somewhat expensive. Or it
could use the running git-cat-file process to query the file that way,
but that requires transferring the whole file content over a pipe, so it
can be quite expensive too, for files that are not git-annex
symlinks.

Now imagine if the user knows that a file or directory tree will be getting
frequent changes, and doesn't want the assistant to sync it, so gitignores
it. The assistant could overload the system with repeated ls-files checks!

So, I've decided that the assistant will not automatically commit changes
to files that are gitignored. This is a tradeoff. Hopefully it won't be a
problem to adjust .gitignore settings to not ignore files you want the
assistant to autocommit, or to manually git annex add files that are listed
in .gitignore.

(This could be revisited if git-annex gets access to an interface to check
the content of the index w/o forking a git command. This could be libgit2,
or perhaps a separate git cat-file --batch-check process, so it wouldn't
need to ship over the whole file content.)

This commit was sponsored by Francois Marier. Thanks!
2013-08-02 20:37:03 -04:00
..
Alert webapp: Better display of added files. 2013-07-10 15:37:40 -04:00
Install linux standalone auto-install icons 2013-07-09 20:50:41 -04:00
Pairing proof of concept remote reordering UI (needs to be changed to use drag and drop) 2013-03-13 17:59:33 -04:00
Threads gitignore support for the assistant and watcher 2013-08-02 20:37:03 -04:00
Types webapp: Better display of added files. 2013-07-10 15:37:40 -04:00
WebApp fix build with old yesod 2013-08-02 12:32:16 -04:00
XMPP When an XMPP server has SRV records, try them, but don't then fall back to the regular host if they all fail. 2013-07-20 21:18:55 -04:00
Alert.hs webapp: Better display of added files. 2013-07-10 15:37:40 -04:00
BranchChange.hs split BranchChange and lifted 2012-10-29 19:20:54 -04:00
Changes.hs use DList for the transfer queue 2013-04-25 01:33:44 -04:00
Commits.hs remove last use of TSet 2013-04-24 17:16:04 -04:00
Common.hs refactor alert button creation code 2013-04-04 01:48:26 -04:00
DaemonStatus.hs rename module 2013-05-12 19:19:28 -04:00
DeleteRemote.hs better git version checking 2013-08-02 18:32:26 -04:00
Drop.hs moved AssociatedFile definition 2013-07-04 02:36:02 -04:00
Install.hs linux standalone auto-install icons 2013-07-09 20:50:41 -04:00
MakeRemote.hs webapp: Differentiate between creating a new S3/Glacier/WebDav remote, and initializing an existing remote. When creating a new remote, avoid conflicts with other existing (or deleted) remotes with the same name. 2013-07-20 18:15:16 -04:00
Monad.hs Switch to MonadCatchIO-transformers for better handling of state while catching exceptions. 2013-05-19 14:16:36 -04:00
NamedThread.hs refactor alert button creation code 2013-04-04 01:48:26 -04:00
NetMessager.hs typo 2013-05-26 17:12:03 -04:00
Pairing.hs Makefile now builds using cabal, taking advantage of cabal's automatic detection of appropriate build flags. 2013-02-27 02:39:22 -04:00
Pushes.hs whitespace fixes 2012-12-13 00:45:27 -04:00
ScanRemotes.hs where indentation 2012-10-31 02:34:03 -04:00
Ssh.hs webapp: Improve handling of remotes whose setup has stalled. 2013-07-31 16:36:29 -04:00
Sync.hs include HEAD in CanPush shas 2013-05-21 20:04:38 -04:00
TransferQueue.hs use DList for the transfer queue 2013-04-25 01:33:44 -04:00
TransferrerPool.hs moved AssociatedFile definition 2013-07-04 02:36:02 -04:00
TransferSlots.hs maintain pools of running transferkeys processes (untested) 2013-03-19 18:46:29 -04:00
WebApp.hs clean up build warnings with yesod 1.2, while still building with 1.1 2013-06-27 01:15:28 -04:00
XMPP.hs add status tag to all presence messages 2013-07-25 14:58:30 -04:00