diff --git a/doc/design/assistant/inotify.mdwn b/doc/design/assistant/inotify.mdwn index fd8d56e057..166e5b7cd4 100644 --- a/doc/design/assistant/inotify.mdwn +++ b/doc/design/assistant/inotify.mdwn @@ -1,22 +1,33 @@ Finish "git annex watch" command, which runs, in the background, watching via inotify for changes, and automatically annexing new files, etc. -There is a `watch` branch in git that adds such a command, although currently -it only handles adding new files, and nothing else. To make this really -useful, it needs to: +There is a `watch` branch in git that adds such a command. To make this +really useful, it needs to: -- notice deleted files and stage the deletion - (tricky; there's a race with add..) +- on startup, add any files that have appeared since last run **done** +- on startup, fix the symlinks for any renamed links **done** +- on startup, stage any files that have been deleted since last run + (seems to require a `git commit -a` on startup, or at least a + `git add --update`, which will notice deleted files) +- notice new files, and git annex add **done** - notice renamed files, auto-fix the symlink, and stage the new file location **done** - handle cases where directories are moved outside the repo, and stop watching them **done** -- when a whole directory is deleted, stage removal of its - contents in the index **done** +- when a whole directory is deleted or moved, stage removal of its + contents from the index **done** +- notice deleted files and stage the deletion + (tricky; there's a race with add since it replaces the file with a symlink..) - periodically auto-commit staged changes (avoid autocommitting when lots of changes are coming in) - tunable delays before adding new files, etc -- honor .gitignore, not adding files it excludes +- don't annex `.gitignore` and `.gitattributes` files, but do auto-stage + changes to them +- configurable option to only annex files meeting certian size or + filename criteria +- honor .gitignore, not adding files it excludes (difficult, probably + needs my own .gitignore parser to avoid excessive running of git commands + to check for ignored files) Also to do: