--- a/tests/test-backout.t Sat Oct 17 01:15:34 2015 +0900
+++ b/tests/test-backout.t Sat Oct 17 01:15:34 2015 +0900
@@ -259,6 +259,60 @@
line 2
line 3
+Test visibility of in-memory dirstate changes outside transaction to
+external hook process
+
+ $ cat > $TESTTMP/checkvisibility.sh <<EOF
+ > echo "==== \$1:"
+ > hg parents --template "{rev}:{node|short}\n"
+ > echo "===="
+ > EOF
+
+"hg backout --merge REV1" at REV2 below implies steps below:
+
+(1) update to REV1 (REV2 => REV1)
+(2) revert by REV1^1
+(3) commit backnig out revision (REV3)
+(4) update to REV2 (REV3 => REV2)
+(5) merge with REV3 (REV2 => REV2, REV3)
+
+== test visibility to external preupdate hook
+
+ $ hg update -q -C 2
+ $ hg --config extensions.strip= strip 3
+ saved backup bundle to * (glob)
+
+ $ cat >> .hg/hgrc <<EOF
+ > [hooks]
+ > preupdate.visibility = sh $TESTTMP/checkvisibility.sh preupdate
+ > EOF
+
+("-m" is needed to avoid writing dirstte changes out at other than
+invocation of the hook to be examined)
+
+ $ hg backout --merge -d '3 0' 1 --tool=true -m 'fixed comment'
+ ==== preupdate:
+ 2:6ea3f2a197a2
+ ====
+ reverting a
+ created new head
+ changeset 3:d92a3f57f067 backs out changeset 1:5a50a024c182
+ ==== preupdate:
+ 3:d92a3f57f067
+ ====
+ merging with changeset 3:d92a3f57f067
+ ==== preupdate:
+ 2:6ea3f2a197a2
+ ====
+ merging a
+ 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+ $ cat >> .hg/hgrc <<EOF
+ > [hooks]
+ > preupdate.visibility =
+ > EOF
+
$ cd ..
backout should not back out subsequent changesets