hgext/convert/cvs.py
changeset 8048 d22432bdcba1
parent 7874 d812029cda85
child 8169 6584953be356
equal deleted inserted replaced
8047:04c62275cbc7 8048:d22432bdcba1
    22         self.builtin = cvspsexe == 'builtin'
    22         self.builtin = cvspsexe == 'builtin'
    23 
    23 
    24         if not self.builtin:
    24         if not self.builtin:
    25             checktool(cvspsexe)
    25             checktool(cvspsexe)
    26 
    26 
    27         self.changeset = {}
    27         self.changeset = None
    28         self.files = {}
    28         self.files = {}
    29         self.tags = {}
    29         self.tags = {}
    30         self.lastbranch = {}
    30         self.lastbranch = {}
    31         self.parent = {}
    31         self.parent = {}
    32         self.socket = None
    32         self.socket = None
    33         self.cvsroot = file(os.path.join(cvs, "Root")).read()[:-1]
    33         self.cvsroot = file(os.path.join(cvs, "Root")).read()[:-1]
    34         self.cvsrepo = file(os.path.join(cvs, "Repository")).read()[:-1]
    34         self.cvsrepo = file(os.path.join(cvs, "Repository")).read()[:-1]
    35         self.encoding = locale.getpreferredencoding()
    35         self.encoding = locale.getpreferredencoding()
    36 
    36 
    37         self._parse(ui)
       
    38         self._connect()
    37         self._connect()
    39 
    38 
    40     def _parse(self, ui):
    39     def _parse(self):
    41         if self.changeset:
    40         if self.changeset is not None:
    42             return
    41             return
       
    42         self.changeset = {}
    43 
    43 
    44         maxrev = 0
    44         maxrev = 0
    45         cmd = self.cmd
    45         cmd = self.cmd
    46         if self.rev:
    46         if self.rev:
    47             # TODO: handle tags
    47             # TODO: handle tags
    63             state = 0
    63             state = 0
    64             filerevids = {}
    64             filerevids = {}
    65 
    65 
    66             if self.builtin:
    66             if self.builtin:
    67                 # builtin cvsps code
    67                 # builtin cvsps code
    68                 ui.status(_('using builtin cvsps\n'))
    68                 self.ui.status(_('using builtin cvsps\n'))
    69 
    69 
    70                 db = cvsps.createlog(ui, cache='update')
    70                 db = cvsps.createlog(self.ui, cache='update')
    71                 db = cvsps.createchangeset(ui, db,
    71                 db = cvsps.createchangeset(self.ui, db,
    72                       fuzz=int(ui.config('convert', 'cvsps.fuzz', 60)),
    72                       fuzz=int(self.ui.config('convert', 'cvsps.fuzz', 60)),
    73                       mergeto=ui.config('convert', 'cvsps.mergeto', None),
    73                       mergeto=self.ui.config('convert', 'cvsps.mergeto', None),
    74                       mergefrom=ui.config('convert', 'cvsps.mergefrom', None))
    74                       mergefrom=self.ui.config('convert', 'cvsps.mergefrom', None))
    75 
    75 
    76                 for cs in db:
    76                 for cs in db:
    77                     if maxrev and cs.id>maxrev:
    77                     if maxrev and cs.id>maxrev:
    78                         break
    78                         break
    79                     id = str(cs.id)
    79                     id = str(cs.id)
   276             self.writep.write("UseUnchanged\n")
   276             self.writep.write("UseUnchanged\n")
   277             self.writep.flush()
   277             self.writep.flush()
   278             r = self.readp.readline()
   278             r = self.readp.readline()
   279 
   279 
   280     def getheads(self):
   280     def getheads(self):
       
   281         self._parse()
   281         return self.heads
   282         return self.heads
   282 
   283 
   283     def _getfile(self, name, rev):
   284     def _getfile(self, name, rev):
   284 
   285 
   285         def chunkedread(fp, count):
   286         def chunkedread(fp, count):
   330                     self.readp.readline()
   331                     self.readp.readline()
   331                 else:
   332                 else:
   332                     raise util.Abort(_("unknown CVS response: %s") % line)
   333                     raise util.Abort(_("unknown CVS response: %s") % line)
   333 
   334 
   334     def getfile(self, file, rev):
   335     def getfile(self, file, rev):
       
   336         self._parse()
   335         data, mode = self._getfile(file, rev)
   337         data, mode = self._getfile(file, rev)
   336         self.modecache[(file, rev)] = mode
   338         self.modecache[(file, rev)] = mode
   337         return data
   339         return data
   338 
   340 
   339     def getmode(self, file, rev):
   341     def getmode(self, file, rev):
   340         return self.modecache[(file, rev)]
   342         return self.modecache[(file, rev)]
   341 
   343 
   342     def getchanges(self, rev):
   344     def getchanges(self, rev):
       
   345         self._parse()
   343         self.modecache = {}
   346         self.modecache = {}
   344         return util.sort(self.files[rev].items()), {}
   347         return util.sort(self.files[rev].items()), {}
   345 
   348 
   346     def getcommit(self, rev):
   349     def getcommit(self, rev):
       
   350         self._parse()
   347         return self.changeset[rev]
   351         return self.changeset[rev]
   348 
   352 
   349     def gettags(self):
   353     def gettags(self):
       
   354         self._parse()
   350         return self.tags
   355         return self.tags
   351 
   356 
   352     def getchangedfiles(self, rev, i):
   357     def getchangedfiles(self, rev, i):
       
   358         self._parse()
   353         return util.sort(self.files[rev].keys())
   359         return util.sort(self.files[rev].keys())