j...@keeping.me.uk wrote on Sat, 12 Jan 2013 19:23 +0000:
> I started having a look to see how much work would be needed to make Git
> work with Python 3 and the answer is mostly not much. The exception is
> git-p4.py which is hit hard by the distinction between byte strings and
> unicode strings, particularly because the Python output mode of p4
> targets Python 2.
> I don't know if it's worthwhile to actually apply these but here they
> are in case anyone's interested.
> Having said that, the changes are minimal and involve either wrapping
> parentheses around arguments to print or being a bit more explicit about
> how we expect byte strings to be decoded to unicode.
> With these patches all tests pass with python3 except t98* (git-p4), but
> there are a couple of topics in-flight which will affect that
> (fc/remote-testgit-feature-done and er/replace-cvsimport).
> John Keeping (8):
> git_remote_helpers: Allow building with Python 3
> git_remote_helpers: fix input when running under Python 3
> git_remote_helpers: Force rebuild if python version changes
> git_remote_helpers: Use 2to3 if building with Python 3
> svn-fe: allow svnrdump_sim.py to run with Python 3
> git-remote-testpy: hash bytes explicitly
> git-remote-testpy: don't do unbuffered text I/O
> git-remote-testpy: call print as a function
> contrib/svn-fe/svnrdump_sim.py | 4 ++--
> git-remote-testpy.py | 40
> git_remote_helpers/.gitignore | 1 +
> git_remote_helpers/Makefile | 10 ++++++++--
> git_remote_helpers/git/importer.py | 2 +-
> git_remote_helpers/setup.py | 10 ++++++++++
> 6 files changed, 42 insertions(+), 25 deletions(-)
These look good, in that there are relatively few changed needed.
Sebastian Morr tried a similar patch a year ago, in
He made changes beyond yours, in particular "print >>" lines,
that you seem to handle with 2to3 during the build. I'm not sure
which approach is better in the long run. He worked on the
other .py in contrib/ too.
Can you give me some hints about the byte/unicode string issues
in git-p4.py? There's really only one place that does:
p4 = subprocess.Popen("p4 -G ...")
If that's the only issue, this might not be too paniful.
I hesitated to take Sebastian's changes due to the huge number of
print() lines, but maybe a 2to3 approach would make that aspect
of python3 support not too onerous.
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html