--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-narrow-update.t Mon Jan 29 16:19:33 2018 -0500
@@ -0,0 +1,76 @@
+
+ $ . "$TESTDIR/narrow-library.sh"
+
+create full repo
+
+ $ hg init master
+ $ cd master
+ $ echo init > init
+ $ hg ci -Aqm 'initial'
+
+ $ mkdir inside
+ $ echo inside > inside/f1
+ $ mkdir outside
+ $ echo outside > outside/f1
+ $ hg ci -Aqm 'add inside and outside'
+
+ $ echo modified > inside/f1
+ $ hg ci -qm 'modify inside'
+
+ $ echo modified > outside/f1
+ $ hg ci -qm 'modify outside'
+
+ $ cd ..
+
+ $ hg clone --narrow ssh://user@dummy/master narrow --include inside
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 2 changes to 1 files
+ new changesets *:* (glob)
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd narrow
+ $ hg debugindex -c
+ rev offset length base linkrev nodeid p1 p2
+ 0 0 64 0 0 9958b1af2add 000000000000 000000000000
+ 1 64 81 1 1 2db4ce2a3bfe 9958b1af2add 000000000000
+ 2 145 75 2 2 0980ee31a742 2db4ce2a3bfe 000000000000
+ 3 220 (76|77) 3 3 4410145019b7 0980ee31a742 000000000000 (re)
+
+ $ hg update -q 0
+
+Can update to revision with changes inside
+
+ $ hg update -q 'desc("add inside and outside")'
+ $ hg update -q 'desc("modify inside")'
+ $ find *
+ inside
+ inside/f1 (glob)
+ $ cat inside/f1
+ modified
+
+Can update to revision with changes outside
+
+ $ hg update -q 'desc("modify outside")'
+ $ find *
+ inside
+ inside/f1 (glob)
+ $ cat inside/f1
+ modified
+
+Can update with a deleted file inside
+
+ $ hg rm inside/f1
+ $ hg update -q 'desc("modify inside")'
+ $ hg update -q 'desc("modify outside")'
+ $ hg update -q 'desc("initial")'
+ $ hg update -q 'desc("modify inside")'
+
+Can update with a moved file inside
+
+ $ hg mv inside/f1 inside/f2
+ $ hg update -q 'desc("modify outside")'
+ $ hg update -q 'desc("initial")'
+ $ hg update -q 'desc("modify inside")'