changeset 12074:35c143e85b1b

tests: unify test-record
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Fri, 27 Aug 2010 16:25:47 +0200
parents adfff89e6058
children f585c9bb85c1
files tests/test-record tests/test-record.out tests/test-record.t
diffstat 3 files changed, 975 insertions(+), 1002 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-record	Fri Aug 27 16:25:47 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,332 +0,0 @@
-#!/bin/sh
-
-echo "[ui]" >> $HGRCPATH
-echo "interactive=true" >> $HGRCPATH
-echo "[extensions]" >> $HGRCPATH
-echo "record=" >> $HGRCPATH
-
-echo % help
-
-hg help record
-
-hg init a
-cd a
-
-echo % select no files
-
-touch empty-rw
-hg add empty-rw
-hg record empty-rw<<EOF
-n
-EOF
-echo; hg tip -p
-
-echo % select files but no hunks
-
-hg record empty-rw<<EOF
-y
-n
-EOF
-echo; hg tip -p
-
-echo % record empty file
-
-hg record -d '0 0' -m empty empty-rw<<EOF
-y
-y
-EOF
-echo; hg tip -p
-
-echo % summary shows we updated to the new cset
-hg summary
-echo
-
-echo % rename empty file
-
-hg mv empty-rw empty-rename
-hg record -d '1 0' -m rename<<EOF
-y
-EOF
-echo; hg tip -p
-
-echo % copy empty file
-
-hg cp empty-rename empty-copy
-hg record -d '2 0' -m copy<<EOF
-y
-EOF
-echo; hg tip -p
-
-echo % delete empty file
-
-hg rm empty-copy
-hg record -d '3 0' -m delete<<EOF
-y
-EOF
-echo; hg tip -p
-
-echo % add binary file
-
-hg bundle --base -2 tip.bundle
-hg add tip.bundle
-hg record -d '4 0' -m binary<<EOF
-y
-EOF
-echo; hg tip -p
-
-echo % change binary file
-
-hg bundle --base -2 tip.bundle
-hg record -d '5 0' -m binary-change<<EOF
-y
-EOF
-echo; hg tip -p
-
-echo % rename and change binary file
-
-hg mv tip.bundle top.bundle
-hg bundle --base -2 top.bundle
-hg record -d '6 0' -m binary-change-rename<<EOF
-y
-EOF
-echo; hg tip -p
-
-echo % add plain file
-
-for i in 1 2 3 4 5 6 7 8 9 10; do
-    echo $i >> plain
-done
-
-hg add plain
-hg record -d '7 0' -m plain plain<<EOF
-y
-y
-EOF
-echo; hg tip -p
-
-echo % modify end of plain file
-
-echo 11 >> plain
-hg record -d '8 0' -m end plain <<EOF
-y
-y
-EOF
-
-echo % modify end of plain file, no EOL
-
-hg tip --template '{node}' >> plain
-hg record -d '9 0' -m noeol plain <<EOF
-y
-y
-EOF
-
-echo % modify end of plain file, add EOL
-
-echo >> plain
-hg record -d '10 0' -m eol plain <<EOF
-y
-y
-y
-EOF
-
-echo % modify beginning, trim end, record both
-
-rm plain
-for i in 2 2 3 4 5 6 7 8 9 10; do
-  echo $i >> plain
-done
-
-hg record -d '10 0' -m begin-and-end plain <<EOF
-y
-y
-y
-EOF
-echo; hg tip -p
-
-echo % trim beginning, modify end
-
-rm plain
-for i in 4 5 6 7 8 9 10.new; do
-  echo $i >> plain
-done
-
-echo % record end
-
-hg record -d '11 0' -m end-only plain <<EOF
-y
-n
-y
-EOF
-echo; hg tip -p
-
-echo % record beginning
-
-hg record -d '12 0' -m begin-only plain <<EOF
-y
-y
-EOF
-echo; hg tip -p
-
-echo % add to beginning, trim from end
-
-rm plain
-for i in 1 2 3 4 5 6 7 8 9; do
-  echo $i >> plain
-done
-
-echo % record end
-
-hg record --traceback -d '13 0' -m end-again plain<<EOF
-y
-n
-y
-EOF
-
-echo % add to beginning, middle, end
-
-rm plain
-for i in 1 2 3 4 5 5.new 5.reallynew 6 7 8 9 10 11; do
-  echo $i >> plain
-done
-
-echo % record beginning, middle
-
-hg record -d '14 0' -m middle-only plain <<EOF
-y
-y
-y
-n
-EOF
-echo; hg tip -p
-
-echo % record end
-
-hg record -d '15 0' -m end-only plain <<EOF
-y
-y
-EOF
-echo; hg tip -p
-
-mkdir subdir
-cd subdir
-echo a > a
-hg ci -d '16 0' -Amsubdir
-
-echo a >> a
-hg record -d '16 0' -m subdir-change a <<EOF
-y
-y
-EOF
-echo; hg tip -p
-
-echo a > f1
-echo b > f2
-hg add f1 f2
-
-hg ci -mz -d '17 0'
-
-echo a >> f1
-echo b >> f2
-
-echo % help, quit
-
-hg record <<EOF
-?
-q
-EOF
-
-echo % skip
-
-hg record <<EOF
-s
-EOF
-
-echo % no
-
-hg record <<EOF
-n
-EOF
-
-echo % f, quit
-
-hg record <<EOF
-f
-q
-EOF
-
-echo % s, all
-
-hg record -d '18 0' -mx <<EOF
-s
-a
-EOF
-echo; hg tip -p
-
-echo % f
-
-hg record -d '19 0' -my <<EOF
-f
-EOF
-echo; hg tip -p
-
-echo % preserve chmod +x
-
-chmod +x f1
-echo a >> f1
-hg record -d '20 0' -mz <<EOF
-y
-y
-y
-EOF
-echo; hg tip --config diff.git=True -p
-
-echo % preserve execute permission on original
-
-echo b >> f1
-hg record -d '21 0' -maa <<EOF
-y
-y
-y
-EOF
-echo; hg tip --config diff.git=True -p
-
-echo % preserve chmod -x
-
-chmod -x f1
-echo c >> f1
-hg record -d '22 0' -mab <<EOF
-y
-y
-y
-EOF
-echo; hg tip --config diff.git=True -p
-
-cd ..
-
-echo % abort early when a merge is in progress
-hg up 4
-touch iwillmergethat
-hg add iwillmergethat
-hg branch thatbranch
-hg ci -m'new head'
-hg up default
-hg merge thatbranch
-echo; hg record -m'will abort'
-hg up -C
-
-echo % with win32ext
-echo '[extensions]' >> .hg/hgrc
-echo 'win32text = ' >> .hg/hgrc
-echo '[decode]' >> .hg/hgrc
-echo '** = cleverdecode:' >> .hg/hgrc
-echo '[encode]' >> .hg/hgrc
-echo '** = cleverencode:' >> .hg/hgrc
-echo '[patch]' >> .hg/hgrc
-echo 'eol = crlf' >> .hg/hgrc
-
-echo d >> subdir/f1
-hg record -d '23 0' -mw1 <<EOF
-y
-y
-EOF
-echo; hg tip -p
--- a/tests/test-record.out	Fri Aug 27 16:25:47 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,670 +0,0 @@
-% help
-hg record [OPTION]... [FILE]...
-
-interactively select changes to commit
-
-    If a list of files is omitted, all changes reported by "hg status" will be
-    candidates for recording.
-
-    See "hg help dates" for a list of formats valid for -d/--date.
-
-    You will be prompted for whether to record changes to each modified file,
-    and for files with multiple changes, for each change to use. For each
-    query, the following responses are possible:
-
-      y - record this change
-      n - skip this change
-
-      s - skip remaining changes to this file
-      f - record remaining changes to this file
-
-      d - done, skip remaining changes and files
-      a - record all changes to all remaining files
-      q - quit, recording no changes
-
-      ? - display help
-
-    This command is not available when committing a merge.
-
-options:
-
- -A --addremove            mark new/missing files as added/removed before
-                           committing
-    --close-branch         mark a branch as closed, hiding it from the branch
-                           list
- -I --include PATTERN [+]  include names matching the given patterns
- -X --exclude PATTERN [+]  exclude names matching the given patterns
- -m --message TEXT         use text as commit message
- -l --logfile FILE         read commit message from file
- -d --date DATE            record datecode as commit date
- -u --user USER            record the specified user as committer
-
-[+] marked option can be specified multiple times
-
-use "hg -v help record" to show global options
-% select no files
-diff --git a/empty-rw b/empty-rw
-new file mode 100644
-examine changes to 'empty-rw'? [Ynsfdaq?] 
-no changes to record
-
-changeset:   -1:000000000000
-tag:         tip
-user:        
-date:        Thu Jan 01 00:00:00 1970 +0000
-
-
-% select files but no hunks
-diff --git a/empty-rw b/empty-rw
-new file mode 100644
-examine changes to 'empty-rw'? [Ynsfdaq?] 
-abort: empty commit message
-
-changeset:   -1:000000000000
-tag:         tip
-user:        
-date:        Thu Jan 01 00:00:00 1970 +0000
-
-
-% record empty file
-diff --git a/empty-rw b/empty-rw
-new file mode 100644
-examine changes to 'empty-rw'? [Ynsfdaq?] 
-
-changeset:   0:c0708cf4e46e
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:00 1970 +0000
-summary:     empty
-
-
-% summary shows we updated to the new cset
-parent: 0:c0708cf4e46e tip
- empty
-branch: default
-commit: (clean)
-update: (current)
-
-% rename empty file
-diff --git a/empty-rw b/empty-rename
-rename from empty-rw
-rename to empty-rename
-examine changes to 'empty-rw' and 'empty-rename'? [Ynsfdaq?] 
-
-changeset:   1:d695e8dcb197
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:01 1970 +0000
-summary:     rename
-
-
-% copy empty file
-diff --git a/empty-rename b/empty-copy
-copy from empty-rename
-copy to empty-copy
-examine changes to 'empty-rename' and 'empty-copy'? [Ynsfdaq?] 
-
-changeset:   2:1d4b90bea524
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:02 1970 +0000
-summary:     copy
-
-
-% delete empty file
-diff --git a/empty-copy b/empty-copy
-deleted file mode 100644
-examine changes to 'empty-copy'? [Ynsfdaq?] 
-
-changeset:   3:b39a238f01a1
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:03 1970 +0000
-summary:     delete
-
-
-% add binary file
-1 changesets found
-diff --git a/tip.bundle b/tip.bundle
-new file mode 100644
-this is a binary file
-examine changes to 'tip.bundle'? [Ynsfdaq?] 
-
-changeset:   4:ad816da3711e
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:04 1970 +0000
-summary:     binary
-
-diff -r b39a238f01a1 -r ad816da3711e tip.bundle
-Binary file tip.bundle has changed
-
-% change binary file
-1 changesets found
-diff --git a/tip.bundle b/tip.bundle
-this modifies a binary file (all or nothing)
-examine changes to 'tip.bundle'? [Ynsfdaq?] 
-
-changeset:   5:dccd6f3eb485
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:05 1970 +0000
-summary:     binary-change
-
-diff -r ad816da3711e -r dccd6f3eb485 tip.bundle
-Binary file tip.bundle has changed
-
-% rename and change binary file
-1 changesets found
-diff --git a/tip.bundle b/top.bundle
-rename from tip.bundle
-rename to top.bundle
-this modifies a binary file (all or nothing)
-examine changes to 'tip.bundle' and 'top.bundle'? [Ynsfdaq?] 
-
-changeset:   6:7fa44105f5b3
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:06 1970 +0000
-summary:     binary-change-rename
-
-diff -r dccd6f3eb485 -r 7fa44105f5b3 tip.bundle
-Binary file tip.bundle has changed
-diff -r dccd6f3eb485 -r 7fa44105f5b3 top.bundle
-Binary file top.bundle has changed
-
-% add plain file
-diff --git a/plain b/plain
-new file mode 100644
-examine changes to 'plain'? [Ynsfdaq?] 
-
-changeset:   7:11fb457c1be4
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:07 1970 +0000
-summary:     plain
-
-diff -r 7fa44105f5b3 -r 11fb457c1be4 plain
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/plain	Thu Jan 01 00:00:07 1970 +0000
-@@ -0,0 +1,10 @@
-+1
-+2
-+3
-+4
-+5
-+6
-+7
-+8
-+9
-+10
-
-% modify end of plain file
-diff --git a/plain b/plain
-1 hunks, 1 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -8,3 +8,4 @@
- 8
- 9
- 10
-+11
-record this change to 'plain'? [Ynsfdaq?] 
-% modify end of plain file, no EOL
-diff --git a/plain b/plain
-1 hunks, 1 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -9,3 +9,4 @@
- 9
- 10
- 11
-+7264f99c5f5ff3261504828afa4fb4d406c3af54
-\ No newline at end of file
-record this change to 'plain'? [Ynsfdaq?] 
-% modify end of plain file, add EOL
-diff --git a/plain b/plain
-1 hunks, 1 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -9,4 +9,4 @@
- 9
- 10
- 11
--7264f99c5f5ff3261504828afa4fb4d406c3af54
-\ No newline at end of file
-+7264f99c5f5ff3261504828afa4fb4d406c3af54
-record this change to 'plain'? [Ynsfdaq?] 
-% modify beginning, trim end, record both
-diff --git a/plain b/plain
-2 hunks, 3 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -1,4 +1,4 @@
--1
-+2
- 2
- 3
- 4
-record change 1/2 to 'plain'? [Ynsfdaq?] 
-@@ -8,5 +8,3 @@
- 8
- 9
- 10
--11
--7264f99c5f5ff3261504828afa4fb4d406c3af54
-record change 2/2 to 'plain'? [Ynsfdaq?] 
-
-changeset:   11:efca65c9b09e
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:10 1970 +0000
-summary:     begin-and-end
-
-diff -r cd07d48e8cbe -r efca65c9b09e plain
---- a/plain	Thu Jan 01 00:00:10 1970 +0000
-+++ b/plain	Thu Jan 01 00:00:10 1970 +0000
-@@ -1,4 +1,4 @@
--1
-+2
- 2
- 3
- 4
-@@ -8,5 +8,3 @@
- 8
- 9
- 10
--11
--7264f99c5f5ff3261504828afa4fb4d406c3af54
-
-% trim beginning, modify end
-% record end
-diff --git a/plain b/plain
-2 hunks, 4 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -1,9 +1,6 @@
--2
--2
--3
- 4
- 5
- 6
- 7
- 8
- 9
-record change 1/2 to 'plain'? [Ynsfdaq?] 
-@@ -4,7 +1,7 @@
- 4
- 5
- 6
- 7
- 8
- 9
--10
-+10.new
-record change 2/2 to 'plain'? [Ynsfdaq?] 
-
-changeset:   12:7d1e66983c15
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:11 1970 +0000
-summary:     end-only
-
-diff -r efca65c9b09e -r 7d1e66983c15 plain
---- a/plain	Thu Jan 01 00:00:10 1970 +0000
-+++ b/plain	Thu Jan 01 00:00:11 1970 +0000
-@@ -7,4 +7,4 @@
- 7
- 8
- 9
--10
-+10.new
-
-% record beginning
-diff --git a/plain b/plain
-1 hunks, 3 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -1,6 +1,3 @@
--2
--2
--3
- 4
- 5
- 6
-record this change to 'plain'? [Ynsfdaq?] 
-
-changeset:   13:a09fc62a0e61
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:12 1970 +0000
-summary:     begin-only
-
-diff -r 7d1e66983c15 -r a09fc62a0e61 plain
---- a/plain	Thu Jan 01 00:00:11 1970 +0000
-+++ b/plain	Thu Jan 01 00:00:12 1970 +0000
-@@ -1,6 +1,3 @@
--2
--2
--3
- 4
- 5
- 6
-
-% add to beginning, trim from end
-% record end
-diff --git a/plain b/plain
-2 hunks, 4 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -1,6 +1,9 @@
-+1
-+2
-+3
- 4
- 5
- 6
- 7
- 8
- 9
-record change 1/2 to 'plain'? [Ynsfdaq?] 
-@@ -1,7 +4,6 @@
- 4
- 5
- 6
- 7
- 8
- 9
--10.new
-record change 2/2 to 'plain'? [Ynsfdaq?] 
-% add to beginning, middle, end
-% record beginning, middle
-diff --git a/plain b/plain
-3 hunks, 7 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -1,2 +1,5 @@
-+1
-+2
-+3
- 4
- 5
-record change 1/3 to 'plain'? [Ynsfdaq?] 
-@@ -1,6 +4,8 @@
- 4
- 5
-+5.new
-+5.reallynew
- 6
- 7
- 8
- 9
-record change 2/3 to 'plain'? [Ynsfdaq?] 
-@@ -3,4 +8,6 @@
- 6
- 7
- 8
- 9
-+10
-+11
-record change 3/3 to 'plain'? [Ynsfdaq?] 
-
-changeset:   15:7d137997f3a6
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:14 1970 +0000
-summary:     middle-only
-
-diff -r c0b8e5fb0be6 -r 7d137997f3a6 plain
---- a/plain	Thu Jan 01 00:00:13 1970 +0000
-+++ b/plain	Thu Jan 01 00:00:14 1970 +0000
-@@ -1,5 +1,10 @@
-+1
-+2
-+3
- 4
- 5
-+5.new
-+5.reallynew
- 6
- 7
- 8
-
-% record end
-diff --git a/plain b/plain
-1 hunks, 2 lines changed
-examine changes to 'plain'? [Ynsfdaq?] 
-@@ -9,3 +9,5 @@
- 7
- 8
- 9
-+10
-+11
-record this change to 'plain'? [Ynsfdaq?] 
-
-changeset:   16:4959e3ff13eb
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:15 1970 +0000
-summary:     end-only
-
-diff -r 7d137997f3a6 -r 4959e3ff13eb plain
---- a/plain	Thu Jan 01 00:00:14 1970 +0000
-+++ b/plain	Thu Jan 01 00:00:15 1970 +0000
-@@ -9,3 +9,5 @@
- 7
- 8
- 9
-+10
-+11
-
-adding subdir/a
-diff --git a/subdir/a b/subdir/a
-1 hunks, 1 lines changed
-examine changes to 'subdir/a'? [Ynsfdaq?] 
-@@ -1,1 +1,2 @@
- a
-+a
-record this change to 'subdir/a'? [Ynsfdaq?] 
-
-changeset:   18:40698cd490b2
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:16 1970 +0000
-summary:     subdir-change
-
-diff -r 661eacdc08b9 -r 40698cd490b2 subdir/a
---- a/subdir/a	Thu Jan 01 00:00:16 1970 +0000
-+++ b/subdir/a	Thu Jan 01 00:00:16 1970 +0000
-@@ -1,1 +1,2 @@
- a
-+a
-
-% help, quit
-diff --git a/subdir/f1 b/subdir/f1
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-y - record this change
-n - skip this change
-s - skip remaining changes to this file
-f - record remaining changes to this file
-d - done, skip remaining changes and files
-a - record all changes to all remaining files
-q - quit, recording no changes
-? - display help
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-abort: user quit
-% skip
-diff --git a/subdir/f1 b/subdir/f1
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-diff --git a/subdir/f2 b/subdir/f2
-1 hunks, 1 lines changed
-examine changes to 'subdir/f2'? [Ynsfdaq?] abort: response expected
-% no
-diff --git a/subdir/f1 b/subdir/f1
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-diff --git a/subdir/f2 b/subdir/f2
-1 hunks, 1 lines changed
-examine changes to 'subdir/f2'? [Ynsfdaq?] abort: response expected
-% f, quit
-diff --git a/subdir/f1 b/subdir/f1
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-diff --git a/subdir/f2 b/subdir/f2
-1 hunks, 1 lines changed
-examine changes to 'subdir/f2'? [Ynsfdaq?] 
-abort: user quit
-% s, all
-diff --git a/subdir/f1 b/subdir/f1
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-diff --git a/subdir/f2 b/subdir/f2
-1 hunks, 1 lines changed
-examine changes to 'subdir/f2'? [Ynsfdaq?] 
-
-changeset:   20:d2d8c25276a8
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:18 1970 +0000
-summary:     x
-
-diff -r 25eb2a7694fb -r d2d8c25276a8 subdir/f2
---- a/subdir/f2	Thu Jan 01 00:00:17 1970 +0000
-+++ b/subdir/f2	Thu Jan 01 00:00:18 1970 +0000
-@@ -1,1 +1,2 @@
- b
-+b
-
-% f
-diff --git a/subdir/f1 b/subdir/f1
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-
-changeset:   21:1013f51ce32f
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:19 1970 +0000
-summary:     y
-
-diff -r d2d8c25276a8 -r 1013f51ce32f subdir/f1
---- a/subdir/f1	Thu Jan 01 00:00:18 1970 +0000
-+++ b/subdir/f1	Thu Jan 01 00:00:19 1970 +0000
-@@ -1,1 +1,2 @@
- a
-+a
-
-% preserve chmod +x
-diff --git a/subdir/f1 b/subdir/f1
-old mode 100644
-new mode 100755
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-@@ -1,2 +1,3 @@
- a
- a
-+a
-record this change to 'subdir/f1'? [Ynsfdaq?] 
-
-changeset:   22:5df857735621
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:20 1970 +0000
-summary:     z
-
-diff --git a/subdir/f1 b/subdir/f1
-old mode 100644
-new mode 100755
---- a/subdir/f1
-+++ b/subdir/f1
-@@ -1,2 +1,3 @@
- a
- a
-+a
-
-% preserve execute permission on original
-diff --git a/subdir/f1 b/subdir/f1
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-@@ -1,3 +1,4 @@
- a
- a
- a
-+b
-record this change to 'subdir/f1'? [Ynsfdaq?] 
-
-changeset:   23:a4ae36a78715
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:21 1970 +0000
-summary:     aa
-
-diff --git a/subdir/f1 b/subdir/f1
---- a/subdir/f1
-+++ b/subdir/f1
-@@ -1,3 +1,4 @@
- a
- a
- a
-+b
-
-% preserve chmod -x
-diff --git a/subdir/f1 b/subdir/f1
-old mode 100755
-new mode 100644
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-@@ -2,3 +2,4 @@
- a
- a
- b
-+c
-record this change to 'subdir/f1'? [Ynsfdaq?] 
-
-changeset:   24:1460f6e47966
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:22 1970 +0000
-summary:     ab
-
-diff --git a/subdir/f1 b/subdir/f1
-old mode 100755
-new mode 100644
---- a/subdir/f1
-+++ b/subdir/f1
-@@ -2,3 +2,4 @@
- a
- a
- b
-+c
-
-% abort early when a merge is in progress
-1 files updated, 0 files merged, 5 files removed, 0 files unresolved
-marked working directory as branch thatbranch
-5 files updated, 0 files merged, 2 files removed, 0 files unresolved
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-
-abort: cannot partially commit a merge (use hg commit instead)
-0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-% with win32ext
-diff --git a/subdir/f1 b/subdir/f1
-1 hunks, 1 lines changed
-examine changes to 'subdir/f1'? [Ynsfdaq?] 
-@@ -3,3 +3,4 @@
- a
- b
- c
-+d
-record this change to 'subdir/f1'? [Ynsfdaq?] 
-
-changeset:   26:5bacc1f6e9cf
-tag:         tip
-parent:      24:1460f6e47966
-user:        test
-date:        Thu Jan 01 00:00:23 1970 +0000
-summary:     w1
-
-diff -r 1460f6e47966 -r 5bacc1f6e9cf subdir/f1
---- a/subdir/f1	Thu Jan 01 00:00:22 1970 +0000
-+++ b/subdir/f1	Thu Jan 01 00:00:23 1970 +0000
-@@ -3,3 +3,4 @@
- a
- b
- c
-+d
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-record.t	Fri Aug 27 16:25:47 2010 +0200
@@ -0,0 +1,975 @@
+#!/bin/sh
+
+  $ echo "[ui]" >> $HGRCPATH
+  $ echo "interactive=true" >> $HGRCPATH
+  $ echo "[extensions]" >> $HGRCPATH
+  $ echo "record=" >> $HGRCPATH
+
+Help
+
+  $ hg help record
+  hg record [OPTION]... [FILE]...
+  
+  interactively select changes to commit
+  
+      If a list of files is omitted, all changes reported by "hg status" will be
+      candidates for recording.
+  
+      See "hg help dates" for a list of formats valid for -d/--date.
+  
+      You will be prompted for whether to record changes to each modified file,
+      and for files with multiple changes, for each change to use. For each
+      query, the following responses are possible:
+  
+        y - record this change
+        n - skip this change
+  
+        s - skip remaining changes to this file
+        f - record remaining changes to this file
+  
+        d - done, skip remaining changes and files
+        a - record all changes to all remaining files
+        q - quit, recording no changes
+  
+        ? - display help
+  
+      This command is not available when committing a merge.
+  
+  options:
+  
+   -A --addremove            mark new/missing files as added/removed before
+                             committing
+      --close-branch         mark a branch as closed, hiding it from the branch
+                             list
+   -I --include PATTERN [+]  include names matching the given patterns
+   -X --exclude PATTERN [+]  exclude names matching the given patterns
+   -m --message TEXT         use text as commit message
+   -l --logfile FILE         read commit message from file
+   -d --date DATE            record datecode as commit date
+   -u --user USER            record the specified user as committer
+  
+  [+] marked option can be specified multiple times
+  
+  use "hg -v help record" to show global options
+
+  $ hg init a
+  $ cd a
+
+Select no files
+
+  $ touch empty-rw
+  $ hg add empty-rw
+
+  $ hg record empty-rw<<EOF
+  > n
+  > EOF
+  diff --git a/empty-rw b/empty-rw
+  new file mode 100644
+  examine changes to 'empty-rw'? [Ynsfdaq?] 
+  no changes to record
+
+  $ hg tip -p
+  changeset:   -1:000000000000
+  tag:         tip
+  user:        
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  
+  
+
+Select files but no hunks
+
+  $ hg record empty-rw<<EOF
+  > y
+  > n
+  > EOF
+  diff --git a/empty-rw b/empty-rw
+  new file mode 100644
+  examine changes to 'empty-rw'? [Ynsfdaq?] 
+  abort: empty commit message
+
+  $ hg tip -p
+  changeset:   -1:000000000000
+  tag:         tip
+  user:        
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  
+  
+
+Record empty file
+
+  $ hg record -d '0 0' -m empty empty-rw<<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/empty-rw b/empty-rw
+  new file mode 100644
+  examine changes to 'empty-rw'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   0:c0708cf4e46e
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     empty
+  
+  
+
+Summary shows we updated to the new cset
+
+  $ hg summary
+  parent: 0:c0708cf4e46e tip
+   empty
+  branch: default
+  commit: (clean)
+  update: (current)
+
+Rename empty file
+
+  $ hg mv empty-rw empty-rename
+  $ hg record -d '1 0' -m rename<<EOF
+  > y
+  > EOF
+  diff --git a/empty-rw b/empty-rename
+  rename from empty-rw
+  rename to empty-rename
+  examine changes to 'empty-rw' and 'empty-rename'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   1:d695e8dcb197
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:01 1970 +0000
+  summary:     rename
+  
+  
+
+Copy empty file
+
+  $ hg cp empty-rename empty-copy
+  $ hg record -d '2 0' -m copy<<EOF
+  > y
+  > EOF
+  diff --git a/empty-rename b/empty-copy
+  copy from empty-rename
+  copy to empty-copy
+  examine changes to 'empty-rename' and 'empty-copy'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   2:1d4b90bea524
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:02 1970 +0000
+  summary:     copy
+  
+  
+
+Delete empty file
+
+  $ hg rm empty-copy
+  $ hg record -d '3 0' -m delete<<EOF
+  > y
+  > EOF
+  diff --git a/empty-copy b/empty-copy
+  deleted file mode 100644
+  examine changes to 'empty-copy'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   3:b39a238f01a1
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:03 1970 +0000
+  summary:     delete
+  
+  
+
+Add binary file
+
+  $ hg bundle --base -2 tip.bundle
+  1 changesets found
+  $ hg add tip.bundle
+  $ hg record -d '4 0' -m binary<<EOF
+  > y
+  > EOF
+  diff --git a/tip.bundle b/tip.bundle
+  new file mode 100644
+  this is a binary file
+  examine changes to 'tip.bundle'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   4:ad816da3711e
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:04 1970 +0000
+  summary:     binary
+  
+  diff -r b39a238f01a1 -r ad816da3711e tip.bundle
+  Binary file tip.bundle has changed
+  
+
+Change binary file
+
+  $ hg bundle --base -2 tip.bundle
+  1 changesets found
+  $ hg record -d '5 0' -m binary-change<<EOF
+  > y
+  > EOF
+  diff --git a/tip.bundle b/tip.bundle
+  this modifies a binary file (all or nothing)
+  examine changes to 'tip.bundle'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   5:dccd6f3eb485
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:05 1970 +0000
+  summary:     binary-change
+  
+  diff -r ad816da3711e -r dccd6f3eb485 tip.bundle
+  Binary file tip.bundle has changed
+  
+
+Rename and change binary file
+
+  $ hg mv tip.bundle top.bundle
+  $ hg bundle --base -2 top.bundle
+  1 changesets found
+  $ hg record -d '6 0' -m binary-change-rename<<EOF
+  > y
+  > EOF
+  diff --git a/tip.bundle b/top.bundle
+  rename from tip.bundle
+  rename to top.bundle
+  this modifies a binary file (all or nothing)
+  examine changes to 'tip.bundle' and 'top.bundle'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   6:7fa44105f5b3
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:06 1970 +0000
+  summary:     binary-change-rename
+  
+  diff -r dccd6f3eb485 -r 7fa44105f5b3 tip.bundle
+  Binary file tip.bundle has changed
+  diff -r dccd6f3eb485 -r 7fa44105f5b3 top.bundle
+  Binary file top.bundle has changed
+  
+
+Add plain file
+
+  $ for i in 1 2 3 4 5 6 7 8 9 10; do
+  >     echo $i >> plain
+  > done
+
+  $ hg add plain
+  $ hg record -d '7 0' -m plain plain<<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  new file mode 100644
+  examine changes to 'plain'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   7:11fb457c1be4
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:07 1970 +0000
+  summary:     plain
+  
+  diff -r 7fa44105f5b3 -r 11fb457c1be4 plain
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/plain	Thu Jan 01 00:00:07 1970 +0000
+  @@ -0,0 +1,10 @@
+  +1
+  +2
+  +3
+  +4
+  +5
+  +6
+  +7
+  +8
+  +9
+  +10
+  
+
+Modify end of plain file
+
+  $ echo 11 >> plain
+  $ hg record -d '8 0' -m end plain <<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  1 hunks, 1 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -8,3 +8,4 @@
+   8
+   9
+   10
+  +11
+  record this change to 'plain'? [Ynsfdaq?] 
+
+Modify end of plain file, no EOL
+
+  $ hg tip --template '{node}' >> plain
+  $ hg record -d '9 0' -m noeol plain <<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  1 hunks, 1 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -9,3 +9,4 @@
+   9
+   10
+   11
+  +7264f99c5f5ff3261504828afa4fb4d406c3af54
+  \ No newline at end of file
+  record this change to 'plain'? [Ynsfdaq?] 
+
+Modify end of plain file, add EOL
+
+  $ echo >> plain
+  $ hg record -d '10 0' -m eol plain <<EOF
+  > y
+  > y
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  1 hunks, 1 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -9,4 +9,4 @@
+   9
+   10
+   11
+  -7264f99c5f5ff3261504828afa4fb4d406c3af54
+  \ No newline at end of file
+  +7264f99c5f5ff3261504828afa4fb4d406c3af54
+  record this change to 'plain'? [Ynsfdaq?] 
+
+Modify beginning, trim end, record both
+
+  $ rm plain
+  $ for i in 2 2 3 4 5 6 7 8 9 10; do
+  >   echo $i >> plain
+  > done
+
+  $ hg record -d '10 0' -m begin-and-end plain <<EOF
+  > y
+  > y
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  2 hunks, 3 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -1,4 +1,4 @@
+  -1
+  +2
+   2
+   3
+   4
+  record change 1/2 to 'plain'? [Ynsfdaq?] 
+  @@ -8,5 +8,3 @@
+   8
+   9
+   10
+  -11
+  -7264f99c5f5ff3261504828afa4fb4d406c3af54
+  record change 2/2 to 'plain'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   11:efca65c9b09e
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:10 1970 +0000
+  summary:     begin-and-end
+  
+  diff -r cd07d48e8cbe -r efca65c9b09e plain
+  --- a/plain	Thu Jan 01 00:00:10 1970 +0000
+  +++ b/plain	Thu Jan 01 00:00:10 1970 +0000
+  @@ -1,4 +1,4 @@
+  -1
+  +2
+   2
+   3
+   4
+  @@ -8,5 +8,3 @@
+   8
+   9
+   10
+  -11
+  -7264f99c5f5ff3261504828afa4fb4d406c3af54
+  
+
+Trim beginning, modify end
+
+  $ rm plain
+  > for i in 4 5 6 7 8 9 10.new; do
+  >   echo $i >> plain
+  > done
+
+Record end
+
+  $ hg record -d '11 0' -m end-only plain <<EOF
+  > y
+  > n
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  2 hunks, 4 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -1,9 +1,6 @@
+  -2
+  -2
+  -3
+   4
+   5
+   6
+   7
+   8
+   9
+  record change 1/2 to 'plain'? [Ynsfdaq?] 
+  @@ -4,7 +1,7 @@
+   4
+   5
+   6
+   7
+   8
+   9
+  -10
+  +10.new
+  record change 2/2 to 'plain'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   12:7d1e66983c15
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:11 1970 +0000
+  summary:     end-only
+  
+  diff -r efca65c9b09e -r 7d1e66983c15 plain
+  --- a/plain	Thu Jan 01 00:00:10 1970 +0000
+  +++ b/plain	Thu Jan 01 00:00:11 1970 +0000
+  @@ -7,4 +7,4 @@
+   7
+   8
+   9
+  -10
+  +10.new
+  
+
+Record beginning
+
+  $ hg record -d '12 0' -m begin-only plain <<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  1 hunks, 3 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -1,6 +1,3 @@
+  -2
+  -2
+  -3
+   4
+   5
+   6
+  record this change to 'plain'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   13:a09fc62a0e61
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:12 1970 +0000
+  summary:     begin-only
+  
+  diff -r 7d1e66983c15 -r a09fc62a0e61 plain
+  --- a/plain	Thu Jan 01 00:00:11 1970 +0000
+  +++ b/plain	Thu Jan 01 00:00:12 1970 +0000
+  @@ -1,6 +1,3 @@
+  -2
+  -2
+  -3
+   4
+   5
+   6
+  
+
+Add to beginning, trim from end
+
+  $ rm plain
+  $ for i in 1 2 3 4 5 6 7 8 9; do
+  >  echo $i >> plain
+  > done
+
+Record end
+
+  $ hg record --traceback -d '13 0' -m end-again plain<<EOF
+  > y
+  > n
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  2 hunks, 4 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -1,6 +1,9 @@
+  +1
+  +2
+  +3
+   4
+   5
+   6
+   7
+   8
+   9
+  record change 1/2 to 'plain'? [Ynsfdaq?] 
+  @@ -1,7 +4,6 @@
+   4
+   5
+   6
+   7
+   8
+   9
+  -10.new
+  record change 2/2 to 'plain'? [Ynsfdaq?] 
+
+Add to beginning, middle, end
+
+  $ rm plain
+  $ for i in 1 2 3 4 5 5.new 5.reallynew 6 7 8 9 10 11; do
+  >   echo $i >> plain
+  > done
+
+Record beginning, middle
+
+  $ hg record -d '14 0' -m middle-only plain <<EOF
+  > y
+  > y
+  > y
+  > n
+  > EOF
+  diff --git a/plain b/plain
+  3 hunks, 7 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -1,2 +1,5 @@
+  +1
+  +2
+  +3
+   4
+   5
+  record change 1/3 to 'plain'? [Ynsfdaq?] 
+  @@ -1,6 +4,8 @@
+   4
+   5
+  +5.new
+  +5.reallynew
+   6
+   7
+   8
+   9
+  record change 2/3 to 'plain'? [Ynsfdaq?] 
+  @@ -3,4 +8,6 @@
+   6
+   7
+   8
+   9
+  +10
+  +11
+  record change 3/3 to 'plain'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   15:7d137997f3a6
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:14 1970 +0000
+  summary:     middle-only
+  
+  diff -r c0b8e5fb0be6 -r 7d137997f3a6 plain
+  --- a/plain	Thu Jan 01 00:00:13 1970 +0000
+  +++ b/plain	Thu Jan 01 00:00:14 1970 +0000
+  @@ -1,5 +1,10 @@
+  +1
+  +2
+  +3
+   4
+   5
+  +5.new
+  +5.reallynew
+   6
+   7
+   8
+  
+
+Record end
+
+  $ hg record -d '15 0' -m end-only plain <<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/plain b/plain
+  1 hunks, 2 lines changed
+  examine changes to 'plain'? [Ynsfdaq?] 
+  @@ -9,3 +9,5 @@
+   7
+   8
+   9
+  +10
+  +11
+  record this change to 'plain'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   16:4959e3ff13eb
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:15 1970 +0000
+  summary:     end-only
+  
+  diff -r 7d137997f3a6 -r 4959e3ff13eb plain
+  --- a/plain	Thu Jan 01 00:00:14 1970 +0000
+  +++ b/plain	Thu Jan 01 00:00:15 1970 +0000
+  @@ -9,3 +9,5 @@
+   7
+   8
+   9
+  +10
+  +11
+  
+
+  $ mkdir subdir
+  $ cd subdir
+  $ echo a > a
+  $ hg ci -d '16 0' -Amsubdir
+  adding subdir/a
+
+  $ echo a >> a
+  $ hg record -d '16 0' -m subdir-change a <<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/subdir/a b/subdir/a
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/a'? [Ynsfdaq?] 
+  @@ -1,1 +1,2 @@
+   a
+  +a
+  record this change to 'subdir/a'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   18:40698cd490b2
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:16 1970 +0000
+  summary:     subdir-change
+  
+  diff -r 661eacdc08b9 -r 40698cd490b2 subdir/a
+  --- a/subdir/a	Thu Jan 01 00:00:16 1970 +0000
+  +++ b/subdir/a	Thu Jan 01 00:00:16 1970 +0000
+  @@ -1,1 +1,2 @@
+   a
+  +a
+  
+
+  $ echo a > f1
+  $ echo b > f2
+  $ hg add f1 f2
+
+  $ hg ci -mz -d '17 0'
+
+  $ echo a >> f1
+  $ echo b >> f2
+
+Help, quit
+
+  $ hg record <<EOF
+  > ?
+  > q
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  y - record this change
+  n - skip this change
+  s - skip remaining changes to this file
+  f - record remaining changes to this file
+  d - done, skip remaining changes and files
+  a - record all changes to all remaining files
+  q - quit, recording no changes
+  ? - display help
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  abort: user quit
+
+Skip
+
+  $ hg record <<EOF
+  > s
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  diff --git a/subdir/f2 b/subdir/f2
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f2'? [Ynsfdaq?] abort: response expected
+
+No
+
+  $ hg record <<EOF
+  > n
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  diff --git a/subdir/f2 b/subdir/f2
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f2'? [Ynsfdaq?] abort: response expected
+
+f, quit
+
+  $ hg record <<EOF
+  > f
+  > q
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  diff --git a/subdir/f2 b/subdir/f2
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f2'? [Ynsfdaq?] 
+  abort: user quit
+
+s, all
+
+  $ hg record -d '18 0' -mx <<EOF
+  > s
+  > a
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  diff --git a/subdir/f2 b/subdir/f2
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f2'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   20:d2d8c25276a8
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:18 1970 +0000
+  summary:     x
+  
+  diff -r 25eb2a7694fb -r d2d8c25276a8 subdir/f2
+  --- a/subdir/f2	Thu Jan 01 00:00:17 1970 +0000
+  +++ b/subdir/f2	Thu Jan 01 00:00:18 1970 +0000
+  @@ -1,1 +1,2 @@
+   b
+  +b
+  
+
+f
+
+  $ hg record -d '19 0' -my <<EOF
+  > f
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   21:1013f51ce32f
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:19 1970 +0000
+  summary:     y
+  
+  diff -r d2d8c25276a8 -r 1013f51ce32f subdir/f1
+  --- a/subdir/f1	Thu Jan 01 00:00:18 1970 +0000
+  +++ b/subdir/f1	Thu Jan 01 00:00:19 1970 +0000
+  @@ -1,1 +1,2 @@
+   a
+  +a
+  
+
+Preserve chmod +x
+
+  $ chmod +x f1
+  $ echo a >> f1
+  $ hg record -d '20 0' -mz <<EOF
+  > y
+  > y
+  > y
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  old mode 100644
+  new mode 100755
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  @@ -1,2 +1,3 @@
+   a
+   a
+  +a
+  record this change to 'subdir/f1'? [Ynsfdaq?] 
+
+  $ hg tip --config diff.git=True -p
+  changeset:   22:5df857735621
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:20 1970 +0000
+  summary:     z
+  
+  diff --git a/subdir/f1 b/subdir/f1
+  old mode 100644
+  new mode 100755
+  --- a/subdir/f1
+  +++ b/subdir/f1
+  @@ -1,2 +1,3 @@
+   a
+   a
+  +a
+  
+
+Preserve execute permission on original
+
+  $ echo b >> f1
+  $ hg record -d '21 0' -maa <<EOF
+  > y
+  > y
+  > y
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  @@ -1,3 +1,4 @@
+   a
+   a
+   a
+  +b
+  record this change to 'subdir/f1'? [Ynsfdaq?] 
+
+  $ hg tip --config diff.git=True -p
+  changeset:   23:a4ae36a78715
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:21 1970 +0000
+  summary:     aa
+  
+  diff --git a/subdir/f1 b/subdir/f1
+  --- a/subdir/f1
+  +++ b/subdir/f1
+  @@ -1,3 +1,4 @@
+   a
+   a
+   a
+  +b
+  
+
+Preserve chmod -x
+
+  $ chmod -x f1
+  $ echo c >> f1
+  $ hg record -d '22 0' -mab <<EOF
+  > y
+  > y
+  > y
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  old mode 100755
+  new mode 100644
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  @@ -2,3 +2,4 @@
+   a
+   a
+   b
+  +c
+  record this change to 'subdir/f1'? [Ynsfdaq?] 
+
+  $ hg tip --config diff.git=True -p
+  changeset:   24:1460f6e47966
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:22 1970 +0000
+  summary:     ab
+  
+  diff --git a/subdir/f1 b/subdir/f1
+  old mode 100755
+  new mode 100644
+  --- a/subdir/f1
+  +++ b/subdir/f1
+  @@ -2,3 +2,4 @@
+   a
+   a
+   b
+  +c
+  
+
+  $ cd ..
+
+Abort early when a merge is in progress
+
+  $ hg up 4
+  1 files updated, 0 files merged, 5 files removed, 0 files unresolved
+
+  $ touch iwillmergethat
+  $ hg add iwillmergethat
+
+  $ hg branch thatbranch
+  marked working directory as branch thatbranch
+
+  $ hg ci -m'new head'
+
+  $ hg up default
+  5 files updated, 0 files merged, 2 files removed, 0 files unresolved
+
+  $ hg merge thatbranch
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+
+  $ hg record -m'will abort'
+  abort: cannot partially commit a merge (use hg commit instead)
+
+  $ hg up -C
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+With win32text
+
+  $ echo '[extensions]' >> .hg/hgrc
+  $ echo 'win32text = ' >> .hg/hgrc
+  $ echo '[decode]' >> .hg/hgrc
+  $ echo '** = cleverdecode:' >> .hg/hgrc
+  $ echo '[encode]' >> .hg/hgrc
+  $ echo '** = cleverencode:' >> .hg/hgrc
+  $ echo '[patch]' >> .hg/hgrc
+  $ echo 'eol = crlf' >> .hg/hgrc
+
+  $ echo d >> subdir/f1
+  $ hg record -d '23 0' -mw1 <<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/subdir/f1 b/subdir/f1
+  1 hunks, 1 lines changed
+  examine changes to 'subdir/f1'? [Ynsfdaq?] 
+  @@ -3,3 +3,4 @@
+   a
+   b
+   c
+  +d
+  record this change to 'subdir/f1'? [Ynsfdaq?] 
+
+  $ hg tip -p
+  changeset:   26:5bacc1f6e9cf
+  tag:         tip
+  parent:      24:1460f6e47966
+  user:        test
+  date:        Thu Jan 01 00:00:23 1970 +0000
+  summary:     w1
+  
+  diff -r 1460f6e47966 -r 5bacc1f6e9cf subdir/f1
+  --- a/subdir/f1	Thu Jan 01 00:00:22 1970 +0000
+  +++ b/subdir/f1	Thu Jan 01 00:00:23 1970 +0000
+  @@ -3,3 +3,4 @@
+   a
+   b
+   c
+  +d
+