git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Aguilar <davvid@gmail.com>
To: Thomas Rast <trast@student.ethz.ch>
Cc: "Junio C Hamano" <gitster@pobox.com>,
	git@vger.kernel.org, "Magnus Bäck" <magnus.back@sonyericsson.com>,
	"Charles Bailey" <charles@hashpling.org>,
	"Avery Pennarun" <apenwarr@gmail.com>
Subject: Re: [PATCH] mergetool: Skip autoresolved paths
Date: Thu, 19 Aug 2010 20:52:46 -0700	[thread overview]
Message-ID: <20100820035236.GA18267@gmail.com> (raw)
In-Reply-To: <201008191202.36508.trast@student.ethz.ch>

On Thu, Aug 19, 2010 at 12:02:36PM +0200, Thomas Rast wrote:
> David Aguilar wrote:
> > When mergetool is run without path limiters it loops
> > over each entry in 'git ls-files -u'.  This includes
> > autoresolved paths.
> [...]
> > +test_expect_success 'mergetool merges all from subdir' '
> > +    cd subdir && (
> > +    git config rerere.enabled false &&
> > +    test_must_fail git merge master &&
> > +    git mergetool --no-prompt &&
> > +    test "$(cat ../file1)" = "master updated" &&
> > +    test "$(cat ../file2)" = "master new" &&
> > +    test "$(cat file3)" = "master new sub" &&
> > +    git add ../file1 ../file2 file3 &&
> > +    git commit -m "branch2 resolved by mergetool from subdir") &&
> > +    cd ..
> > +'
> 
> This test never worked in my automatic testing (it fails and bisects
> to this commit).
> 
> It might be because the cronjob doesn't have a tty, as I'm seeing the
> output below (note the error at the end).  Any insights?

It must be the tty.


> expecting success: 
>     cd subdir && (
>     git config rerere.enabled false &&
>     test_must_fail git merge master &&
>     git mergetool --no-prompt &&
>     test "$(cat ../file1)" = "master updated" &&
>     test "$(cat ../file2)" = "master new" &&
>     test "$(cat file3)" = "master new sub" &&
>     git add ../file1 ../file2 file3 &&
>     git commit -m "branch2 resolved by mergetool from subdir") &&
>     cd ..
> [...]
> /local/home/trast/git/t/valgrind/bin/git-mergetool: line 302: /dev/tty: No such device
>  or address
> /local/home/trast/git/t/valgrind/bin/git-mergetool: line 299: /dev/tty: No such device
>  or address


git-mergetool lines 295-307:

    files_to_merge |
    while IFS= read i
    do
	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
	last_status=$?
	if test $last_status -ne 0; then
	    rollup_status=1
	fi
    done

The reason the test fails without a tty is that we've never
exercised this code in the past.

This commit did not introduce the "< /dev/tty > /dev/tty"
idiom.  It was introduced in b0169d84 by Charles Bailey.
What this commit did do was add test coverage to it,
which is good because it uncovered this problem :-)

Charles, is there another way we can write this?
Is there a reason why we need the tty redirection?
Can we drop it or is there a portability concern?

FWIW, the merge_file call in the else clause that follows
this section does not use tty redirection.

-- 

	David

  reply	other threads:[~2010-08-20  3:52 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-12 21:28 Status of conflicted files resolved with rerere Magnus Bäck
2010-08-12 21:36 ` Avery Pennarun
2010-08-13 17:19   ` Jay Soffian
2010-08-15  2:24   ` David Aguilar
2010-08-15  6:59     ` Junio C Hamano
2010-08-15 16:00       ` Magnus Bäck
2010-08-17  9:22       ` [PATCH] mergetool: Skip autoresolved paths David Aguilar
2010-08-19 10:02         ` Thomas Rast
2010-08-20  3:52           ` David Aguilar [this message]
2010-08-20  9:57             ` Charles Bailey
2010-08-20 10:09               ` Jonathan Nieder
2010-08-20 11:17             ` [PATCH] mergetool: Remove explicit references to /dev/tty Charles Bailey
2010-08-20 12:27               ` Jonathan Nieder
2010-08-20 13:50                 ` Charles Bailey
2010-08-20 14:19                   ` Jonathan Nieder
2010-08-20 15:25                 ` [PATCH v2] " Charles Bailey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100820035236.GA18267@gmail.com \
    --to=davvid@gmail.com \
    --cc=apenwarr@gmail.com \
    --cc=charles@hashpling.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=magnus.back@sonyericsson.com \
    --cc=trast@student.ethz.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).