summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* build watch on non-linux, just don't do anythingGravatar Joey Hess2012-06-06
|
* handle running out of watch descriptorsGravatar Joey Hess2012-06-06
|
* ignore .gitignore and .gitattributesGravatar Joey Hess2012-06-06
|
* close the git add raceGravatar Joey Hess2012-06-06
| | | | | | | | | | | | | | | | | There's a race adding a new file to the annex: The file is moved to the annex and replaced with a symlink, and then we git add the symlink. If someone comes along in the meantime and replaces the symlink with something else, such as a new large file, we add that instead. Which could be bad.. This race is fixed by avoiding using git add, instead the symlink is directly staged into the index. It would be nice to make `git annex add` use this same technique. I have not done so yet because it currently runs git update-index once per file, which would slow does `git annex add`. A future enhancement would be to extend the Git.Queue to include the ability to run update-index with a list of Streamers.
* add support for staging other types of blobs, like symlinks, into the indexGravatar Joey Hess2012-06-06
| | | | | Also added a utility TopFilePath type, which could stand to be used more widely.
* factor out nukeFileGravatar Joey Hess2012-06-06
|
* split out utility functionsGravatar Joey Hess2012-06-06
|
* Merge branch 'master' into watchGravatar Joey Hess2012-06-06
|\
| * layoutGravatar Joey Hess2012-06-06
| |
| * move hashObject to HashObject library and generalize it to support all git ↵Gravatar Joey Hess2012-06-06
| | | | | | | | object types
* | Merge branch 'master' into watchGravatar Joey Hess2012-06-06
|\|
| * factor out generic update-index code from unionmerge codeGravatar Joey Hess2012-06-06
| |
| * updateGravatar Joey Hess2012-06-06
| |
| * daily blogGravatar Joey Hess2012-06-05
| |
| * closed a race, although a less likely similar one remainsGravatar Joey Hess2012-06-05
| |
* | Merge branch 'master' into watchGravatar Joey Hess2012-06-05
|\|
| * add: Prevent (most) modifications from being made to a file while it is ↵Gravatar Joey Hess2012-06-05
| | | | | | | | | | | | | | | | | | | | | | being added to the annex. Anything that tries to open the file for write, or delete the file, or replace it with something else, will not affect the add. Only if a process has the file open for write before add starts can it still change it while (or after) it's added to the annex. (fsck will catch this later of course)
| * use createAnnexDirectory when setting up tmp dirGravatar Joey Hess2012-06-05
| |
| * update test suiteGravatar Joey Hess2012-06-05
| |
| * separate source of content from the filename associated with the key when ↵Gravatar Joey Hess2012-06-05
| | | | | | | | | | | | generating a key This already made migrate's code a lot simpler.
* | Merge branch 'master' into watchGravatar Joey Hess2012-06-05
|\|
| * updateGravatar Joey Hess2012-06-05
| |
* | Merge branch 'master' into watchGravatar Joey Hess2012-06-05
|\|
| * one moreGravatar Joey Hess2012-06-05
| |
* | Merge branch 'master' into watchGravatar Joey Hess2012-06-05
|\| | | | | | | | | Conflicts: doc/design/assistant/inotify.mdwn
| * another oneGravatar Joey Hess2012-06-05
| |
| * Merge branch 'master' of ssh://git-annex.branchable.comGravatar Joey Hess2012-06-05
| |\ | | | | | | | | | | | | Conflicts: doc/design/assistant/inotify.mdwn
| * | racesGravatar Joey Hess2012-06-05
| | |
| | * racesGravatar Joey Hess2012-06-05
| |/
* | Merge branch 'master' into watchGravatar Joey Hess2012-06-05
|\ \
| * | racesGravatar Joey Hess2012-06-05
| |/
| * add news item for git-annex 3.20120605Gravatar Joey Hess2012-06-05
| |
| * releasing version 3.201206053.20120605Gravatar Joey Hess2012-06-05
| |
| * Added a commentGravatar https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus2012-06-05
| |
| * Preserve parent environment when running hooks of the hook special remote.Gravatar Joey Hess2012-06-04
| |
| * updateGravatar Joey Hess2012-06-04
| |
* | run event handlers all in the same Annex monadGravatar Joey Hess2012-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Uses a MVar again, as there seems no other way to thread the state through inotify events. This is a rather unsatisfactory result. I had wanted to run them in the same monad so that the git queue could be used to coleasce git commands and speed things up. But, that led to fragility: If several files are added, and one is removed before queue flush, git add will fail to add any of them. So, the queue is still explicitly flushed after each add for now. TODO: Investigate using git add --ignore-errors. This would need to be done in Command.Add. And, git add still exits nonzero with it, so would need to avoid crashing on queue flush.
* | avoid explicit queue flushGravatar Joey Hess2012-06-04
| | | | | | | | | | 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.
* | flush the git queue when a new type of action is being added to itGravatar Joey Hess2012-06-04
| | | | | | | | | | | | | | | | 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.
* | ignore-unmatch when removing a staged fileGravatar Joey Hess2012-06-04
| | | | | | | | | | 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.
* | refactorGravatar Joey Hess2012-06-04
| |
| * headerGravatar Joey Hess2012-06-04
| |
| * Merge branch 'master' of ssh://git-annex.branchable.comGravatar Joey Hess2012-06-04
| |\
| * | updateGravatar Joey Hess2012-06-04
| | |
* | | notice deleted files on startupGravatar Joey Hess2012-06-04
| | |
* | | deletionGravatar Joey Hess2012-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | suppress "recording state in git" message during addGravatar Joey Hess2012-06-04
| | |
* | | refactorGravatar Joey Hess2012-06-04
| | |
* | | Merge branch 'master' into watchGravatar Joey Hess2012-06-04
|\| |
| | * Added a commentGravatar https://www.google.com/accounts/o8/id?id=AItOawlu7K3h7Ry1uDAU_ERYGuqt0LoGNJqGuRo2012-06-04
| |/