hgext/convert/p4.py
changeset 25748 baea47cafe75
parent 24395 216fa1ba9993
child 25751 17a9da909186
equal deleted inserted replaced
25747:5a15236f142a 25748:baea47cafe75
    22             yield d
    22             yield d
    23     except EOFError:
    23     except EOFError:
    24         pass
    24         pass
    25 
    25 
    26 class p4_source(converter_source):
    26 class p4_source(converter_source):
    27     def __init__(self, ui, path, rev=None):
    27     def __init__(self, ui, path, revs=None):
    28         super(p4_source, self).__init__(ui, path, rev=rev)
    28         super(p4_source, self).__init__(ui, path, revs=revs)
    29 
    29 
    30         if "/" in path and not path.startswith('//'):
    30         if "/" in path and not path.startswith('//'):
    31             raise NoRepo(_('%s does not look like a P4 repository') % path)
    31             raise NoRepo(_('%s does not look like a P4 repository') % path)
    32 
    32 
    33         checktool('p4', abort=False)
    33         checktool('p4', abort=False)
    47         self.re_keywords = re.compile(
    47         self.re_keywords = re.compile(
    48             r"\$(Id|Header|Date|DateTime|Change|File|Revision|Author)"
    48             r"\$(Id|Header|Date|DateTime|Change|File|Revision|Author)"
    49             r":[^$\n]*\$")
    49             r":[^$\n]*\$")
    50         self.re_keywords_old = re.compile("\$(Id|Header):[^$\n]*\$")
    50         self.re_keywords_old = re.compile("\$(Id|Header):[^$\n]*\$")
    51 
    51 
       
    52         if revs and len(revs) > 1:
       
    53             raise util.Abort(_("p4 source does not support specifying "
       
    54                                "multiple revisions"))
    52         self._parse(ui, path)
    55         self._parse(ui, path)
    53 
    56 
    54     def _parse_view(self, path):
    57     def _parse_view(self, path):
    55         "Read changes affecting the path"
    58         "Read changes affecting the path"
    56         cmd = 'p4 -G changes -s submitted %s' % util.shellquote(path)
    59         cmd = 'p4 -G changes -s submitted %s' % util.shellquote(path)
    97 
   100 
    98         # handle revision limiting
   101         # handle revision limiting
    99         startrev = self.ui.config('convert', 'p4.startrev', default=0)
   102         startrev = self.ui.config('convert', 'p4.startrev', default=0)
   100         self.p4changes = [x for x in self.p4changes
   103         self.p4changes = [x for x in self.p4changes
   101                           if ((not startrev or int(x) >= int(startrev)) and
   104                           if ((not startrev or int(x) >= int(startrev)) and
   102                               (not self.rev or int(x) <= int(self.rev)))]
   105                               (not self.revs or int(x) <= int(self.revs[0])))]
   103 
   106 
   104         # now read the full changelists to get the list of file revisions
   107         # now read the full changelists to get the list of file revisions
   105         ui.status(_('collecting p4 changelists\n'))
   108         ui.status(_('collecting p4 changelists\n'))
   106         lastid = None
   109         lastid = None
   107         for change in self.p4changes:
   110         for change in self.p4changes: