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.
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
pulling from ../test1
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
(run 'hg update' to get a working copy)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
% the changelog should mention file a:
a
pulling from ../test2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 0 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
changeset: 2:37dccb76c058
tag: tip
parent: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: chmod +x a
changeset: 1:a187cb361a5a
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: a updated
changeset: 2:37dccb76c058
tag: tip
parent: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: chmod +x a
changeset: 1:a187cb361a5a
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: a updated
changeset: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: added a b
resolving manifests
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
pulling from ../test2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 0 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
changeset: 2:37dccb76c058
tag: tip
parent: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: chmod +x a
changeset: 1:d54568174d8e
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: b updated
changeset: 2:37dccb76c058
tag: tip
parent: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: chmod +x a
changeset: 1:d54568174d8e
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: b updated
changeset: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: added a b
resolving manifests
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
-rwxr-x---
-rwxr-x---
-rwxr-x---
rev offset length base linkrev nodeid p1 p2
0 0 0 0 0 b80de5d13875 000000000000 000000000000
rev offset length base linkrev nodeid p1 p2
0 0 0 0 0 b80de5d13875 000000000000 000000000000
rev offset length base linkrev nodeid p1 p2
0 0 0 0 0 b80de5d13875 000000000000 000000000000
1 0 5 1 1 7fe919cc0336 b80de5d13875 000000000000