Show More
@@ -183,25 +183,6 b' class convert_svn(converter_source):' | |||||
183 | svn.ra.reparent(self.ra, svn_url.encode(self.encoding)) |
|
183 | svn.ra.reparent(self.ra, svn_url.encode(self.encoding)) | |
184 |
|
184 | |||
185 | def _fetch_revisions(self, from_revnum = 0, to_revnum = 347, module=None): |
|
185 | def _fetch_revisions(self, from_revnum = 0, to_revnum = 347, module=None): | |
186 | # batching is broken for branches |
|
|||
187 | to_revnum = 0 |
|
|||
188 | if not hasattr(self, 'child_rev'): |
|
|||
189 | self.child_rev = from_revnum |
|
|||
190 | self.child_cset = self.commits.get(self.child_rev) |
|
|||
191 | else: |
|
|||
192 | self.commits[self.child_rev] = self.child_cset |
|
|||
193 | # batching broken |
|
|||
194 | return |
|
|||
195 | # if the branch was created in the middle of the last batch, |
|
|||
196 | # svn log will complain that the path doesn't exist in this batch |
|
|||
197 | # so we roll the parser back to the last revision where this branch appeared |
|
|||
198 | revnum = self.revnum(self.child_rev) |
|
|||
199 | if revnum > from_revnum: |
|
|||
200 | from_revnum = revnum |
|
|||
201 |
|
||||
202 | self.ui.note('fetching revision log from %d to %d\n' % \ |
|
|||
203 | (from_revnum, to_revnum)) |
|
|||
204 |
|
||||
205 | def get_entry_from_path(path, module=self.module): |
|
186 | def get_entry_from_path(path, module=self.module): | |
206 | # Given the repository url of this wc, say |
|
187 | # Given the repository url of this wc, say | |
207 | # "http://server/plone/CMFPlone/branches/Plone-2_0-branch" |
|
188 | # "http://server/plone/CMFPlone/branches/Plone-2_0-branch" | |
@@ -221,6 +202,7 b' class convert_svn(converter_source):' | |||||
221 | self.ui.debug('Ignoring %r since it is not under %r\n' % (path, module)) |
|
202 | self.ui.debug('Ignoring %r since it is not under %r\n' % (path, module)) | |
222 | return None |
|
203 | return None | |
223 |
|
204 | |||
|
205 | self.child_cset = None | |||
224 | def parselogentry(*arg, **args): |
|
206 | def parselogentry(*arg, **args): | |
225 | orig_paths, revnum, author, date, message, pool = arg |
|
207 | orig_paths, revnum, author, date, message, pool = arg | |
226 | orig_paths = svn_paths(orig_paths) |
|
208 | orig_paths = svn_paths(orig_paths) | |
@@ -256,13 +238,13 b' class convert_svn(converter_source):' | |||||
256 | for path in orig_paths: |
|
238 | for path in orig_paths: | |
257 | # self.ui.write("path %s\n" % path) |
|
239 | # self.ui.write("path %s\n" % path) | |
258 | if path == self.module: # Follow branching back in history |
|
240 | if path == self.module: # Follow branching back in history | |
259 | import pdb |
|
|||
260 | pdb.set_trace() |
|
|||
261 | ent = orig_paths[path] |
|
241 | ent = orig_paths[path] | |
262 | if ent: |
|
242 | if ent: | |
263 | if ent.copyfrom_path: |
|
243 | if ent.copyfrom_path: | |
264 |
|
|
244 | # ent.copyfrom_rev may not be the actual last revision | |
265 |
p |
|
245 | prev = self.latest(ent.copyfrom_path, revnum) | |
|
246 | self.modulemap[prev] = ent.copyfrom_path | |||
|
247 | parents = [self.rev(prev, ent.copyfrom_path)] | |||
266 | else: |
|
248 | else: | |
267 | self.ui.debug("No copyfrom path, don't know what to do.\n") |
|
249 | self.ui.debug("No copyfrom path, don't know what to do.\n") | |
268 | # Maybe it was added and there is no more history. |
|
250 | # Maybe it was added and there is no more history. | |
@@ -440,11 +422,13 b' class convert_svn(converter_source):' | |||||
440 | copies=copies, |
|
422 | copies=copies, | |
441 | branch=branch) |
|
423 | branch=branch) | |
442 |
|
424 | |||
443 | if self.child_cset and self.child_rev != rev: |
|
425 | self.commits[rev] = cset | |
|
426 | if self.child_cset and not self.child_cset.parents: | |||
444 | self.child_cset.parents = [rev] |
|
427 | self.child_cset.parents = [rev] | |
445 | self.commits[self.child_rev] = self.child_cset |
|
|||
446 | self.child_cset = cset |
|
428 | self.child_cset = cset | |
447 | self.child_rev = rev |
|
429 | ||
|
430 | self.ui.note('fetching revision log from %d to %d\n' % \ | |||
|
431 | (from_revnum, to_revnum)) | |||
448 |
|
432 | |||
449 | if module is None: |
|
433 | if module is None: | |
450 | module = self.module |
|
434 | module = self.module | |
@@ -514,12 +498,30 b' class convert_svn(converter_source):' | |||||
514 | if rev not in self.commits: |
|
498 | if rev not in self.commits: | |
515 | uuid, module, revnum = self.revsplit(rev) |
|
499 | uuid, module, revnum = self.revsplit(rev) | |
516 | minrev = revnum - LOG_BATCH_SIZE > 0 and revnum - LOG_BATCH_SIZE or 0 |
|
500 | minrev = revnum - LOG_BATCH_SIZE > 0 and revnum - LOG_BATCH_SIZE or 0 | |
517 |
self._fetch_revisions(from_revnum=revnum, to_revnum= |
|
501 | self._fetch_revisions(from_revnum=revnum, to_revnum=0, | |
518 | module=module) |
|
502 | module=module) | |
519 | return self.commits[rev] |
|
503 | return self.commits[rev] | |
520 |
|
504 | |||
521 | def gettags(self): |
|
505 | def gettags(self): | |
522 | return [] |
|
506 | tags = {} | |
|
507 | def parselogentry(*arg, **args): | |||
|
508 | orig_paths, revnum, author, date, message, pool = arg | |||
|
509 | orig_paths = svn_paths(orig_paths) | |||
|
510 | for path in orig_paths: | |||
|
511 | ent = orig_paths[path] | |||
|
512 | source = ent.copyfrom_path | |||
|
513 | rev = ent.copyfrom_rev | |||
|
514 | tag = path.split('/', 2)[2] | |||
|
515 | tags[tag] = self.rev(rev, module=source) | |||
|
516 | ||||
|
517 | start = self.revnum(self.head) | |||
|
518 | try: | |||
|
519 | svn.ra.get_log(self.ra, ['/tags'], start, 0, 1, True, False, | |||
|
520 | parselogentry) | |||
|
521 | return tags | |||
|
522 | except SubversionException: | |||
|
523 | self.ui.note('no tags found at revision %d\n' % start) | |||
|
524 | return {} | |||
523 |
|
525 | |||
524 | def _find_children(self, path, revnum): |
|
526 | def _find_children(self, path, revnum): | |
525 | path = path.strip("/") |
|
527 | path = path.strip("/") |
General Comments 0
You need to be logged in to leave comments.
Login now