git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Why does git-mergetool use /dev/tty?

From
Charles Bailey <charles@hashpling.org>
Date
Aug 24, 2010, 06:43 UTC
Message-ID
<20100824064306.GA18308@hashpling.org>
In-Reply-To
<3D6C7B12-FA06-4EAD-9781-5CA74FE23057@gernhardtsoftware.com>
On Mon, Aug 23, 2010 at 09:49:57PM -0400, Brian Gernhardt wrote:
Show 8 quoted lines
> git-mergetool.sh, lines 298-302:
> >     if test $last_status -ne 0; then
> >         prompt_after_failed_merge < /dev/tty || exit 1
> >     fi
> >     printf "\n"
> >     merge_file "$i" < /dev/tty > /dev/tty
> 
> Why does git-mergetool ignore the provided STDIN and STDOUT when not given a path to merge?

It doesn't deliberately ignore them, it merely loses them because what you've quoted is in the middle of a redirect, you snipped:

    files_to_merge |
    while IFS= read i
    do  

mergetool is designed to be an interactive tool and didn't originally have any tests so this was a reasonable (if ugly) way to restore access to the user for the merge_file function.

This is also why all the previous test provided an explict list of files to merge, because this was the only testable way to invoke mergetool.

There's a proposed patch to save and restore the original stdin instead of assuming that there is a tty in pu: af314714.

If the current behaviour is causing an issue for you then testing this fix would be appreciated.

Thanks,
Charles.
Previous: Brian GernhardtNext: Brian Gernhardt
Message 4 of 5 in “Why does git-mergetool use /dev/tty?”
  1. Brian GernhardtAug 24, 2010
  2. Jonathan NiederAug 24, 2010
  3. Brian GernhardtAug 24, 2010
  4. Charles BaileyAug 24, 2010
  5. Brian GernhardtAug 24, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.