Commit graph

3908 commits

Author SHA1 Message Date
Joey Hess
7201d7835c Merge branch 'master' into watch 2012-06-10 16:13:23 -04:00
Joey Hess
2de50f733a smart commit thread
The commit thread now has access to a channel containing the times of
all uncommitted changes. This lets it be smart about detecting busy times
when a batch job is running (such as rm -rf, or untarring something, etc),
and avoid committing until it's done. While at the same time, instantly
committing one-off changes that the user is going to expect to see
immediately.

I had to use STM to implement the channel, because of
http://hackage.haskell.org/trac/ghc/ticket/4154
While this adds a dependency, I always wanted to use STM, so this actually
makes me happy. ;)

Also happy that shouldCommit is a pure function, so other commit smartness
strategies can easily be played with. Although the current one seems pretty
good.

There is one bug, for some reason it does double commits, every time.
2012-06-10 16:07:48 -04:00
Joey Hess
6e54907e35 add a thread to commit changes
Currently the stupidest possible version, just wakes up every second,
and may make empty commits sometimes.
2012-06-10 13:56:39 -04:00
Joey Hess
c5707c84d3 queue size fix
Increase queue size for update-index actions, because otherwise they'll
never be flushed.
2012-06-10 13:56:04 -04:00
Joey Hess
e5f855b7f8 generalize and improve state MVar code 2012-06-10 13:23:10 -04:00
Joey Hess
5308b51ec0 stage deletions directly using update-index
no need to run git-rm separately
2012-06-10 13:05:58 -04:00
Joey Hess
7f39415600 force thunk for precalculated value 2012-06-10 12:50:15 -04:00
Sergei Trofimovich
3bb58afd59 Makefile: ignore monads-tf in favour of mtl
Fixes build breakage when both 'mtl' and 'monads-tf' are present:
$ make git-annex
> ghc -O2 -Wall -ignore-package monads-fd -outputdir tmp -IUtility -DWITH_S3 --make git-annex Utility/libdiskfree.o
>
> Common.hs:6:8:
>    Ambiguous module name `Control.Monad.State.Strict':
>      it was found in multiple packages: monads-tf-0.1.0.0 mtl-2.1.1
> make: *** [git-annex] Error 1

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2012-06-10 12:11:30 -04:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
3d6dc33563 2012-06-10 09:03:28 +00:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
ba62741e5a 2012-06-10 08:58:48 +00:00
http://joeyh.name/
6a71a9729f Added a comment 2012-06-09 23:01:29 +00:00
https://www.google.com/accounts/o8/id?id=AItOawldKnauegZulM7X6JoHJs7Gd5PnDjcgx-E
3a213ced1e Added a comment: open source? 2012-06-09 22:34:31 +00:00
Joey Hess
affd52be0e response 2012-06-09 17:07:40 -04:00
http://rmunn.myopenid.com/
6c8f76ca28 New idea: using youtube-dl to download video URLs 2012-06-09 18:54:14 +00:00
http://joeyh.name/
3141c36f2e Added a comment 2012-06-09 18:07:51 +00:00
Joey Hess
7f823b56af fix non-linux build 2012-06-09 14:06:56 -04:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
c388e90dc9 Added a comment 2012-06-08 15:21:21 +00:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
12afa8fb56 Added a comment 2012-06-08 07:22:34 +00:00
Joey Hess
d45a9a7831 refactor and function name cleanup
(oops, I had a calcMerge and a calc_merge!)
2012-06-08 00:29:39 -04:00
http://joeyh.name/
63290903aa Added a comment 2012-06-08 01:56:52 +00:00
Joey Hess
4f6b522d8c update 2012-06-07 21:40:31 -04:00
Joey Hess
109bd9c08b blog for the day 2012-06-07 21:37:59 -04:00
Joey Hess
7d78cbf97c use git queue for rm too 2012-06-07 21:17:10 -04:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
3f03e58dc6 removed 2012-06-07 20:25:14 +00:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
b778b9b345 Added a comment 2012-06-07 20:23:09 +00:00
https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus
021325ce71 Added a comment 2012-06-07 20:22:58 +00:00
Joey Hess
20f425be19 make watch use the queue
May not work. Certianly needs to flush the queue from time to time
when only symlink changes are being made.
2012-06-07 15:40:44 -04:00
Joey Hess
0a11b35d89 extend Git.Queue to be able to queue more than simple git commands
While I was in there, I noticed and fixed a bug in the queue size
calculations. It was never encountered only because Queue.add was
only ever run with 1 file in the list.
2012-06-07 15:19:44 -04:00
Joey Hess
727158ff55 Merge branch 'master' into watch 2012-06-07 13:48:55 -04:00
Joey Hess
4d1c114e4d initremote: Automatically describe a remote when creating it.
This ensures that all special remotes show up in git annex status.
Before, a special remote that was not manually described, and was not
a current git remote, did not show up there, although initremote did list
it.
2012-06-07 11:16:48 -04:00
Joey Hess
8408a91082 fixie 2012-06-07 10:37:06 -04:00
http://joeyh.name/
2478aca3c5 Added a comment 2012-06-07 04:48:15 +00:00
Joey Hess
5d4e09199c update message based on user feedback 2012-06-07 00:47:09 -04:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
c7efb2888c Added a comment: Wording 2012-06-07 03:43:19 +00:00
Joey Hess
d5de27ff40 tweak 2012-06-06 23:30:38 -04:00
Joey Hess
c56812980c document watch 2012-06-06 23:28:33 -04:00
Joey Hess
b8ae9528ab refactor 2012-06-06 23:20:09 -04:00
Joey Hess
b8f85f7a82 build watch on non-linux, just don't do anything 2012-06-06 22:49:32 -04:00
http://joeyh.name/
54f5462ad4 Added a comment 2012-06-06 23:25:57 +00:00
https://www.google.com/accounts/o8/id?id=AItOawkmtR6oVColYKoU0SjBORLDGrwR10G-mKo
9ee59f62d5 Added a comment: Dropbox Inotify 2012-06-06 22:03:29 +00:00
Joey Hess
baf9c7102e blog for the day 2012-06-06 16:56:48 -04:00
Joey Hess
a79aebbe2a update 2012-06-06 16:54:39 -04:00
Joey Hess
c5b11561f0 handle running out of watch descriptors 2012-06-06 16:50:28 -04:00
Joey Hess
8aa194bf80 update 2012-06-06 15:51:34 -04:00
Joey Hess
db8effb8f3 ignore .gitignore and .gitattributes 2012-06-06 15:50:12 -04:00
Joey Hess
e17bc40c31 update 2012-06-06 15:24:51 -04:00
Joey Hess
81d4991fa3 thoughts 2012-06-06 15:13:18 -04:00
Joey Hess
899334223f fixed 2 races! Only 1 serious race to go! 2012-06-06 14:33:12 -04:00
Joey Hess
b819f644ad close the git add race
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.
2012-06-06 14:29:10 -04:00
Joey Hess
91db540769 add support for staging other types of blobs, like symlinks, into the index
Also added a utility TopFilePath type, which could stand to be used more
widely.
2012-06-06 14:26:15 -04:00