[PATCH 3 of 3] chg: detect chg started by chg
Jun Wu
quark at fb.com
Wed Feb 24 14:31:25 UTC 2016
# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1456324196 0
# Wed Feb 24 14:29:56 2016 +0000
# Node ID 2c07d50c16da4f859b3cb002d9c5a04554b7478f
# Parent b7c36ebb96f5492f3dd90bacbb8fee65c6eabb59
chg: detect chg started by chg
Sometimes people may create a symbol link from hg to chg, or write a wrapper
script named hg calling chg. Without $HG and $CHGHG set, this will lead to
chg executes itself causing deadlock. The user will notice chg hangs for some
time and aborts with a timed out message, without knowing the root cause and
how to solve it.
This patch sets a dummy environment variable CHGMARK to detect this situation,
and print a fatal message with some possible solutions.
diff --git a/contrib/chg/chg.c b/contrib/chg/chg.c
--- a/contrib/chg/chg.c
+++ b/contrib/chg/chg.c
@@ -479,6 +479,13 @@
if (getenv("CHGDEBUG"))
enabledebugmsg();
+ if (getenv("CHGMARK"))
+ abortmsg("chg started by chg detected.\n"
+ "Please make sure ${HG:-hg} is not a symlink or "
+ "wrapper to chg. Alternatively, set $CHGHG to the "
+ "path of real hg.");
+ setenv("CHGMARK", "", 1);
+
if (isunsupported(argc, argv))
execoriginalhg(argv);
More information about the Mercurial-devel
mailing list