hgext/convert/convcmd.py
changeset 8689 9bc95f8eb018
parent 8688 31e613a89750
child 8690 c5b4f662109f
equal deleted inserted replaced
8688:31e613a89750 8689:9bc95f8eb018
   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