46 lines
1.8 KiB
Markdown
46 lines
1.8 KiB
Markdown
When you check several files and the fsck fails, you get confusing output:
|
|
|
|
<pre>
|
|
O fsck test1 (checksum...)
|
|
E Only 1 of 2 trustworthy copies of test1 exist.
|
|
E Back it up with git-annex copy.
|
|
O
|
|
O failed
|
|
O fsck test2 (checksum...)
|
|
E Only 1 of 2 trustworthy copies of test2 exist.
|
|
E Back it up with git-annex copy.
|
|
O
|
|
O failed
|
|
</pre>
|
|
|
|
The newline is in the wrong place and confuses the user. It should be printed _after_ "failed".
|
|
|
|
> This is a consequence of part of the output being printed to stderr, and
|
|
> part to stdout. I've marked the lines above with E and O.
|
|
>
|
|
> Normally a "failed" is preceeded by a message output to stdout desribing
|
|
> the problem; such a message will not be "\n" terminated, so a newline
|
|
> is always displayed before "failed". In this case, since the message
|
|
> is sent to stderr, it is newline terminated.
|
|
>
|
|
> Fixing this properly would involve storing state, or rethinking
|
|
> when git-annex displays newlines (and I rather like its behavior
|
|
> otherwise).
|
|
>
|
|
> A related problem occurs if an error message is unexpetedly printed.
|
|
> Dummying up an example:
|
|
>
|
|
> O get test1 (from foo...) E git-annex: failed to run ssh
|
|
> failed
|
|
>
|
|
> --[[Joey]]
|
|
|
|
>> Well, I fixed this in all cases except a thrown non-IO error (last
|
|
>> example aboce), which output is printed by haskell's runtime. I'd
|
|
>> have to add a second error handler to handle those, and it's not
|
|
>> clear what it would do. Often an error will occur before anything
|
|
>> else is printed, and then the current behavior is right; if something
|
|
>> has been printed it would be nice to have a newline before the error,
|
|
>> but by the time the error is caught we'd be out of the annex monad
|
|
>> and not really have any way to know if something has been printed.
|
|
>> I think my fix is good enough [[done]] --[[Joey]]
|