Commit graph

2714 commits

Author SHA1 Message Date
Joey Hess
af239e5c33 Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-25 15:32:29 -04:00
Joey Hess
12243d2279 Flush json output, avoiding a buffering problem that could result in doubled output.
The bug was that with --json, output lines were sometimes doubled. For
example, git annex init --json would output two lines, despite only running
one thing. Adding to the weirdness, this only occurred when the output
was redirected to a pipe or a file.

Strace showed two processes outputting the same buffered output.
The second process was this writer process (only needed to work around
bug #624389):

                _ <- forkProcess $ do
                        hPutStr toh $ unlines paths
                        hClose toh
                        exitSuccess

The doubled output occurs when this process exits, and ghc flushes the
inherited stdout buffer. Why only when piping? I don't know, but ghc may
be behaving differently when stdout is not a terminal.

While this is quite possibly a ghc bug, there is a nice fix in git-annex.
Explicitly flushing after each chunk of json is output works around the
problem, and as a side effect, json is streamed rather than being output
all at the end when performing an expensive operaition.

However, note that this means all uses of putStr in git-annex must be
explicitly flushed. The others were, already.
2011-11-25 11:51:06 -04:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
ba1ec2c60f 2011-11-25 05:56:59 +00:00
Joey Hess
566a5f4881 Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-24 11:57:22 -04:00
http://cgray.myopenid.com/
709acf3f24 2011-11-24 01:59:45 +00:00
Joey Hess
3dd66fd2f0 update url 2011-11-22 22:13:11 -04:00
Joey Hess
75a590bdd8 Put a workaround in the directory special remote for strange behavior with VFAT filesystems on Linux (mounted with shortname=mixed) 2011-11-22 18:21:28 -04:00
http://joey.kitenet.net/
fd81b5047b Added a comment 2011-11-22 21:01:14 +00:00
http://joey.kitenet.net/
112399bf1a Added a comment 2011-11-22 20:59:55 +00:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
6d7e990dca Added a comment 2011-11-22 20:35:03 +00:00
http://joey.kitenet.net/
eeda534e9a Added a comment 2011-11-22 19:56:55 +00:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
b1c601ac8c Added a comment: Case sensitivity 2011-11-22 18:51:04 +00:00
Joey Hess
2d9099531b add news item for git-annex 3.20111122 2011-11-22 14:41:52 -04:00
Joey Hess
322d9b1cc0 releasing version 3.20111122 2011-11-22 14:40:11 -04:00
Joey Hess
7f7ae7a3b1 find: Support --print0
It would be nice if command-specific options were supported. The first
difficulty is that which command is being called is not known until after
getopt; but that could be worked around by finding the first non-dashed
parameter. Storing the settings without putting them in the annex monad is
the next difficulty; it could perhaps be handled by making the seek stage
pass applicable settings into the start stage (and from there on to perform
as needed). But that still leaves a problem, what data type to use to
represent the options between getopt and seek?
2011-11-22 14:06:31 -04:00
Joey Hess
fc2f0e8b1a response; cannot reproduce 2011-11-22 12:37:51 -04:00
Joey Hess
d1ecd381c9 Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-22 12:22:28 -04:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
35b4706958 2011-11-22 07:09:24 +00:00
Joey Hess
297bcf194f Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-21 18:37:40 -04:00
http://cgray.myopenid.com/
6c0448d94c 2011-11-21 22:24:04 +00:00
Joey Hess
0f0169fa99 comment update 2011-11-20 22:49:53 -04:00
Joey Hess
2768be7136 response 2011-11-20 14:19:03 -04:00
Joey Hess
40828a6299 Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-20 14:15:29 -04:00
Joey Hess
d675f1c82e status --json now shows most things
Left out the backend usage graph for now, and bad/temp directory sizes
are only displayed when present. Also, disk usage is returned as a string
with units, which I can see changing later.
2011-11-20 14:12:48 -04:00
Joey Hess
128b4bd015 tweaks 2011-11-19 15:57:08 -04:00
Joey Hess
0fa1d136dc tweak 2011-11-19 15:40:40 -04:00
Joey Hess
32d9813b1d tweak 2011-11-19 15:27:10 -04:00
Joey Hess
3905053a18 update comment to explain non-obvious temp file 2011-11-19 15:16:38 -04:00
Joey Hess
1b90918cec avoid error message when doing get --from on file not present on remote 2011-11-18 17:26:37 -04:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
1de00df636 2011-11-18 21:12:30 +00:00
Joey Hess
c50a5fbeb4 status: Include all special remotes in the list of repositories.
Special remotes do not always have a description listed in uuid.log,
and such ones were not listed before.
2011-11-18 13:22:48 -04:00
Joey Hess
1326bb8635 Avoid excessive escaping for rsync special remotes that are not accessed over ssh.
This is actually tricky, 45bbf210a1 added
the escaping because it's needed for rsync that does go over ssh.
So I had to detect whether the remote's rsync url will use ssh or not,
and vary the escaping.
2011-11-18 12:53:48 -04:00
Joey Hess
ed55a750d5 response 2011-11-18 11:58:55 -04:00
http://ertai.myopenid.com/
1516458885 2011-11-18 14:11:08 +00:00
Joey Hess
c70b78d40a migrate: Don't fall over a stale temp file. 2011-11-17 18:29:28 -04:00
Joey Hess
8b892901a9 analysis; not a bug but a feature 2011-11-17 18:20:06 -04:00
Joey Hess
4f6ca37b27 Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-17 18:18:28 -04:00
Joey Hess
d66fac1ec8 fix typo introduced with the Ref type 2011-11-17 18:17:34 -04:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
b3bbc1cbb6 2011-11-17 21:56:55 +00:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
abd4e1192f 2011-11-17 21:51:55 +00:00
Joey Hess
1ffd54ef78 ensure branch exists before trying to update it
The branch may not exist, if .git/annex has been copied over from another
repo (or a corrupted repo). I suppose it could also have gotten deleted
somehow. Without this, there is a confusing failure.
2011-11-16 18:56:06 -04:00
Joey Hess
6d9f525f64 clarify 2011-11-16 11:59:17 -04:00
Joey Hess
9290095fc2 improve type signatures with a Ref newtype
In git, a Ref can be a Sha, or a Branch, or a Tag. I added type aliases for
those. Note that this does not prevent mixing up of eg, refs and branches
at the type level. Since git really doesn't care, except rare cases like
git update-ref, or git tag -d, that seems ok for now.

There's also a tree-ish, but let's just use Ref for it. A given Sha or Ref
may or may not be a tree-ish, depending on the object type, so there seems
no point in trying to represent it at the type level.
2011-11-16 02:41:46 -04:00
Joey Hess
272a67921c better name 2011-11-16 01:46:46 -04:00
Joey Hess
2bb6b02948 When not run in a git repository, git-annex can still display a usage message, and "git annex version" even works.
Things that sound simple, but are made hard by the Annex monad being built
with the assumption that there will always be a git repo.
2011-11-16 00:49:09 -04:00
Joey Hess
84784e2ca1 cleanup 2011-11-16 00:07:06 -04:00
Joey Hess
6d0af3b211 Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-16 00:05:15 -04:00
Joey Hess
9b71b5f26c fix display of semitrusted repos in status
semitrusted uuids rarely are listed in trust.log, so a special case
is needed to get a list of them. Take the difference of all known uuids
with non-semitrusted uuids.
2011-11-16 00:01:07 -04:00
Joey Hess
e83b966eb5 cleanup 2011-11-15 23:51:24 -04:00
Joey Hess
21a925dcf1 merge: Now runs in constant space.
Before, a merge was first calculated, by running various actions that
called git and built up a list of lines, which were at the end sent
to git update-index. This necessarily used space proportional to the size
of the diff between the trees being merged.

Now, lines are streamed into git update-index from each of the actions in
turn.

Runtime size of git-annex merge when merging 50000 location log files
drops from around 100 mb to a constant 4 mb.

Presumably it runs quite a lot faster, too.
2011-11-15 23:28:01 -04:00