summaryrefslogtreecommitdiff
path: root/Utility
Commit message (Collapse)AuthorAge
* 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>
* cleanupGravatar Joey Hess2012-10-16
|
* releasing version 3.201210163.20121016Gravatar Joey Hess2012-10-16
|
* remove unused functionGravatar Joey Hess2012-10-16
|
* avoid partial !! in gpg list-keys parserGravatar Joey Hess2012-10-16
|
* Bug fix: A recent change caused git-annex-shell to crash.Gravatar Joey Hess2012-10-15
|
* avoid duplicate code with a more generic monadic matcherGravatar Joey Hess2012-10-13
| | | | | Interesting type signature ghc derived for this: forall o (m :: * -> *). Monad m => Matcher o -> (o -> m Bool) -> m Bool
* Fix a crash when merging files in the git-annex branch that contain invalid ↵Gravatar Joey Hess2012-10-12
| | | | | | | utf8. The crash actually occurred when writing out the file, which was done to a handle that had not had fileSystemEncoding applied to it.
* remove env display from debuggingGravatar Joey Hess2012-10-11
| | | | TMI when full env is passed in and modified..
* deal with incompatable api change in network 2.4.0.1Gravatar Joey Hess2012-10-10
| | | | | On the cabal side, let's just require this new version, and set -DURI_24 to enable the code using it.
* wired preferred content up to get, copy, and drop --autoGravatar Joey Hess2012-10-08
|
* look for sysctl in some common sbin locations when it's not in PATHGravatar Joey Hess2012-10-06
|
* 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.
* bring back default SIGINT handlerGravatar Joey Hess2012-10-01
| | | | | | | | | | | | This seems to fix a problem I've recently seen where ctrl-c during rsync leads to `git annex get` moving on to the next thing rather than exiting. Seems likely that started happening with the switch to System.Process (d1da9cf221aeea5c7ac8a313a18b559791a04f12), as the old code took care to install a default SIGINT handler. Note that since the bug was only occurring sometimes, I am not 100% sure I've squashed it, although I seem to have.
* let's not -DOSX, that results in unwanted manglingGravatar Joey Hess2012-09-29
|
* kqueue bugfix: apply pruner to changed filesGravatar Joey Hess2012-09-28
| | | | | It already applied the pruner when traversing directories, so .git is excluded, but .gitignore was not. Now it is.
* retry bindGravatar Joey Hess2012-09-27
| | | | | | This is a workaround for bind failing with EINVAL sometimes on OSX. I don't know why; EVINAL should mean the socket is already bound to an address, but this is with a new socket.
* make the standalone OSX app automatically install itself when runGravatar Joey Hess2012-09-26
|
* Fix fallback to ~/Desktop when xdg-user-dir is not available. Closes: #688833Gravatar Joey Hess2012-09-25
| | | | | Really the fix here is to make Utility.Process only throw IOErrors, which is what I naturally assumed it'd throw.
* New --time-limit option, makes long git-annex commands stop after a ↵Gravatar Joey Hess2012-09-25
| | | | specified amount of time.
* 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
* hooked up git-annex-shell transferinfoGravatar Joey Hess2012-09-21
| | | | Finally done with progressbars!
* 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
| |