Commit graph

3976 commits

Author SHA1 Message Date
Joey Hess
48efa2d2d3 avoid explicit queue flush
The queue is still flushed on add, because each add event is handled by a
separate Annex monad. That needs to be fixed to speed up add a lot.
2012-06-04 20:44:15 -04:00
Joey Hess
7a6fb8ae4e flush the git queue when a new type of action is being added to it
This allows the queue to be used in a single process for multiple possibly
conflicting commands, like add and rm, without running them out of order.

This assumes that running the same git subcommand with different parameters
cannot itself conflict.
2012-06-04 20:41:22 -04:00
Joey Hess
bd7857d903 ignore-unmatch when removing a staged file
When a file is added, and then deleted before the add action runs,
the delete event was unhappy that the file never did get staged.
2012-06-04 20:13:25 -04:00
Joey Hess
cbf16f1967 refactor 2012-06-04 19:43:29 -04:00
Joey Hess
b1619fbd0b header 2012-06-04 19:04:55 -04:00
Joey Hess
2b0e65a0ad Merge branch 'master' of ssh://git-annex.branchable.com 2012-06-04 18:17:43 -04:00
Joey Hess
b51520b0d5 update 2012-06-04 18:16:18 -04:00
Joey Hess
ec98581112 notice deleted files on startup 2012-06-04 18:14:42 -04:00
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
Joey Hess
659e6b1324 suppress "recording state in git" message during add 2012-06-04 17:18:54 -04:00
Joey Hess
529a3721e1 refactor 2012-06-04 17:17:05 -04:00
Joey Hess
ce9dc15ea0 Merge branch 'master' into watch 2012-06-04 17:07:25 -04:00
https://www.google.com/accounts/o8/id?id=AItOawlu7K3h7Ry1uDAU_ERYGuqt0LoGNJqGuRo
88107724d7 Added a comment 2012-06-04 21:01:52 +00:00
Joey Hess
e43e513414 typo 2012-06-04 16:16:50 -04:00
Joey Hess
52e31dbd89 Merge branch 'master' of ssh://git-annex.branchable.com 2012-06-04 16:16:49 -04:00
http://joeyh.name/
fc66d64205 Added a comment 2012-06-04 20:02:23 +00:00
http://joeyh.name/
04ddceece0 Added a comment 2012-06-04 19:56:05 +00:00
http://joeyh.name/
db2e6c8239 Added a comment: This is not an easy question to answer... 2012-06-04 19:49:46 +00:00
Joey Hess
39fb9db043 add 2012-06-04 15:47:19 -04:00
http://joeyh.name/
02dce20325 Added a comment 2012-06-04 19:46:04 +00:00
http://joeyh.name/
ecac13a113 Added a comment 2012-06-04 19:45:00 +00:00
Joey Hess
c9d3a238cf Merge branch 'master' of ssh://git-annex.branchable.com 2012-06-04 15:42:48 -04:00
Joey Hess
d08274a941 move 2012-06-04 15:42:26 -04:00
http://ciffer.net/~svend/
dfb3182877 Added a comment 2012-06-04 19:42:08 +00:00
http://ciffer.net/~svend/
e33f6bdfde removed 2012-06-04 19:40:57 +00:00
Joey Hess
0c6ccb9f90 Merge branch 'master' of ssh://git-annex.branchable.com 2012-06-04 15:40:36 -04:00
Joey Hess
0accc932cb update 2012-06-04 15:40:11 -04:00
http://ciffer.net/~svend/
2b269f32a1 Added a comment 2012-06-04 19:40:08 +00:00
Joey Hess
9b40cd7461 update 2012-06-04 15:23:56 -04:00
Joey Hess
9791d1dfe7 update; worked on watch branch today 2012-06-04 15:16:59 -04:00
Joey Hess
677ad74687 add handling of symlink addition events
And just like that, annexed files can be moved and copies around within
the tree, and are automatically fixed to point to the content, and staged
in git. Huzzah!

Delete still remains TODO, with its troublesome race during add..
2012-06-04 15:10:43 -04:00
Joey Hess
47f8f43715 workaround other part of moved directory problem
This fixes the scenario where:

* directory foo is moved away (and still watched)
* a new directory foo is made
* file (or directory) foo/bar is created
* the old directory's file (or directory) "bar" is deleted

We don't want a deletion event for foo/bar in this case.
2012-06-04 14:54:14 -04:00
Joey Hess
fa9d479fd1 add explict test that a closed file even is on a regular file
There are two reasons for this test. First, there could be a fifo or other
non-regular file that was closed.

Second, this test avoids ugliness when a subdirectory is moved out of the
top of the watch directory to elsewhere, and a file added to it.
Since the subdirectory has moved, the file won't be present under the
old location, and nothing will be done.

I cannot find a way to stop watching such directories, at least not without
a lot of pain. The inotify interface in Haskell doesn't make it easy to
stop watching a given subdirectory when it's moved out; it would require
keeping a map of all watch handles that is shared between threads.
This workaround avoids the problem in most cases; the only remaining case
being deletion of a file from a moved subdirectory.
2012-06-04 14:31:06 -04:00
Joey Hess
59ce18d757 add hinotify dependencies 2012-06-04 13:34:22 -04:00
Joey Hess
7053f5f947 handle directory deletion
When a directory is deleted, or moved away, git rm -r it to stage
the deletion.
2012-06-04 13:30:30 -04:00
https://www.google.com/accounts/o8/id?id=AItOawlYu7QmD7wrbHWkoxuriaA9XcijM-g5vrQ
bc99cf6a5a 2012-06-04 17:28:38 +00:00
Joey Hess
23dbff4b43 add events for symlink creation and directory removal
Improved the inotify code, so it will also notice directory removal
and symlink creation.

In the watch code, optimised away a stat of a file that's being added,
that's done by Command.Add.start. This is the reason symlink creation is
handled separately from file creation, since during initial tree walk
at startup, a stat was already done, and can be reused.
2012-06-04 13:22:56 -04:00
Joey Hess
eab3872d91 Merge branch 'master' into watch 2012-06-04 12:07:59 -04:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
759b55a674 nothing too crazy, but it's the usual distro specific problems or architecture specific problems 2012-06-04 09:21:36 +00:00
https://www.google.com/accounts/o8/id?id=AItOawlu7K3h7Ry1uDAU_ERYGuqt0LoGNJqGuRo
2a75bbdaa0 Added a forum post asking how to make locally cached files stay up to date across both rename and modify. 2012-06-04 03:41:57 +00:00
Joey Hess
619d765646 simplify OSX installation instructions
The new Haskell Platform was released today, with the new ghc git-annex's
master branch needs, so cabal should be usable again on OSX.
2012-06-03 15:12:31 -04:00
Joey Hess
c74f39843b Merge branch 'master' of ssh://git-annex.branchable.com
Conflicts:
	doc/tips/using_Amazon_S3.mdwn
2012-06-03 14:33:35 -04:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
0064fc0beb Added a comment 2012-06-02 12:06:38 +00:00
http://joeyh.name/
f74c287e7e Added a comment 2012-06-01 17:24:29 +00:00
https://www.google.com/accounts/o8/id?id=AItOawnHrjHxJAm39x8DR4bnbazQO6H0nMNuY9c
be45ac2fa0 Added a comment: sha256 2012-06-01 16:13:06 +00:00
https://www.google.com/accounts/o8/id?id=AItOawnHrjHxJAm39x8DR4bnbazQO6H0nMNuY9c
ca755617d6 removed 2012-06-01 16:10:17 +00:00
https://www.google.com/accounts/o8/id?id=AItOawnHrjHxJAm39x8DR4bnbazQO6H0nMNuY9c
3812e67a05 Added a comment: sha256 ? 2012-06-01 16:05:06 +00:00
Joey Hess
665c0fbdaa check at configure time for sha commands in Mac OSX location 2012-05-31 23:33:07 -04:00
Joey Hess
2183fd2abd Require that the SHA256 backend can be used when building, since it's the default. 2012-05-31 23:15:40 -04:00
Joey Hess
f5de183c71 sha256sum not so optional 2012-05-31 21:51:42 -04:00