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()) |