From 3a5728b32f315ebb3ab266deae6693c49654cd86 Mon Sep 17 00:00:00 2001 From: Durham Goode Date: Mon, 17 Feb 2020 14:47:28 -0800 Subject: [PATCH] py3: fix archive Summary: archive uses a formatter to produce it's metadat file. We need to use a string io stream instead of bytes. Reviewed By: quark-zju Differential Revision: D19748163 fbshipit-source-id: fbd8c32066cfc4a234d9b51691717c7fce4c7c9a --- eden/scm/edenscm/mercurial/archival.py | 8 +++----- eden/scm/edenscm/mercurial/pycompat.py | 2 ++ eden/scm/tests/test-fb-hgext-remotefilelog-archive.t | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/eden/scm/edenscm/mercurial/archival.py b/eden/scm/edenscm/mercurial/archival.py index 362ab18c1c..080cd5e2f2 100644 --- a/eden/scm/edenscm/mercurial/archival.py +++ b/eden/scm/edenscm/mercurial/archival.py @@ -32,8 +32,6 @@ from . import ( from .i18n import _ -stringio = util.stringio - # from unzip source code: _UNX_IFREG = 0x8000 _UNX_IFLNK = 0xA000 @@ -102,7 +100,7 @@ def buildmetadata(ctx): opts = {"template": repo.ui.config("experimental", "archivemetatemplate", default)} - out = util.stringio() + out = pycompat.stringutf8io() fm = formatter.formatter(repo.ui, out, "archive", opts) fm.startitem() @@ -116,7 +114,7 @@ def buildmetadata(ctx): fm.data(dirty=dirty) fm.end() - return out.getvalue() + return pycompat.encodeutf8(out.getvalue()) class tarit(object): @@ -184,7 +182,7 @@ class tarit(object): i.size = 0 else: i.mode = mode - data = stringio(data) + data = pycompat.stringio(data) self.z.addfile(i, data) def done(self): diff --git a/eden/scm/edenscm/mercurial/pycompat.py b/eden/scm/edenscm/mercurial/pycompat.py index 9c2f850245..d259ce9719 100644 --- a/eden/scm/edenscm/mercurial/pycompat.py +++ b/eden/scm/edenscm/mercurial/pycompat.py @@ -84,6 +84,7 @@ if sys.version_info[0] >= 3: sysexecutable = sys.executable stringio = io.BytesIO + stringutf8io = io.StringIO maplist = lambda *args: list(map(*args)) ziplist = lambda *args: list(zip(*args)) rawinput = input @@ -178,6 +179,7 @@ else: sysexecutable = sys.executable shlexsplit = shlex.split stringio = cStringIO.StringIO + stringutf8io = cStringIO.StringIO maplist = map ziplist = zip rawinput = raw_input # noqa diff --git a/eden/scm/tests/test-fb-hgext-remotefilelog-archive.t b/eden/scm/tests/test-fb-hgext-remotefilelog-archive.t index fcfb3c8e80..f8bd1458c2 100644 --- a/eden/scm/tests/test-fb-hgext-remotefilelog-archive.t +++ b/eden/scm/tests/test-fb-hgext-remotefilelog-archive.t @@ -1,4 +1,3 @@ -#require py2 #chg-compatible $ disable treemanifest