Re: Why does git-mergetool use /dev/tty?
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.