hgfixes: add a fixer to convert plain strings to bytestrings
This patch implements a 2to3 fixer that converts all plain strings in a python
source file to byte strings syntax. Example:
foo = 'Normal string'
would become
foo = b'Normal string'
The motivation behind this fixer can be found in
http://selenic.com/pipermail/mercurial-devel/2010-June/022363.html or, in other
words: the current hg source assumes that _most_ strings are "meant" to be byte
sequences, so it makes sense to make the convertion implemented by this patch.
As mentioned above, not all mercurial modules want to use strings as bytes,
examples include i18n (which uses unicode), and demandimport (in py3k, module
names are normal strings, thus unicode, and there's no need for a convertion).
Therefore, these modules are blacklisted in the fixer. There are also a few
functions that can take only unicode arguments, thus the convertion shouldn't
be done for those.
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
1 files, 1 changesets, 1 total revisions
changeset: 0:0acdaf898367
tag: tip
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: test
rolling back to revision -1 (undo commit)
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
0 files, 0 changesets, 0 total revisions
A a
% Test issue 902
marked working directory as branch test
rolling back to revision -1 (undo commit)
default
% Test issue 1635 (commit message saved)
.hg/last-message.txt:
test2
% Test rollback of hg before issue 902 was fixed
marked working directory as branch test
rolling back to revision -1 (undo commit)
Named branch could not be reset, current branch still is: test
test
% rollback by pretxncommit saves commit message (issue 1635)
transaction abort!
rollback completed
abort: pretxncommit hook exited ...
.hg/last-message.txt:
precious commit message
% same thing, but run $EDITOR
transaction abort!
rollback completed
note: commit message saved in .hg/last-message.txt
abort: pretxncommit hook exited ...
.hg/last-message.txt:
another precious commit message