112 parents[n].append(p) |
112 parents[n].append(p) |
113 visit.append(p) |
113 visit.append(p) |
114 |
114 |
115 return parents |
115 return parents |
116 |
116 |
117 def toposort(self, parents): |
117 def toposort(self, parents, sortmode): |
118 '''Return an ordering such that every uncommitted changeset is |
118 '''Return an ordering such that every uncommitted changeset is |
119 preceeded by all its uncommitted ancestors.''' |
119 preceeded by all its uncommitted ancestors.''' |
120 |
120 |
121 def mapchildren(parents): |
121 def mapchildren(parents): |
122 """Return a (children, roots) tuple where 'children' maps parent |
122 """Return a (children, roots) tuple where 'children' maps parent |
180 def picknext(nodes): |
180 def picknext(nodes): |
181 return min([(getdate(n), n) for n in nodes])[1] |
181 return min([(getdate(n), n) for n in nodes])[1] |
182 |
182 |
183 return picknext |
183 return picknext |
184 |
184 |
185 if self.opts.get('datesort'): |
185 if sortmode == 'branchsort': |
|
186 picknext = makebranchsorter() |
|
187 elif sortmode == 'datesort': |
186 picknext = makedatesorter() |
188 picknext = makedatesorter() |
187 else: |
189 else: |
188 picknext = makebranchsorter() |
190 raise util.Abort(_('unknown sort mode: %s') % sortmode) |
189 |
191 |
190 children, actives = mapchildren(parents) |
192 children, actives = mapchildren(parents) |
191 |
193 |
192 s = [] |
194 s = [] |
193 pendings = {} |
195 pendings = {} |
288 parents = [b[0] for b in pbranches] |
290 parents = [b[0] for b in pbranches] |
289 newnode = self.dest.putcommit(files, copies, parents, commit, self.source) |
291 newnode = self.dest.putcommit(files, copies, parents, commit, self.source) |
290 self.source.converted(rev, newnode) |
292 self.source.converted(rev, newnode) |
291 self.map[rev] = newnode |
293 self.map[rev] = newnode |
292 |
294 |
293 def convert(self): |
295 def convert(self, sortmode): |
294 |
|
295 try: |
296 try: |
296 self.source.before() |
297 self.source.before() |
297 self.dest.before() |
298 self.dest.before() |
298 self.source.setrevmap(self.map) |
299 self.source.setrevmap(self.map) |
299 self.ui.status(_("scanning source...\n")) |
300 self.ui.status(_("scanning source...\n")) |
300 heads = self.source.getheads() |
301 heads = self.source.getheads() |
301 parents = self.walktree(heads) |
302 parents = self.walktree(heads) |
302 self.ui.status(_("sorting...\n")) |
303 self.ui.status(_("sorting...\n")) |
303 t = self.toposort(parents) |
304 t = self.toposort(parents, sortmode) |
304 num = len(t) |
305 num = len(t) |
305 c = None |
306 c = None |
306 |
307 |
307 self.ui.status(_("converting...\n")) |
308 self.ui.status(_("converting...\n")) |
308 for c in t: |
309 for c in t: |
359 except Exception: |
360 except Exception: |
360 for path in destc.created: |
361 for path in destc.created: |
361 shutil.rmtree(path, True) |
362 shutil.rmtree(path, True) |
362 raise |
363 raise |
363 |
364 |
|
365 sortmode = 'branchsort' |
|
366 if opts.get('datesort'): |
|
367 sortmode = 'datesort' |
|
368 |
364 fmap = opts.get('filemap') |
369 fmap = opts.get('filemap') |
365 if fmap: |
370 if fmap: |
366 srcc = filemap.filemap_source(ui, srcc, fmap) |
371 srcc = filemap.filemap_source(ui, srcc, fmap) |
367 destc.setfilemapmode(True) |
372 destc.setfilemapmode(True) |
368 |
373 |
371 revmapfile = destc.revmapfile() |
376 revmapfile = destc.revmapfile() |
372 except: |
377 except: |
373 revmapfile = os.path.join(destc, "map") |
378 revmapfile = os.path.join(destc, "map") |
374 |
379 |
375 c = converter(ui, srcc, destc, revmapfile, opts) |
380 c = converter(ui, srcc, destc, revmapfile, opts) |
376 c.convert() |
381 c.convert(sortmode) |
377 |
382 |