diff hgext/convert/cvs.py @ 43077:687b865b95ad

formatting: byteify all mercurial/ and hgext/ string literals Done with python3.7 contrib/byteify-strings.py -i $(hg files 'set:mercurial/**.py - mercurial/thirdparty/** + hgext/**.py - hgext/fsmonitor/pywatchman/** - mercurial/__init__.py') black -l 80 -t py33 -S $(hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**" - hgext/fsmonitor/pywatchman/**') # skip-blame mass-reformatting only Differential Revision: https://phab.mercurial-scm.org/D6972
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:48:39 -0400
parents 2372284d9457
children eef9a2d67051
line wrap: on
line diff
--- a/hgext/convert/cvs.py	Sun Oct 06 09:45:02 2019 -0400
+++ b/hgext/convert/cvs.py	Sun Oct 06 09:48:39 2019 -0400
@@ -39,19 +39,19 @@
     def __init__(self, ui, repotype, path, revs=None):
         super(convert_cvs, self).__init__(ui, repotype, path, revs=revs)
 
-        cvs = os.path.join(path, "CVS")
+        cvs = os.path.join(path, b"CVS")
         if not os.path.exists(cvs):
-            raise NoRepo(_("%s does not look like a CVS checkout") % path)
+            raise NoRepo(_(b"%s does not look like a CVS checkout") % path)
 
-        checktool('cvs')
+        checktool(b'cvs')
 
         self.changeset = None
         self.files = {}
         self.tags = {}
         self.lastbranch = {}
         self.socket = None
-        self.cvsroot = open(os.path.join(cvs, "Root"), 'rb').read()[:-1]
-        self.cvsrepo = open(os.path.join(cvs, "Repository"), 'rb').read()[:-1]
+        self.cvsroot = open(os.path.join(cvs, b"Root"), b'rb').read()[:-1]
+        self.cvsrepo = open(os.path.join(cvs, b"Repository"), b'rb').read()[:-1]
         self.encoding = encoding.encoding
 
         self._connect()
@@ -65,7 +65,10 @@
         if self.revs:
             if len(self.revs) > 1:
                 raise error.Abort(
-                    _('cvs source does not support specifying ' 'multiple revs')
+                    _(
+                        b'cvs source does not support specifying '
+                        b'multiple revs'
+                    )
                 )
             # TODO: handle tags
             try:
@@ -73,23 +76,23 @@
                 maxrev = int(self.revs[0])
             except ValueError:
                 raise error.Abort(
-                    _('revision %s is not a patchset number') % self.revs[0]
+                    _(b'revision %s is not a patchset number') % self.revs[0]
                 )
 
         d = encoding.getcwd()
         try:
             os.chdir(self.path)
 
-            cache = 'update'
-            if not self.ui.configbool('convert', 'cvsps.cache'):
+            cache = b'update'
+            if not self.ui.configbool(b'convert', b'cvsps.cache'):
                 cache = None
             db = cvsps.createlog(self.ui, cache=cache)
             db = cvsps.createchangeset(
                 self.ui,
                 db,
-                fuzz=int(self.ui.config('convert', 'cvsps.fuzz')),
-                mergeto=self.ui.config('convert', 'cvsps.mergeto'),
-                mergefrom=self.ui.config('convert', 'cvsps.mergefrom'),
+                fuzz=int(self.ui.config(b'convert', b'cvsps.fuzz')),
+                mergeto=self.ui.config(b'convert', b'cvsps.mergeto'),
+                mergefrom=self.ui.config(b'convert', b'cvsps.mergefrom'),
             )
 
             for cs in db:
@@ -99,16 +102,16 @@
                 cs.author = self.recode(cs.author)
                 self.lastbranch[cs.branch] = id
                 cs.comment = self.recode(cs.comment)
-                if self.ui.configbool('convert', 'localtimezone'):
+                if self.ui.configbool(b'convert', b'localtimezone'):
                     cs.date = makedatetimestamp(cs.date[0])
-                date = dateutil.datestr(cs.date, '%Y-%m-%d %H:%M:%S %1%2')
+                date = dateutil.datestr(cs.date, b'%Y-%m-%d %H:%M:%S %1%2')
                 self.tags.update(dict.fromkeys(cs.tags, id))
 
                 files = {}
                 for f in cs.entries:
-                    files[f.file] = "%s%s" % (
-                        '.'.join([(b"%d" % x) for x in f.revision]),
-                        ['', '(DEAD)'][f.dead],
+                    files[f.file] = b"%s%s" % (
+                        b'.'.join([(b"%d" % x) for x in f.revision]),
+                        [b'', b'(DEAD)'][f.dead],
                     )
 
                 # add current commit to set
@@ -117,7 +120,7 @@
                     date=date,
                     parents=[(b"%d" % p.id) for p in cs.parents],
                     desc=cs.comment,
-                    branch=cs.branch or '',
+                    branch=cs.branch or b'',
                 )
                 self.changeset[id] = c
                 self.files[id] = files
@@ -130,38 +133,38 @@
         root = self.cvsroot
         conntype = None
         user, host = None, None
-        cmd = ['cvs', 'server']
+        cmd = [b'cvs', b'server']
 
-        self.ui.status(_("connecting to %s\n") % root)
+        self.ui.status(_(b"connecting to %s\n") % root)
 
-        if root.startswith(":pserver:"):
+        if root.startswith(b":pserver:"):
             root = root[9:]
             m = re.match(
                 r'(?:(.*?)(?::(.*?))?@)?([^:\/]*)(?::(\d*))?(.*)', root
             )
             if m:
-                conntype = "pserver"
+                conntype = b"pserver"
                 user, passw, serv, port, root = m.groups()
                 if not user:
-                    user = "anonymous"
+                    user = b"anonymous"
                 if not port:
                     port = 2401
                 else:
                     port = int(port)
-                format0 = ":pserver:%s@%s:%s" % (user, serv, root)
-                format1 = ":pserver:%s@%s:%d%s" % (user, serv, port, root)
+                format0 = b":pserver:%s@%s:%s" % (user, serv, root)
+                format1 = b":pserver:%s@%s:%d%s" % (user, serv, port, root)
 
                 if not passw:
-                    passw = "A"
-                    cvspass = os.path.expanduser("~/.cvspass")
+                    passw = b"A"
+                    cvspass = os.path.expanduser(b"~/.cvspass")
                     try:
-                        pf = open(cvspass, 'rb')
+                        pf = open(cvspass, b'rb')
                         for line in pf.read().splitlines():
-                            part1, part2 = line.split(' ', 1)
+                            part1, part2 = line.split(b' ', 1)
                             # /1 :pserver:user@example.com:2401/cvsroot/foo
                             # Ah<Z
-                            if part1 == '/1':
-                                part1, part2 = part2.split(' ', 1)
+                            if part1 == b'/1':
+                                part1, part2 = part2.split(b' ', 1)
                                 format = format1
                             # :pserver:user@example.com:/cvsroot/foo Ah<Z
                             else:
@@ -179,72 +182,72 @@
                 sck = socket.socket()
                 sck.connect((serv, port))
                 sck.send(
-                    "\n".join(
+                    b"\n".join(
                         [
-                            "BEGIN AUTH REQUEST",
+                            b"BEGIN AUTH REQUEST",
                             root,
                             user,
                             passw,
-                            "END AUTH REQUEST",
-                            "",
+                            b"END AUTH REQUEST",
+                            b"",
                         ]
                     )
                 )
-                if sck.recv(128) != "I LOVE YOU\n":
-                    raise error.Abort(_("CVS pserver authentication failed"))
+                if sck.recv(128) != b"I LOVE YOU\n":
+                    raise error.Abort(_(b"CVS pserver authentication failed"))
 
-                self.writep = self.readp = sck.makefile('r+')
+                self.writep = self.readp = sck.makefile(b'r+')
 
-        if not conntype and root.startswith(":local:"):
-            conntype = "local"
+        if not conntype and root.startswith(b":local:"):
+            conntype = b"local"
             root = root[7:]
 
         if not conntype:
             # :ext:user@host/home/user/path/to/cvsroot
-            if root.startswith(":ext:"):
+            if root.startswith(b":ext:"):
                 root = root[5:]
             m = re.match(br'(?:([^@:/]+)@)?([^:/]+):?(.*)', root)
             # Do not take Windows path "c:\foo\bar" for a connection strings
             if os.path.isdir(root) or not m:
-                conntype = "local"
+                conntype = b"local"
             else:
-                conntype = "rsh"
+                conntype = b"rsh"
                 user, host, root = m.group(1), m.group(2), m.group(3)
 
-        if conntype != "pserver":
-            if conntype == "rsh":
-                rsh = encoding.environ.get("CVS_RSH") or "ssh"
+        if conntype != b"pserver":
+            if conntype == b"rsh":
+                rsh = encoding.environ.get(b"CVS_RSH") or b"ssh"
                 if user:
-                    cmd = [rsh, '-l', user, host] + cmd
+                    cmd = [rsh, b'-l', user, host] + cmd
                 else:
                     cmd = [rsh, host] + cmd
 
             # popen2 does not support argument lists under Windows
             cmd = [procutil.shellquote(arg) for arg in cmd]
-            cmd = procutil.quotecommand(' '.join(cmd))
+            cmd = procutil.quotecommand(b' '.join(cmd))
             self.writep, self.readp = procutil.popen2(cmd)
 
         self.realroot = root
 
-        self.writep.write("Root %s\n" % root)
+        self.writep.write(b"Root %s\n" % root)
         self.writep.write(
-            "Valid-responses ok error Valid-requests Mode"
-            " M Mbinary E Checked-in Created Updated"
-            " Merged Removed\n"
+            b"Valid-responses ok error Valid-requests Mode"
+            b" M Mbinary E Checked-in Created Updated"
+            b" Merged Removed\n"
         )
-        self.writep.write("valid-requests\n")
+        self.writep.write(b"valid-requests\n")
         self.writep.flush()
         r = self.readp.readline()
-        if not r.startswith("Valid-requests"):
+        if not r.startswith(b"Valid-requests"):
             raise error.Abort(
                 _(
-                    'unexpected response from CVS server '
-                    '(expected "Valid-requests", but got %r)'
+                    b'unexpected response from CVS server '
+                    b'(expected "Valid-requests", but got %r)'
                 )
                 % r
             )
-        if "UseUnchanged" in r:
-            self.writep.write("UseUnchanged\n")
+        if b"UseUnchanged" in r:
+            self.writep.write(b"UseUnchanged\n")
             self.writep.flush()
             self.readp.readline()
 
@@ -262,55 +265,55 @@
                 data = fp.read(min(count, chunksize))
                 if not data:
                     raise error.Abort(
-                        _("%d bytes missing from remote file") % count
+                        _(b"%d bytes missing from remote file") % count
                     )
                 count -= len(data)
                 output.write(data)
             return output.getvalue()
 
         self._parse()
-        if rev.endswith("(DEAD)"):
+        if rev.endswith(b"(DEAD)"):
             return None, None
 
-        args = ("-N -P -kk -r %s --" % rev).split()
-        args.append(self.cvsrepo + '/' + name)
+        args = (b"-N -P -kk -r %s --" % rev).split()
+        args.append(self.cvsrepo + b'/' + name)
         for x in args:
-            self.writep.write("Argument %s\n" % x)
-        self.writep.write("Directory .\n%s\nco\n" % self.realroot)
+            self.writep.write(b"Argument %s\n" % x)
+        self.writep.write(b"Directory .\n%s\nco\n" % self.realroot)
         self.writep.flush()
 
-        data = ""
+        data = b""
         mode = None
         while True:
             line = self.readp.readline()
-            if line.startswith("Created ") or line.startswith("Updated "):
+            if line.startswith(b"Created ") or line.startswith(b"Updated "):
                 self.readp.readline()  # path
                 self.readp.readline()  # entries
                 mode = self.readp.readline()[:-1]
                 count = int(self.readp.readline()[:-1])
                 data = chunkedread(self.readp, count)
-            elif line.startswith(" "):
+            elif line.startswith(b" "):
                 data += line[1:]
-            elif line.startswith("M "):
+            elif line.startswith(b"M "):
                 pass
-            elif line.startswith("Mbinary "):
+            elif line.startswith(b"Mbinary "):
                 count = int(self.readp.readline()[:-1])
                 data = chunkedread(self.readp, count)
             else:
-                if line == "ok\n":
+                if line == b"ok\n":
                     if mode is None:
-                        raise error.Abort(_('malformed response from CVS'))
-                    return (data, "x" in mode and "x" or "")
-                elif line.startswith("E "):
-                    self.ui.warn(_("cvs server: %s\n") % line[2:])
-                elif line.startswith("Remove"):
+                        raise error.Abort(_(b'malformed response from CVS'))
+                    return (data, b"x" in mode and b"x" or b"")
+                elif line.startswith(b"E "):
+                    self.ui.warn(_(b"cvs server: %s\n") % line[2:])
+                elif line.startswith(b"Remove"):
                     self.readp.readline()
                 else:
-                    raise error.Abort(_("unknown CVS response: %s") % line)
+                    raise error.Abort(_(b"unknown CVS response: %s") % line)
 
     def getchanges(self, rev, full):
         if full:
-            raise error.Abort(_("convert from cvs does not support --full"))
+            raise error.Abort(_(b"convert from cvs does not support --full"))
         self._parse()
         return sorted(self.files[rev].iteritems()), {}, set()