use 'x is None' instead of 'x == None'
The built-in None object is a singleton and it is therefore safe to
compare memory addresses with is. It is also faster, how much depends
on the object being compared. For a simple type like str I get:
| s = "foo" | s = None
----------+-----------+----------
s == None | 0.25 usec | 0.21 usec
s is None | 0.17 usec | 0.17 usec
#!/bin/sh
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
hg init a
cd a
echo a > a
hg ci -Ama
hg qnew a.patch
echo a >> a
hg qrefresh
hg qnew b.patch
echo b > b
hg add b
hg qrefresh
hg qnew c.patch
echo c > c
hg add c
hg qrefresh
hg qgoto a.patch
hg qgoto c.patch
hg qgoto b.patch
echo
echo % Using index
hg qgoto 0
hg qgoto 2
echo
echo % No warnings when using index
hg qnew bug314159
echo d >> c
hg qrefresh
hg qnew bug141421
echo e >> c
hg qrefresh
hg qgoto 1
hg qgoto 3
echo
echo % Detect ambiguous non-index
hg qgoto 14
exit 0