aboutsummaryrefslogtreecommitdiff
path: root/Command
Commit message (Collapse)AuthorAge
* split remaining assistant typesGravatar Joey Hess2012-10-30
|
* split out daemonstatus typesGravatar Joey Hess2012-10-30
|
* Assistant monad, stage 1Gravatar Joey Hess2012-10-29
| | | | | This adds the Assistant monad, and an AssistantData structure. So far, none of the assistant's threads run in the monad yet.
* ensure that git-annex branch is pushed after a successful transferGravatar Joey Hess2012-10-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I now have this topology working: assistant ---> {bare repo, special remote} <--- assistant And, I think, also this one: +----------- bare repo --------+ v v assistant ---> special remote <--- assistant While before with assistant <---> assistant connections, both sides got location info updated after a transfer, in this topology, the bare repo *might* get its location info updated, but the other assistant has no way to know that it did. And a special remote doesn't record location info, so transfers to it won't propigate out location log changes at all. So, for these to work, after a transfer succeeds, the git-annex branch needs to be pushed. This is done by recording a synthetic commit has occurred, which lets the pusher handle pushing out the change (which will include actually committing any still journalled changes to the git-annex branch). Of course, this means rather a lot more syncing action than happened before. At least the pusher bundles together very close together pushes, somewhat. Currently it just waits 2 seconds between each push.
* (re)start XMPP when it's configured in the webappGravatar Joey Hess2012-10-27
|
* deal with mtl/monads-tf conflictGravatar Joey Hess2012-10-24
| | | | | | I had been using -ignore-package monads-tf to deal with this, but the XMPP library uses monads-tf, so that also ignores it. Instead, use PackageImports to force use of mtl in my own code.
* uninit: Check and abort if there are symlinks to annexed content that are ↵Gravatar Joey Hess2012-10-22
| | | | not checked into git.
* remove some more !!Gravatar Joey Hess2012-10-20
|
* drop unwanted content in the transfer scanGravatar Joey Hess2012-10-18
| | | | | | | | This was complicated quite a bit by needing to check numcopies. I optimised that, so it only looks up numcopies once per file, no matter how many remotes it checks to drop from. Although it did just occur to me that it might be better to first check if it wants to drop content, and only then check numcopies..
* better fix for zombie problem, which turns out to be a zombie ssh started by ↵Gravatar Joey Hess2012-10-17
| | | | | | | | | | | | | | | | | | | | | rsync When rsyncProgress pipes rsync's stdout, this turns out to cause a ssh process started by rsync to be left behind as a zombie. I don't know why, but my recent zombie reaping cleanup was correct, it's just that this other zombie, that's not directly started by git-annex, was no longer reaped due to changes in the cleanup. Make rsyncProgress reap the zombie started by rsync, as a workaround. FWIW, the process tree looks like this. It seems like the rsync child is for some reason starting but not waiting on this extra ssh process. Ssh connection caching may be involved -- disabling it seemed to change the shape of the tree, but did not eliminate the zombie. 9378 pts/14 S+ 0:00 | \_ rsync -p --progress --inplace -4 -e 'ssh' '-S' ... 9379 pts/14 S+ 0:00 | | \_ ssh ... 9380 pts/14 S+ 0:00 | | \_ rsync -p --progress --inplace -4 -e 'ssh' '-S' ... 9381 pts/14 Z+ 0:00 | \_ [ssh] <defunct>
* nub the autostart fileGravatar Joey Hess2012-10-14
| | | | | It's possible for the file to get duplicate lines in it, and if so, we want to ignore the dups.
* add help commandGravatar Joey Hess2012-10-13
|
* full analysis of ways content could stop being preferred and need to be droppedGravatar Joey Hess2012-10-13
|
* vicfg: New file format, avoids ambiguity with repos that have the same ↵Gravatar Joey Hess2012-10-12
| | | | | | | | | description, or no description. This is also nice in that uuids are all the same length, so the values of each line, line up. Also a great deal of boilerplate elimination.
* git config remote.name.annex-sync can be used to control whether a remote ↵Gravatar Joey Hess2012-10-11
| | | | gets synced.
* webapp: display message about starting web browserGravatar Joey Hess2012-10-11
| | | | | One reason to do this is that on OSX, it doesn't jump to the web browser when opening a new page. Linux seems ahead in usability here... :P
* better messageGravatar Joey Hess2012-10-11
|
* webapp: avoid infinite loop on startGravatar Joey Hess2012-10-11
| | | | | | | | | | | | If the autostart file lists a repository, for which a directory exists, but there's not actually a valid git repo in there, the web app used to try to use it, and see it wasn't valid, and then try to autostart again. The ensuing runaway loop also ate memory, although not as fast as I was led to belive was happening to someone on IRC yesterday. So that guy may have had a different problem. But this seems otherwise a reasonable fit for the circumstances described, if git-annex was started before something that occurred during desktop login that made the repository available.
* dead: Remove dead repository from all groups.Gravatar Joey Hess2012-10-10
| | | | This is less expensive than having inallgroup weed out dead repositories.
* assistant: Now honors preferred content settings when deciding what to transfer.Gravatar Joey Hess2012-10-09
| | | | | | | | | Both when queueing downloads, and uploads, consults the preferred content settings. I didn't make it check yet when requeing failed transfers or queuing deferred downloads; dealing with the preferred content settings (or indeed, other settings) changing while the assistant is running still needs work.
* generalized Annex.WantedGravatar Joey Hess2012-10-08
| | | | | this should make it easy to use from inside the assistant, where everything is an AssociatedFile.
* make copy --to check preferred content of the remoteGravatar Joey Hess2012-10-08
|
* drop --auto --from with preferred contentGravatar Joey Hess2012-10-08
| | | | | With --from, it needs to examine the preferred content of the repository being dropped from, instead of the local repository.
* wired preferred content up to get, copy, and drop --autoGravatar Joey Hess2012-10-08
|
* fix last zombies in the assistantGravatar Joey Hess2012-10-04
| | | | | Made Git.LsFiles return cleanup actions, and everything waits on processes now, except of course for Seek.
* remove now-unnecessary manual reapsGravatar Joey Hess2012-10-04
|
* more zombie fightingGravatar Joey Hess2012-10-04
| | | | | | | | | | | | | | | | | | | | I'm down to 9 places in the code that can produce unwaited for zombies. Most of these are pretty innocuous, at least for now, are only used in short-running commands, or commands that run a set of actions and explicitly reap zombies after each one. The one from Annex.Branch.files could be trouble later, since both Command.Fsck and Command.Unused can trigger it, and the assistant will be doing those eventally. Ditto the one in Git.LsTree.lsTree, which Command.Unused uses. The only ones currently affecting the assistant though, are in Git.LsFiles. Several threads use several of those. (And yeah, using pipes or ResourceT would be a less ad-hoc approach, but I don't really feel like ripping my entire code base apart right now to change a foundation monad. Maybe one of these days..)
* make a pipeReadStrict, that properly waits on the processGravatar Joey Hess2012-10-04
| | | | | | Nearly everything that's reading from git is operating on a small amount of output and has been switched to use that. Only pipeNullSplit stuff continues using the lazy version that yields zombies.
* added preferred-content log, and allow editing it with vicfgGravatar Joey Hess2012-10-04
| | | | | | | | | | | | | | This includes a full parser for the boolean expressions in the log, that compiles them into Matchers. Those matchers are not used yet. A complication is that matching against an expression should never crash git-annex with an error. Instead, vicfg checks that the expressions parse. If a bad expression (or an expression understood by some future git-annex version) gets into the log, it'll be ignored. Most of the code in Limit couldn't fail anyway, but I did have to make limitCopies check its parameter first, and return an error if it's bad, rather than erroring at runtime.
* tweakGravatar Joey Hess2012-10-03
|
* finished vicfgGravatar Joey Hess2012-10-03
| | | | | | One note: Deleted lines are not currently parsed as config changes. That makes sense for trust settings. It may make sense to support deleted lines as a way to clear group settings.
* wrote parserGravatar Joey Hess2012-10-03
|
* vicfg: New command, allows editing (or simply viewing) most of the ↵Gravatar Joey Hess2012-10-03
| | | | | | | | | | | repository configuration settings stored in the git-annex branch. Incomplete; I need to finish parsing and saving. This will also be used for editing transfer control expresssions. Removed the group display from the status output, I didn't really like that format, and vicfg can be used to see as well as edit rempository group membership.
* status: display repository groupsGravatar Joey Hess2012-10-02
|
* simplifyGravatar Joey Hess2012-10-01
|
* group, ungroup: New commands to indicate groups of repositories.Gravatar Joey Hess2012-10-01
|
* make the standalone OSX app automatically install itself when runGravatar Joey Hess2012-09-26
|
* rename optionGravatar Joey Hess2012-09-25
|
* fsck: New --incremental-restart option which is nice for scheduling eg, ↵Gravatar Joey Hess2012-09-25
| | | | monthly incremental fsck runs in cron jobs.
* only read/set the incremental timestamp file onceGravatar Joey Hess2012-09-25
|
* use --more rather than --new to continue incremental fsckGravatar Joey Hess2012-09-25
|
* basic incremental fsck now workingGravatar Joey Hess2012-09-25
|
* add recordStartTime and getStartTimeGravatar Joey Hess2012-09-25
|
* move sticky bit code into Utility.FileModeGravatar Joey Hess2012-09-25
| | | | | | | | | | | Simplified it using existing functions. I doubt setSticky needs to return the FileMode; if it does for some reason, it can be changed to use modifyFileMode' Converted isSticky to a pure function for consistency with isSymlink. Note that the sticky bit of a file can be tested thus: isSticky . fileMode <$> getFileStatus file
* Justin's metadata codeGravatar Joey Hess2012-09-25
|
* add --incremental and --new optionsGravatar Joey Hess2012-09-25
| | | | Not yet used..
* copy: avoid updating location log when no copy is performedGravatar Joey Hess2012-09-24
| | | | | git annex copy --to remote often does not need to copy a file, but it was still updating the location log in this case.
* quiet calls to transferkeyGravatar Joey Hess2012-09-24
|
* fixes for transfer resumeGravatar Joey Hess2012-09-24
| | | | | | | | | Fix resuming of downloads, which do not have a transfer info file to read. When checking upload progress, use the MVar, rather than re-reading the info file. Catch exceptions in the transfer action. Required a tryAnnex.
* make the assistant retry failed transfersGravatar Joey Hess2012-09-23
| | | | | | | When a transfer fails, the progress info can be used to intelligently retry it. If the transfer managed to make some progress, but did not fully complete, then there's a good chance that a retry will finish it (or at least make more progress).