procutil: make stream detection in make_line_buffered more correct and strict
In make_line_buffered(), we don’t want to wrap the stream if we know that lines
get flushed to the underlying raw stream already.
Previously, the heuristic was too optimistic. It assumed that any stream which
is not an instance of io.BufferedIOBase doesn’t need wrapping. However, there
are buffered streams that aren’t instances of io.BufferedIOBase, like
Mercurial’s own winstdout.
The new logic is different in two ways:
First, only for the check, if unwraps any combination of WriteAllWrapper and
winstdout.
Second, it skips wrapping the stream only if it is an instance of io.RawIOBase
(or already wrapped). If it is an instance of io.BufferedIOBase, it gets
wrapped. In any other case, the function raises an exception. This ensures
that, if an unknown stream is passed or we add another wrapper in the future,
we don’t wrap the stream if it’s already line buffered or not wrap the stream
if it’s not line buffered. In fact, this was already helpful during development
of this change. Without it, I possibly would have forgot that WriteAllWrapper
needs to be ignored for the check, leading to unnecessary wrapping if stdout is
unbuffered.
The alternative would have been to always wrap unknown streams. However, I
don’t think that anyone would benefit from being less strict. We can expect
streams from the standard library to be subclassing either io.RawIOBase or
io.BufferedIOBase, so running Mercurial in the standard way should not regress
by this change. Py2exe might replace sys.stdout and sys.stderr, but that
currently breaks Mercurial anyway and also these streams don’t claim to be
interactive, so this function is not called for them.
$ echo "[extensions]" >> $HGRCPATH
$ echo "mq=" >> $HGRCPATH
$ echo "[diff]" >> $HGRCPATH
$ echo "nodates=true" >> $HGRCPATH
$ catlog() {
> cat .hg/patches/$1.patch | sed -e "s/^diff \-r [0-9a-f]* /diff -r ... /" \
> -e "s/^\(# Parent \).*/\1/"
> hg log --template "{rev}: {node|short} {desc} - {author}\n"
> }
$ runtest() {
> echo ==== init
> hg init a
> cd a
> hg qinit
>
>
> echo ==== qnew -U
> hg qnew -U 1.patch
> catlog 1
>
> echo ==== qref
> echo "1" >1
> hg add
> hg qref
> catlog 1
>
> echo ==== qref -u
> hg qref -u mary
> catlog 1
>
> echo ==== qnew
> hg qnew 2.patch
> echo "2" >2
> hg add
> hg qref
> catlog 2
>
> echo ==== qref -u
> hg qref -u jane
> catlog 2
>
>
> echo ==== qnew -U -m
> hg qnew -U -m "Three" 3.patch
> catlog 3
>
> echo ==== qref
> echo "3" >3
> hg add
> hg qref
> catlog 3
>
> echo ==== qref -m
> hg qref -m "Drei"
> catlog 3
>
> echo ==== qref -u
> hg qref -u mary
> catlog 3
>
> echo ==== qref -u -m
> hg qref -u maria -m "Three (again)"
> catlog 3
>
> echo ==== qnew -m
> hg qnew -m "Four" 4.patch
> echo "4" >4of t
> hg add
> hg qref
> catlog 4
>
> echo ==== qref -u
> hg qref -u jane
> catlog 4
>
>
> echo ==== qnew with HG header
> hg qnew --config 'mq.plain=true' 5.patch
> hg qpop
> echo "# HG changeset patch" >>.hg/patches/5.patch
> echo "# User johndoe" >>.hg/patches/5.patch
> hg qpush 2>&1 | grep 'now at'
> catlog 5
>
> echo ==== hg qref
> echo "5" >5
> hg add
> hg qref
> catlog 5
>
> echo ==== hg qref -U
> hg qref -U
> catlog 5
>
> echo ==== hg qref -u
> hg qref -u johndeere
> catlog 5
>
>
> echo ==== qnew with plain header
> hg qnew --config 'mq.plain=true' -U 6.patch
> hg qpop
> hg qpush 2>&1 | grep 'now at'
> catlog 6
>
> echo ==== hg qref
> echo "6" >6
> hg add
> hg qref
> catlog 6
>
> echo ==== hg qref -U
> hg qref -U
> catlog 6
>
> echo ==== hg qref -u
> hg qref -u johndeere
> catlog 6
>
>
> echo ==== "qpop -a / qpush -a"
> hg qpop -a
> hg qpush -a
> hg log --template "{rev}: {node|short} {desc} - {author}\n"
> }
======= plain headers
$ echo "[mq]" >> $HGRCPATH
$ echo "plain=true" >> $HGRCPATH
$ mkdir sandbox
$ (cd sandbox ; runtest)
==== init
==== qnew -U
From: test
0: a054644889e5 [mq]: 1.patch - test
==== qref
adding 1
From: test
diff -r ... 1
--- /dev/null
+++ b/1
@@ -0,0 +1,1 @@
+1
0: 2905f1e46ee0 [mq]: 1.patch - test
==== qref -u
From: mary
diff -r ... 1
--- /dev/null
+++ b/1
@@ -0,0 +1,1 @@
+1
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew
adding 2
diff -r ... 2
--- /dev/null
+++ b/2
@@ -0,0 +1,1 @@
+2
1: 527f98a12a7a [mq]: 2.patch - test
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
From: jane
diff -r ... 2
--- /dev/null
+++ b/2
@@ -0,0 +1,1 @@
+2
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew -U -m
From: test
Three
2: 0ffa16a9088e Three - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref
adding 3
From: test
Three
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: 83f1290c6086 Three - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -m
From: test
Drei
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: b0d856328d4d Drei - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
From: mary
Drei
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: bb9d4b28e6a6 Drei - mary
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u -m
From: maria
Three (again)
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew -m
adding 4of
Four
diff -r ... 4of
--- /dev/null
+++ b/4of
@@ -0,0 +1,1 @@
+4 t
3: b9f922d0da40 Four - test
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
From: jane
Four
diff -r ... 4of
--- /dev/null
+++ b/4of
@@ -0,0 +1,1 @@
+4 t
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew with HG header
popping 5.patch
now at: 4.patch
now at: 5.patch
# HG changeset patch
# User johndoe
4: 72bc4a0467ef imported patch 5.patch - johndoe
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref
adding 5
# HG changeset patch
# User johndoe
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: ff5c06112e5a [mq]: 5.patch - johndoe
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -U
# HG changeset patch
# User test
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: c947416c22b1 [mq]: 5.patch - test
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -u
# HG changeset patch
# User johndeere
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew with plain header
popping 6.patch
now at: 5.patch
now at: 6.patch
From: test
5: 7825a18ec839 imported patch 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref
adding 6
From: test
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 09d19592680d [mq]: 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -U
From: test
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 09d19592680d [mq]: 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -u
From: johndeere
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 32641ee07196 [mq]: 6.patch - johndeere
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qpop -a / qpush -a
popping 6.patch
popping 5.patch
popping 4.patch
popping 3.patch
popping 2.patch
popping 1.patch
patch queue now empty
applying 1.patch
applying 2.patch
applying 3.patch
applying 4.patch
applying 5.patch
applying 6.patch
now at: 6.patch
5: 1fb083c80457 imported patch 6.patch - johndeere
4: 7e96e969691d imported patch 5.patch - johndeere
3: c7147533d3cd Four - jane
2: b383d04401ea Three (again) - maria
1: fac2da4efc3c imported patch 2.patch - jane
0: b6e237e8771b imported patch 1.patch - mary
$ rm -r sandbox
======= hg headers
$ echo "plain=false" >> $HGRCPATH
$ mkdir sandbox
$ (cd sandbox ; runtest)
==== init
==== qnew -U
# HG changeset patch
# User test
# Parent
0: a054644889e5 [mq]: 1.patch - test
==== qref
adding 1
# HG changeset patch
# User test
# Parent
diff -r ... 1
--- /dev/null
+++ b/1
@@ -0,0 +1,1 @@
+1
0: 2905f1e46ee0 [mq]: 1.patch - test
==== qref -u
# HG changeset patch
# User mary
# Parent
diff -r ... 1
--- /dev/null
+++ b/1
@@ -0,0 +1,1 @@
+1
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew
adding 2
# HG changeset patch
# Parent
diff -r ... 2
--- /dev/null
+++ b/2
@@ -0,0 +1,1 @@
+2
1: 527f98a12a7a [mq]: 2.patch - test
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
# HG changeset patch
# User jane
# Parent
diff -r ... 2
--- /dev/null
+++ b/2
@@ -0,0 +1,1 @@
+2
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew -U -m
# HG changeset patch
# User test
# Parent
Three
2: 0ffa16a9088e Three - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref
adding 3
# HG changeset patch
# User test
# Parent
Three
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: 83f1290c6086 Three - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -m
# HG changeset patch
# User test
# Parent
Drei
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: b0d856328d4d Drei - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
# HG changeset patch
# User mary
# Parent
Drei
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: bb9d4b28e6a6 Drei - mary
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u -m
# HG changeset patch
# User maria
# Parent
Three (again)
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew -m
adding 4of
# HG changeset patch
# Parent
Four
diff -r ... 4of
--- /dev/null
+++ b/4of
@@ -0,0 +1,1 @@
+4 t
3: b9f922d0da40 Four - test
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
# HG changeset patch
# User jane
# Parent
Four
diff -r ... 4of
--- /dev/null
+++ b/4of
@@ -0,0 +1,1 @@
+4 t
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew with HG header
popping 5.patch
now at: 4.patch
now at: 5.patch
# HG changeset patch
# User johndoe
4: 72bc4a0467ef imported patch 5.patch - johndoe
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref
adding 5
# HG changeset patch
# User johndoe
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: ff5c06112e5a [mq]: 5.patch - johndoe
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -U
# HG changeset patch
# User test
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: c947416c22b1 [mq]: 5.patch - test
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -u
# HG changeset patch
# User johndeere
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew with plain header
popping 6.patch
now at: 5.patch
now at: 6.patch
From: test
5: 7825a18ec839 imported patch 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref
adding 6
From: test
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 09d19592680d [mq]: 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -U
From: test
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 09d19592680d [mq]: 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -u
From: johndeere
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 32641ee07196 [mq]: 6.patch - johndeere
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qpop -a / qpush -a
popping 6.patch
popping 5.patch
popping 4.patch
popping 3.patch
popping 2.patch
popping 1.patch
patch queue now empty
applying 1.patch
applying 2.patch
applying 3.patch
applying 4.patch
applying 5.patch
applying 6.patch
now at: 6.patch
5: 1fb083c80457 imported patch 6.patch - johndeere
4: 7e96e969691d imported patch 5.patch - johndeere
3: c7147533d3cd Four - jane
2: b383d04401ea Three (again) - maria
1: fac2da4efc3c imported patch 2.patch - jane
0: b6e237e8771b imported patch 1.patch - mary
$ rm -r sandbox
$ runtest
==== init
==== qnew -U
# HG changeset patch
# User test
# Parent
0: a054644889e5 [mq]: 1.patch - test
==== qref
adding 1
# HG changeset patch
# User test
# Parent
diff -r ... 1
--- /dev/null
+++ b/1
@@ -0,0 +1,1 @@
+1
0: 2905f1e46ee0 [mq]: 1.patch - test
==== qref -u
# HG changeset patch
# User mary
# Parent
diff -r ... 1
--- /dev/null
+++ b/1
@@ -0,0 +1,1 @@
+1
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew
adding 2
# HG changeset patch
# Parent
diff -r ... 2
--- /dev/null
+++ b/2
@@ -0,0 +1,1 @@
+2
1: 527f98a12a7a [mq]: 2.patch - test
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
# HG changeset patch
# User jane
# Parent
diff -r ... 2
--- /dev/null
+++ b/2
@@ -0,0 +1,1 @@
+2
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew -U -m
# HG changeset patch
# User test
# Parent
Three
2: 0ffa16a9088e Three - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref
adding 3
# HG changeset patch
# User test
# Parent
Three
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: 83f1290c6086 Three - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -m
# HG changeset patch
# User test
# Parent
Drei
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: b0d856328d4d Drei - test
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
# HG changeset patch
# User mary
# Parent
Drei
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: bb9d4b28e6a6 Drei - mary
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u -m
# HG changeset patch
# User maria
# Parent
Three (again)
diff -r ... 3
--- /dev/null
+++ b/3
@@ -0,0 +1,1 @@
+3
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew -m
adding 4of
# HG changeset patch
# Parent
Four
diff -r ... 4of
--- /dev/null
+++ b/4of
@@ -0,0 +1,1 @@
+4 t
3: b9f922d0da40 Four - test
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qref -u
# HG changeset patch
# User jane
# Parent
Four
diff -r ... 4of
--- /dev/null
+++ b/4of
@@ -0,0 +1,1 @@
+4 t
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew with HG header
popping 5.patch
now at: 4.patch
now at: 5.patch
# HG changeset patch
# User johndoe
4: 72bc4a0467ef imported patch 5.patch - johndoe
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref
adding 5
# HG changeset patch
# User johndoe
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: ff5c06112e5a [mq]: 5.patch - johndoe
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -U
# HG changeset patch
# User test
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: c947416c22b1 [mq]: 5.patch - test
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -u
# HG changeset patch
# User johndeere
# Parent
diff -r ... 5
--- /dev/null
+++ b/5
@@ -0,0 +1,1 @@
+5
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qnew with plain header
popping 6.patch
now at: 5.patch
now at: 6.patch
From: test
5: 7825a18ec839 imported patch 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref
adding 6
From: test
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 09d19592680d [mq]: 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -U
From: test
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 09d19592680d [mq]: 6.patch - test
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== hg qref -u
From: johndeere
diff -r ... 6
--- /dev/null
+++ b/6
@@ -0,0 +1,1 @@
+6
5: 32641ee07196 [mq]: 6.patch - johndeere
4: 1d898e201a22 [mq]: 5.patch - johndeere
3: 0dfb3111e7ee Four - jane
2: a6686ee84fc3 Three (again) - maria
1: a425cde5f493 [mq]: 2.patch - jane
0: 3682f830e656 [mq]: 1.patch - mary
==== qpop -a / qpush -a
popping 6.patch
popping 5.patch
popping 4.patch
popping 3.patch
popping 2.patch
popping 1.patch
patch queue now empty
applying 1.patch
applying 2.patch
applying 3.patch
applying 4.patch
applying 5.patch
applying 6.patch
now at: 6.patch
5: 1fb083c80457 imported patch 6.patch - johndeere
4: 7e96e969691d imported patch 5.patch - johndeere
3: c7147533d3cd Four - jane
2: b383d04401ea Three (again) - maria
1: fac2da4efc3c imported patch 2.patch - jane
0: b6e237e8771b imported patch 1.patch - mary
$ cd ..