On Tue, Nov 30, 2021 at 09:05:54AM -0500, Eric Sunshine wrote: > > - shouldn't status messages like this go to stderr anyway? I know some > > people follow the "unless it is an error, it should not to go > > stderr" philosophy. But I think in general our approach in Git is > > more "if it is the main output of the program, it goes to stdout; if > > it is chatter or progress for the user, it goes to stderr". > > I considered this as well and agree that it would be a nicer localized > fix, but... > > (1) I don't think the practice is documented anywhere, so people -- > including me when I wrote builtin/worktree.c -- might not know about > it. Indeed, we don't seem to be entirely consistent about doing it > this way. Randomly picking submodule-helper.c, for instance, I see > status-like messages going to stdout: > > printf(_("Entering '%s'\n"), displaypath); > printf(_("Synchronizing submodule url for '%s'\n"), ...); > > if (...) > format = _("Cleared directory '%s'\n"); > else > format = _("Could not remove submodule work tree '%s'\n"); > printf(format, displaypath); Yeah, we've definitely not been consistent here. There's no silver bullet for this aside from vigilance during review, but probably laying out guidelines could help. Here's a past discussion (that actually goes the other way: somebody complaining that stderr should be on stdout!) where I laid out my mental model: https://lore.kernel.org/git/20110907215716.GJ13364@xxxxxxxxxxxxxxxxxxxxx/ > (2) With git-worktree being four or five years old, for > backward-compatibility concerns, I worry that "that ship has sailed", > where 'that' is the freedom to relocate those status-like messages > from stdout to stderr. I don't want to break tooling which exists > around git-worktree. IMHO it would be OK to change these. They are, after all, marked for translation, so they're not reliably machine-readable anyway. It's possible that some script could not be parsing them, but just trying to redirect them. Or even keying on content in stderr as a sign of an error (as tcl likes to do). But I don't think that's a guarantee we want to be bound by. See 68b939b2f0 (clone: send diagnostic messages to stderr, 2013-09-18) for a similar case in the past. > I'd be happy to be wrong on the second point -- indeed, git-worktree > is still marked "experimental" in the man-page, but that may not mean > anything this late in the game -- and submit a patch which places > git-worktree's status-like messages on stderr instead of stdout. > Thoughts? I'm in favor. :) -Peff