Some small patches

Thomas Arendsen Hein thomas at intevation.de
Thu Aug 4 12:46:53 CDT 2005


Hi!

See their descriptions.

Attached and pullable from http://hg.intevation.org/mercurial-tah/

Thomas

-- 
Email: thomas at intevation.de
http://intevation.de/~thomas/
-------------- next part --------------
# HG changeset patch
# User Thomas Arendsen Hein <thomas at intevation.de>
# Node ID 7a6acd56cd5a1e128a7db0c099bebb00e0c1820b
# Parent  eef752151556d45783128473e937b52378e7903b
Hide error message of type command.

diff -r eef752151556d45783128473e937b52378e7903b -r 7a6acd56cd5a1e128a7db0c099bebb00e0c1820b hgmerge
--- a/hgmerge	Tue Aug  2 07:34:23 2005
+++ b/hgmerge	Thu Aug  4 15:56:44 2005
@@ -19,13 +19,13 @@
 cp "$LOCAL" "$LOCAL.orig"
 
 # Attempt to do a non-interactive merge
-if type merge > /dev/null ; then
+if type merge > /dev/null 2>&1; then
     if merge "$LOCAL" "$BASE" "$OTHER" 2> /dev/null; then
 	# success!
 	exit 0
     fi
     cp "$LOCAL.orig" "$LOCAL"
-elif type diff3 > /dev/null ; then
+elif type diff3 > /dev/null 2>&1; then
     if diff3 -m "$LOCAL.orig" "$BASE" "$OTHER" > "$LOCAL" ; then
 	# success
 	exit 0
@@ -35,7 +35,7 @@
 
 if [ -n "$DISPLAY" ]; then
     # try using kdiff3, which is fairly nice
-    if type kdiff3 > /dev/null ; then
+    if type kdiff3 > /dev/null 2>&1; then
 	if kdiff3 --auto "$BASE" "$LOCAL" "$OTHER" -o "$LOCAL" ; then
 	    exit 0
 	else
@@ -44,7 +44,7 @@
     fi
 
     # try using tkdiff, which is a bit less sophisticated
-    if type tkdiff > /dev/null ; then
+    if type tkdiff > /dev/null 2>&1; then
 	if tkdiff "$LOCAL" "$OTHER" -a "$BASE" -o "$LOCAL" ; then
 	    exit 0
 	else
@@ -54,13 +54,13 @@
 fi
 
 # Attempt to do a merge with $EDITOR
-if type merge > /dev/null ; then
+if type merge > /dev/null 2>&1; then
     echo "conflicts detected in $LOCAL"
     merge "$LOCAL" "$BASE" "$OTHER" 2>/dev/null || $EDITOR "$LOCAL"
     exit 0
 fi
 
-if type diff3 > /dev/null ; then
+if type diff3 > /dev/null 2>&1; then
     echo "conflicts detected in $LOCAL"
     diff3 -m "$LOCAL.orig" "$BASE" "$OTHER" > "$LOCAL" || $EDITOR "$LOCAL"
     exit 0
@@ -73,8 +73,8 @@
 }
 
 # attempt to manually merge with diff and patch
-if type diff > /dev/null ; then
-    if type patch > /dev/null ; then
+if type diff > /dev/null 2>&1; then
+    if type patch > /dev/null 2>&1; then
 	# Remove temporary files even if we get interrupted
 	trap "cleanup_exit 1" TERM KILL INT QUIT ABRT
 
-------------- next part --------------
# HG changeset patch
# User Thomas Arendsen Hein <thomas at intevation.de>
# Node ID 764b0350acb8c6c261f597488e6928eb83204e76
# Parent  7a6acd56cd5a1e128a7db0c099bebb00e0c1820b
Shortened hgmerge a little bit.

diff -r 7a6acd56cd5a1e128a7db0c099bebb00e0c1820b -r 764b0350acb8c6c261f597488e6928eb83204e76 hgmerge
--- a/hgmerge	Thu Aug  4 15:56:44 2005
+++ b/hgmerge	Thu Aug  4 16:16:41 2005
@@ -20,36 +20,24 @@
 
 # Attempt to do a non-interactive merge
 if type merge > /dev/null 2>&1; then
-    if merge "$LOCAL" "$BASE" "$OTHER" 2> /dev/null; then
-	# success!
-	exit 0
-    fi
+    merge "$LOCAL" "$BASE" "$OTHER" 2> /dev/null && exit 0
     cp "$LOCAL.orig" "$LOCAL"
 elif type diff3 > /dev/null 2>&1; then
-    if diff3 -m "$LOCAL.orig" "$BASE" "$OTHER" > "$LOCAL" ; then
-	# success
-	exit 0
-    fi
+    diff3 -m "$LOCAL.orig" "$BASE" "$OTHER" > "$LOCAL" && exit 0
     cp "$LOCAL.orig" "$LOCAL"
 fi
 
 if [ -n "$DISPLAY" ]; then
     # try using kdiff3, which is fairly nice
     if type kdiff3 > /dev/null 2>&1; then
-	if kdiff3 --auto "$BASE" "$LOCAL" "$OTHER" -o "$LOCAL" ; then
-	    exit 0
-	else
-	    exit 1
-	fi
+	kdiff3 --auto "$BASE" "$LOCAL" "$OTHER" -o "$LOCAL" || exit 1
+	exit 0
     fi
 
     # try using tkdiff, which is a bit less sophisticated
     if type tkdiff > /dev/null 2>&1; then
-	if tkdiff "$LOCAL" "$OTHER" -a "$BASE" -o "$LOCAL" ; then
-	    exit 0
-	else
-	    exit 1
-	fi
+	tkdiff "$LOCAL" "$OTHER" -a "$BASE" -o "$LOCAL" || exit 1
+	exit 0
     fi
 fi
 
@@ -73,25 +61,23 @@
 }
 
 # attempt to manually merge with diff and patch
-if type diff > /dev/null 2>&1; then
-    if type patch > /dev/null 2>&1; then
-	# Remove temporary files even if we get interrupted
-	trap "cleanup_exit 1" TERM KILL INT QUIT ABRT
+if type diff > /dev/null 2>&1 && type patch > /dev/null 2>&1; then
+    # Remove temporary files even if we get interrupted
+    trap "cleanup_exit 1" TERM KILL INT QUIT ABRT
 
-	HGTMP="${TMPDIR-/tmp}/hgmerge.$RANDOM.$RANDOM.$RANDOM.$$"
-	(umask 077 && mkdir "$HGTMP") || {
-	    echo "Could not create temporary directory! Exiting." 1>&2
-	    exit 1
-	}
+    HGTMP="${TMPDIR-/tmp}/hgmerge.$RANDOM.$RANDOM.$RANDOM.$$"
+    (umask 077 && mkdir "$HGTMP") || {
+	echo "Could not create temporary directory! Exiting." 1>&2
+	exit 1
+    }
 
-	diff -u "$BASE" "$OTHER" > "$HGTMP/diff"
-	if patch "$LOCAL" < "$HGTMP/diff" ; then
-	    cleanup_exit 0
-	else
-	    $EDITOR "$LOCAL" "$LOCAL.rej"
-	fi
-	cleanup_exit 1
+    diff -u "$BASE" "$OTHER" > "$HGTMP/diff"
+    if patch "$LOCAL" < "$HGTMP/diff"; then
+	cleanup_exit 0
+    else
+	$EDITOR "$LOCAL" "$LOCAL.rej"
     fi
+    cleanup_exit 1
 fi
 
 echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!"
-------------- next part --------------
# HG changeset patch
# User Thomas Arendsen Hein <thomas at intevation.de>
# Node ID ca080d28d0af34c7870fbbbd5797563d759c61f1
# Parent  764b0350acb8c6c261f597488e6928eb83204e76
If rejects are empty after using the editor, merge with diff+patch was ok.

diff -r 764b0350acb8c6c261f597488e6928eb83204e76 -r ca080d28d0af34c7870fbbbd5797563d759c61f1 hgmerge
--- a/hgmerge	Thu Aug  4 16:16:41 2005
+++ b/hgmerge	Thu Aug  4 16:23:31 2005
@@ -75,7 +75,8 @@
     if patch "$LOCAL" < "$HGTMP/diff"; then
 	cleanup_exit 0
     else
-	$EDITOR "$LOCAL" "$LOCAL.rej"
+	# If rejects are empty after using the editor, merge was ok
+	$EDITOR "$LOCAL" "$LOCAL.rej" && test -s "$LOCAL.rej" || cleanup_exit 0
     fi
     cleanup_exit 1
 fi
-------------- next part --------------
# HG changeset patch
# User Thomas Arendsen Hein <thomas at intevation.de>
# Node ID 232d0616a80ab7e21b97a74e910654e341b71df9
# Parent  ca080d28d0af34c7870fbbbd5797563d759c61f1
Cleaned up trap handling:
- Use numbers instead of signal names
- No need to explicitly call "cleanup_exit RC" to exit with return code RC.

diff -r ca080d28d0af34c7870fbbbd5797563d759c61f1 -r 232d0616a80ab7e21b97a74e910654e341b71df9 hgeditor
--- a/hgeditor	Thu Aug  4 16:23:31 2005
+++ b/hgeditor	Thu Aug  4 16:43:05 2005
@@ -24,11 +24,11 @@
 HGTMP=""
 cleanup_exit() {
     rm -rf "$HGTMP"
-    exit $1
 }
 
 # Remove temporary files even if we get interrupted
-trap "cleanup_exit 255" TERM KILL INT QUIT ABRT
+trap "cleanup_exit" 0 # normal exit
+trap "exit 255" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
 
 HGTMP="${TMPDIR-/tmp}/hgeditor.$RANDOM.$RANDOM.$RANDOM.$$"
 (umask 077 && mkdir "$HGTMP") || {
@@ -51,8 +51,8 @@
 grep -vE '^(HG: manifest hash .*)?$' "$1" >> "$HGTMP/msg"
 
 CHECKSUM=`md5sum "$HGTMP/msg"`
-$EDITOR "$HGTMP/msg" "$HGTMP/diff" || cleanup_exit $?
-echo "$CHECKSUM" | md5sum -c >/dev/null 2>&1 && cleanup_exit 13
+$EDITOR "$HGTMP/msg" "$HGTMP/diff" || exit $?
+echo "$CHECKSUM" | md5sum -c >/dev/null 2>&1 && exit 13
 
 if [ "$SIGN" == "1" ]; then
     {
@@ -64,4 +64,4 @@
     mv "$HGTMP/msg" "$1"
 fi
 
-cleanup_exit $?
+exit $?
diff -r ca080d28d0af34c7870fbbbd5797563d759c61f1 -r 232d0616a80ab7e21b97a74e910654e341b71df9 hgmerge
--- a/hgmerge	Thu Aug  4 16:23:31 2005
+++ b/hgmerge	Thu Aug  4 16:43:05 2005
@@ -57,13 +57,13 @@
 HGTMP=""
 cleanup_exit() {
     rm -rf "$HGTMP"
-    exit $1
 }
 
 # attempt to manually merge with diff and patch
 if type diff > /dev/null 2>&1 && type patch > /dev/null 2>&1; then
     # Remove temporary files even if we get interrupted
-    trap "cleanup_exit 1" TERM KILL INT QUIT ABRT
+    trap "cleanup_exit" 0 # normal exit
+    trap "exit 1" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
 
     HGTMP="${TMPDIR-/tmp}/hgmerge.$RANDOM.$RANDOM.$RANDOM.$$"
     (umask 077 && mkdir "$HGTMP") || {
@@ -73,12 +73,12 @@
 
     diff -u "$BASE" "$OTHER" > "$HGTMP/diff"
     if patch "$LOCAL" < "$HGTMP/diff"; then
-	cleanup_exit 0
+	exit 0
     else
 	# If rejects are empty after using the editor, merge was ok
-	$EDITOR "$LOCAL" "$LOCAL.rej" && test -s "$LOCAL.rej" || cleanup_exit 0
+	$EDITOR "$LOCAL" "$LOCAL.rej" && test -s "$LOCAL.rej" || exit 0
     fi
-    cleanup_exit 1
+    exit 1
 fi
 
 echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!"
-------------- next part --------------
# HG changeset patch
# User Thomas Arendsen Hein <thomas at intevation.de>
# Node ID b65773f7db4161aaa7340ecd32d69e0dacac4d9a
# Parent  232d0616a80ab7e21b97a74e910654e341b71df9
Handle broken pipe on pressing Ctrl-C with e.g. 'hg log|grep something'.

diff -r 232d0616a80ab7e21b97a74e910654e341b71df9 -r b65773f7db4161aaa7340ecd32d69e0dacac4d9a mercurial/commands.py
--- a/mercurial/commands.py	Thu Aug  4 16:43:05 2005
+++ b/mercurial/commands.py	Thu Aug  4 17:06:49 2005
@@ -1400,7 +1400,14 @@
     except SignalInterrupt:
         u.warn("killed!\n")
     except KeyboardInterrupt:
-        u.warn("interrupted!\n")
+        try:
+            u.warn("interrupted!\n")
+        except IOError, inst:
+            if inst.errno == errno.EPIPE:
+                if u.debugflag:
+                    u.warn("\nbroken pipe\n")
+            else:
+                raise
     except IOError, inst:
         if hasattr(inst, "code"):
             u.warn("abort: %s\n" % inst)
-------------- next part --------------
# HG changeset patch
# User Thomas Arendsen Hein <thomas at intevation.de>
# Node ID ad8ff3534fde94b8e13b7086426aa357a3ddba0f
# Parent  b65773f7db4161aaa7340ecd32d69e0dacac4d9a
Removed special FIXME handling in run-tests, added bug info to .out files.

diff -r b65773f7db4161aaa7340ecd32d69e0dacac4d9a -r ad8ff3534fde94b8e13b7086426aa357a3ddba0f tests/run-tests
--- a/tests/run-tests	Thu Aug  4 17:06:49 2005
+++ b/tests/run-tests	Thu Aug  4 17:13:17 2005
@@ -97,17 +97,11 @@
 	if diff -u "$OUTOK" "$OUT" > /dev/null; then
 	    : no differences
 	else
-	    if FIXME="`grep 'FIXME' \"$TESTDIR/$1\"`"; then
-		echo
-		echo "$1 failed, but this is ignored because of:"
-		echo "$FIXME"
-	    else
-		cp "$OUT" "$ERR"
-		echo
-		echo "$1 output changed:"
-		diff -u "$OUTOK" "$ERR" || true
-		fail=1
-	    fi
+	    cp "$OUT" "$ERR"
+	    echo
+	    echo "$1 output changed:"
+	    diff -u "$OUTOK" "$ERR" || true
+	    fail=1
 	fi
     fi
 
diff -r b65773f7db4161aaa7340ecd32d69e0dacac4d9a -r ad8ff3534fde94b8e13b7086426aa357a3ddba0f tests/test-merge-revert
--- a/tests/test-merge-revert	Thu Aug  4 17:06:49 2005
+++ b/tests/test-merge-revert	Thu Aug  4 17:13:17 2005
@@ -1,5 +1,4 @@
 #!/bin/sh
-# FIXME: This test may fail due to an uncritical bug in Mercurial.
 
 mkdir t
 cd t
diff -r b65773f7db4161aaa7340ecd32d69e0dacac4d9a -r ad8ff3534fde94b8e13b7086426aa357a3ddba0f tests/test-merge-revert.out
--- a/tests/test-merge-revert.out	Thu Aug  4 17:06:49 2005
+++ b/tests/test-merge-revert.out	Thu Aug  4 17:13:17 2005
@@ -26,6 +26,7 @@
 + hg update
 merging file1
 + hg diff
+FIXME: This is a known bug:
 + hg status
 + hg id
 3aa14bbc23d9 tip
diff -r b65773f7db4161aaa7340ecd32d69e0dacac4d9a -r ad8ff3534fde94b8e13b7086426aa357a3ddba0f tests/test-merge-revert2
--- a/tests/test-merge-revert2	Thu Aug  4 17:06:49 2005
+++ b/tests/test-merge-revert2	Thu Aug  4 17:13:17 2005
@@ -1,5 +1,4 @@
 #!/bin/sh
-# FIXME: This test may fail due to an uncritical bug in Mercurial.
 
 mkdir t
 cd t
diff -r b65773f7db4161aaa7340ecd32d69e0dacac4d9a -r ad8ff3534fde94b8e13b7086426aa357a3ddba0f tests/test-merge-revert2.out
--- a/tests/test-merge-revert2.out	Thu Aug  4 17:06:49 2005
+++ b/tests/test-merge-revert2.out	Thu Aug  4 17:13:17 2005
@@ -44,6 +44,7 @@
 3aa14bbc23d9+ tip
 + hg revert
 + hg diff
+FIXME: This is a known bug:
 + hg status
 + hg id
 3aa14bbc23d9 tip
-------------- next part --------------
# HG changeset patch
# User Thomas Arendsen Hein <thomas at intevation.de>
# Node ID 78a9f95766dc47f642366888a2d44174f0b83e3e
# Parent  ad8ff3534fde94b8e13b7086426aa357a3ddba0f
Use sh instead of bash in tests.

diff -r ad8ff3534fde94b8e13b7086426aa357a3ddba0f -r 78a9f95766dc47f642366888a2d44174f0b83e3e tests/test-clone
--- a/tests/test-clone	Thu Aug  4 17:13:17 2005
+++ b/tests/test-clone	Thu Aug  4 17:20:40 2005
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 
 mkdir a
 cd a
diff -r ad8ff3534fde94b8e13b7086426aa357a3ddba0f -r 78a9f95766dc47f642366888a2d44174f0b83e3e tests/test-clone-failure
--- a/tests/test-clone-failure	Thu Aug  4 17:13:17 2005
+++ b/tests/test-clone-failure	Thu Aug  4 17:20:40 2005
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 
 # No local source
 hg clone a b
-------------- next part --------------
# HG changeset patch
# User Thomas Arendsen Hein <thomas at intevation.de>
# Node ID 9de3535caae8ebbf2cf58997850abbea1c627387
# Parent  78a9f95766dc47f642366888a2d44174f0b83e3e
Cleaned up trap handling in run-tests, too.

diff -r 78a9f95766dc47f642366888a2d44174f0b83e3e -r 9de3535caae8ebbf2cf58997850abbea1c627387 tests/run-tests
--- a/tests/run-tests	Thu Aug  4 17:20:40 2005
+++ b/tests/run-tests	Thu Aug  4 17:23:07 2005
@@ -27,11 +27,11 @@
 HGTMP=""
 cleanup_exit() {
     rm -rf "$HGTMP"
-    exit $1
 }
 
 # Remove temporary files even if we get interrupted
-trap "cleanup_exit 255" TERM KILL INT QUIT ABRT
+trap "cleanup_exit" 0 # normal exit
+trap "exit 255" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
 
 HGTMP="${TMPDIR-/tmp}/hgtests.$RANDOM.$RANDOM.$RANDOM.$$"
 (umask 077 && mkdir "$HGTMP") || {
@@ -61,7 +61,7 @@
     chmod 755 "$INST/bin/hg"
 else
     cat tests/install.err
-    cleanup_exit 1
+    exit 1
 fi
 cd "$TESTDIR"
 
@@ -126,6 +126,6 @@
 echo "Ran $tests tests, $failed failed."
 
 if [ $failed -gt 0 ] ; then
-    cleanup_exit 1
+    exit 1
 fi
-cleanup_exit 0
+exit 0


More information about the Mercurial mailing list