Todd Zullinger <[email protected]> writes:
>> I wonder if this line in 3320 is doing what it meant to do:
>>
>> test_must_fail git notes merge z 2>&1 >out && test_i18ngrep
>> "Automatic notes merge failed" out && grep -v "A notes merge into
>> refs/notes/x is already in-progress in" out
>
> That's a fine question. I only grepped for 2>&1 >/dev/null. Dropping
> /dev/null, as you did only turns up that test as an additional hit.
>
> I think, based on a very cursory reading of the test, that it's
> intending to direct stderr and stdout to the file out. The test gets
> lucky that the code in builtin/notes.c directs the error message to
> stdout:
>
> printf(_("Automatic notes merge failed. Fix conflicts in %s and "
> "commit the result with 'git notes merge --commit', or "
> "abort the merge with 'git notes merge --abort'.\n"),
> git_path(NOTES_MERGE_WORKTREE));
>
> Perhaps that should be using fprintf(stderr, ...) instead? (And the
> test redirection corrected as well, of course.) If that seems
> correct, I can submit the trivial patch for that as well, while I'm on
> the subject.
The message goes to the standard output stream since it was
introduced in 809f38c8 ("git notes merge: Manual conflict
resolution, part 1/2", 2010-11-09) and 6abb3655 ("git notes merge:
Manual conflict resolution, part 2/2", 2010-11-09). I do think it
makes more sense to send it to the standard error stream, but just
in case if the original author thinks of a reason why it shouldn't,
let's summon Johan and ask his input.
Thanks.