Re: [PATCH] Abort mergetool on read error from stdinput
2 dec 2010 kl. 07:38 skrev Jonathan Nieder:
Show 27 quoted lines
> Hi Robin,
>
> Robin Rosenberg wrote:
>
>> infinite loop that is somewhat tricky to stop. Abort the script
>> if bash read fails.
>>
>> Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
>
> That motivates half the change.
>
>> --- a/git-mergetool--lib.sh
>> +++ b/git-mergetool--lib.sh
>> @@ -35,7 +35,7 @@ check_unchanged () {
>> while true; do
>> echo "$MERGED seems unchanged."
>> printf "Was the merge successful? [y/n] "
>> - read answer
>> + read answer < /dev/tty || exit 1
>
> Why not
> read answer || exit 1
>
> so tests can still run without blocking? Aside from that, this looks
> like a good change; thanks.
>
> What platform are you on? ^C kills the entire process group here.Here is a better version and motivation.
-- robin
>From 3aa3793a4d1dff940ca6b698a9c01a1fc9bdb9b3 Mon Sep 17 00:00:00 2001
From: Robin Rosenberg <robin.rosenberg@dewire.com>
Date: Fri, 3 Dec 2010 09:23:23 +0100
Subject: [PATCH] Abort mergetool on read error from stdinput
If the mergetool has not quit (by mistake like pressing Command-W instead of Command-Q) and the user pressed Ctrl-C in the shell that runs mergetool, bash goes into an infinite look, at least on Mac OS X. Ctrl-C kills the diff program but not the mergetool script.
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
git-mergetool--lib.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to git-mergetool--lib.sh +1 −1
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 77d4aee..1d1413d 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -35,7 +35,7 @@ check_unchanged () {
while true; do
echo "$MERGED seems unchanged."
printf "Was the merge successful? [y/n] "
- read answer
+ read answer || exit 1
case "$answer" in
y*|Y*) status=0; break ;;
n*|N*) status=1; break ;;
--
1.7.3.2.452.gb3012.dirty