summaryrefslogtreecommitdiff
path: root/Utility
Commit message (Collapse)AuthorAge
* avoid calling the progress callback when the bytes sent have not changedGravatar Joey Hess2012-09-20
| | | | | Does rsync stall and update its progress display? Dunno, but this was an easy optimisation to throw in.
* watch for changes to transfer info files, to update progress bars on uploadGravatar Joey Hess2012-09-20
| | | | | | | | | | | | | | This is handled differently for inotify, which can track modifications of existing files, and kqueue, which cannot (TTBOMK). On the inotify side, the TransferWatcher just waits for the file to be updated and reads the new bytesComplete. On the kqueue side, the TransferPoller has to re-read the file every update (currently 0.5 seconds, might need to increase that). I did think about working around kqueue's limitations by somehow creating a new file each time the size changed. But cleaning up all the files that would result seemed difficult. And really, this is not a lot worse than the TransferWatcher's behavior for downloads, which stats a file every 0.5 seconds. As long as the OS has decent file caching behavior..
* optimised rsync output reader to read whole blocks at a timeGravatar Joey Hess2012-09-20
|
* updateGravatar Joey Hess2012-09-20
|
* better parameter nameGravatar Joey Hess2012-09-19
|
* rsync progress interceptionGravatar Joey Hess2012-09-19
| | | | | | | | Current implementation parses rsync's output a character a time, which is hardly efficient. It could be sped up a lot by using hGetBufSome, but that would require going really lowlevel, down to raw C style buffers (good example of that here: http://users.aber.ac.uk/afc/stricthaskell.html) But rsync doesn't output very much, so currently it seems ok.
* parser for rsync progress outputGravatar Joey Hess2012-09-19
|
* renamed RsyncFile -> RsyncGravatar Joey Hess2012-09-19
|
* prefer ipv4 localhost when both are availableGravatar Joey Hess2012-09-18
| | | | | | | | | | The webapp can only run on one of ipv4 and ipv6, no both. Some web browsers may not support ipv6, so ipv4 is the safe choice. The actual problem I ran into with it only listening to ipv6 was that Utility.Url.exists was failing to connect to it. I doubt that haskell's HTTP library is ipv4 only. More likely, it was only trying one address, and tried ipv4 first.
* flip catchDefaultIOGravatar Joey Hess2012-09-17
|
* run git coprocesses with gitEnvGravatar Joey Hess2012-09-15
|
* add decodeW8Gravatar Joey Hess2012-09-13
|
* responding to pair requests *almost* worksGravatar Joey Hess2012-09-10
|
* add withTempDirGravatar Joey Hess2012-09-10
|
* fix gpg pipeline stallGravatar Joey Hess2012-09-09
| | | | | | Bug introduced in d1da9cf221aeea5c7ac8a313a18b559791a04f12, where I removed a forkProcess when feeding gpg. Feeding it from a thread solves the bug.
* pairing passphrase entry form, validation, etcGravatar Joey Hess2012-09-08
| | | | | | Actually 3 forms in one, this handles the initial passphrase entry, and the confirmation, and also varys wording if the same user or a different user is confirming.
* broke out Verifiable to a utility library, and added a quickcheck testGravatar Joey Hess2012-09-07
|
* import yesod qualifiedGravatar Joey Hess2012-08-30
| | | | | | To avoid conflict with different liftIO from MonadIO (in some version of yesod not the one I have here), and because it's generally clearer, since this module has both Wai and Yesod stuff, to qualify them both.
* thread safe git-annex index file useGravatar Joey Hess2012-08-24
|
* add NetWatcher threadGravatar Joey Hess2012-08-21
| | | | | | This deals with interruptions in network connectevity, by listening for a new network interface coming up (using dbus to see when network-manager or wicd do it), and forcing a rescan of
* Merge branch 'master' into assistantGravatar Joey Hess2012-08-17
|\ | | | | | | | | Conflicts: debian/changelog
| * Pass --use-agent to gpg when in no tty mode. Thanks, Eskild Hustvedt.Gravatar Joey Hess2012-08-17
| |
* | support building with yesod-default 1.1.0Gravatar Joey Hess2012-08-09
| | | | | | | | | | | | | | | | | | Old 1.0.1 version is still supported as well. Cabal autodetects which version is available, but in the Makefile, WITH_OLD_YESOD has to be configured appropriately. I have not squashed all the $newline warnings with the new Yesod. They should go away eventually anyway as Yesod moves past that transition.
* | make pid file directoryGravatar Joey Hess2012-08-08
| |
* | Merge branch 'master' into assistantGravatar Joey Hess2012-08-07
|\|
* | updateGravatar Joey Hess2012-08-07
| |
| * move commentGravatar Joey Hess2012-08-07
| |
* | addGravatar Joey Hess2012-08-06
| |
* | avoid headGravatar Joey Hess2012-08-05
| |
* | addGravatar Joey Hess2012-08-05
| |
* | work toward adding new repos on removable drivesGravatar Joey Hess2012-08-04
| | | | | | | | | | This actually does add a new repo, but it doesn't yet set up remotes, or sync to it.
* | fix xdg desktop dir lookup codeGravatar Joey Hess2012-08-02
| | | | | | | | | | had to use xdg-user-dir to query it, since it's in a shell format file. Fall back to
* | better ~/ handlingGravatar Joey Hess2012-08-02
| |
* | fix bugs, add desktop dirGravatar Joey Hess2012-08-02
| |
* | full autostart supportGravatar Joey Hess2012-08-02
| | | | | | | | | | | | | | | | git annex assistant --autostart will start separate daemons in each listed autostart repo running the webapp outside any git-annex repo will open it on the first listed autostart repo
* | install autostart file tooGravatar Joey Hess2012-08-01
| |
* | installing desktop file workingGravatar Joey Hess2012-08-01
| | | | | | | | Not hooked up to either Makefile or cabal yet
* | implement enough of the fdo specs to be able to write desktop menu filesGravatar Joey Hess2012-08-01
| | | | | | | | to the appropriate system or local user directory
* | write pid file even when running in foregroundGravatar Joey Hess2012-08-01
| | | | | | | | | | | | | | | | This prevents multiple runs of the assistant in the foreground, and lets --stop stop foregrounded runs too. The webapp firstrun case also now writes a pid file, once it's made the git repo to put it in.
* | fix push status, broken when inParallel was adapted for -threadedGravatar Joey Hess2012-07-30
| | | | | | | | | | Before pushing ran in its own process, so exitSuccess was the right thing to do, but with the threaded code, that's caught as an exception.
* | better ordering of alertsGravatar Joey Hess2012-07-29
| |
* | fix the auto token leak on auth error page issue permanantlyGravatar Joey Hess2012-07-29
| |
* | add NotificationID to StatusR, and use it to blockGravatar Joey Hess2012-07-28
| |
* | add derives needed for use with Yesod, and fix a bugGravatar Joey Hess2012-07-28
| |
* | add a newtypeGravatar Joey Hess2012-07-28
| |
* | add a NotificationBroadcaster to DaemonStatusGravatar Joey Hess2012-07-28
| | | | | | | | | | First use of it is to make the status checkpointer thread block until there is really a change to the status.
* | Focus today was writing a notification broadcaster.Gravatar Joey Hess2012-07-28
| | | | | | | | | | | | | | | | | | | | | | | | This is a way to send a notification to a set of clients, any of which can be blocked waiting for a new notification to arrive. A complication is that any number of clients may be be dead, and we don't want stale notifications for those clients to pile up and leak memory. It took me 3 tries to find the solution, which turns out to be simple: An array of SampleVars, one per client. Using SampleVars means that clients only see the most recent notification, but when the notification is just "the assistant's state changed somehow; display a refreshed rendering of it", that's sufficient.
* | much better webapp startup of the assistantGravatar Joey Hess2012-07-27
| | | | | | | | | | | | This avoids forking another process, avoids polling, fixes a race, and avoids a rare forkProcess thread hang that I saw once time when starting the webapp.
* | remove bogus AI_NUMERICSERVGravatar Joey Hess2012-07-27
| | | | | | | | | | Not needed, and causes a segfault on OSX when it tries to dereference the NULL servicename. (Linux handles this case better.)
* | use widgetFileGravatar Joey Hess2012-07-26
| |