context: handle stringified ints in revsymbol()
This patch copies the handling of stringified ints from changectx's
constructor. It then calls repo.__getitem__ with the int. Since that
method only interprets integers as revnums the first thing it does,
this will not be redoing any of the work already done. We leave the
old code in place so we can later deprecate it instead of breaking
extensions.
Differential Revision: https://phab.mercurial-scm.org/D3146
$ echo '[extensions]' >> $HGRCPATH
$ echo 'strip =' >> $HGRCPATH
$ cat >findbranch.py <<EOF
> from __future__ import absolute_import
> import re
> import sys
>
> head_re = re.compile('^#(?:(?:\\s+([A-Za-z][A-Za-z0-9_]*)(?:\\s.*)?)|(?:\\s*))$')
>
> for line in sys.stdin:
> hmatch = head_re.match(line)
> if not hmatch:
> sys.exit(1)
> if hmatch.group(1) == 'Branch':
> sys.exit(0)
> sys.exit(1)
> EOF
$ hg init a
$ cd a
$ echo "Rev 1" >rev
$ hg add rev
$ hg commit -m "No branch."
$ hg branch abranch
marked working directory as branch abranch
(branches are permanent and global, did you want a bookmark?)
$ echo "Rev 2" >rev
$ hg commit -m "With branch."
$ hg export 0 > ../r0.patch
$ hg export 1 > ../r1.patch
$ cd ..
$ if $PYTHON findbranch.py < r0.patch; then
> echo "Export of default branch revision has Branch header" 1>&2
> exit 1
> fi
$ if $PYTHON findbranch.py < r1.patch; then
> : # Do nothing
> else
> echo "Export of branch revision is missing Branch header" 1>&2
> exit 1
> fi
Make sure import still works with branch information in patches.
$ hg init b
$ cd b
$ hg import ../r0.patch
applying ../r0.patch
$ hg import ../r1.patch
applying ../r1.patch
$ cd ..
$ hg init c
$ cd c
$ hg import --exact --no-commit ../r0.patch
applying ../r0.patch
warning: can't check exact import with --no-commit
$ hg st
A rev
$ hg revert -a
forgetting rev
$ rm rev
$ hg import --exact ../r0.patch
applying ../r0.patch
$ hg import --exact ../r1.patch
applying ../r1.patch
Test --exact and patch header separators (issue3356)
$ hg strip --no-backup .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>>> import re
>>> p = open('../r1.patch', 'rb').read()
>>> p = re.sub(r'Parent\s+', 'Parent ', p)
>>> open('../r1-ws.patch', 'wb').write(p)
$ hg import --exact ../r1-ws.patch
applying ../r1-ws.patch
$ cd ..