equal
deleted
inserted
replaced
432 except NoRepo: |
432 except NoRepo: |
433 pass |
433 pass |
434 abort("%s: unknown repository type\n" % path) |
434 abort("%s: unknown repository type\n" % path) |
435 |
435 |
436 class convert: |
436 class convert: |
437 def __init__(self, source, dest, mapfile): |
437 def __init__(self, source, dest, mapfile, opts): |
438 |
438 |
439 self.source = source |
439 self.source = source |
440 self.dest = dest |
440 self.dest = dest |
441 self.mapfile = mapfile |
441 self.mapfile = mapfile |
|
442 self.opts = opts |
442 self.commitcache = {} |
443 self.commitcache = {} |
443 |
444 |
444 self.map = {} |
445 self.map = {} |
445 try: |
446 try: |
446 for l in file(self.mapfile): |
447 for l in file(self.mapfile): |
499 break |
500 break |
500 |
501 |
501 if not dep: |
502 if not dep: |
502 # all n's parents are in the list |
503 # all n's parents are in the list |
503 removed[n] = 1 |
504 removed[n] = 1 |
504 s.append(n) |
505 if n not in self.map: |
|
506 s.append(n) |
505 if n in children: |
507 if n in children: |
506 for c in children[n]: |
508 for c in children[n]: |
507 visit.insert(0, c) |
509 visit.insert(0, c) |
|
510 |
|
511 if opts.get('datesort'): |
|
512 depth = {} |
|
513 for n in s: |
|
514 depth[n] = 0 |
|
515 pl = [p for p in self.commitcache[n].parents if p not in self.map] |
|
516 if pl: |
|
517 depth[n] = max([depth[p] for p in pl]) + 1 |
|
518 |
|
519 s = [(depth[n], self.commitcache[n].date, n) for n in s] |
|
520 s.sort() |
|
521 s = [e[2] for e in s] |
508 |
522 |
509 return s |
523 return s |
510 |
524 |
511 def copy(self, rev): |
525 def copy(self, rev): |
512 c = self.commitcache[rev] |
526 c = self.commitcache[rev] |
530 status("scanning source...\n") |
544 status("scanning source...\n") |
531 heads = self.source.getheads() |
545 heads = self.source.getheads() |
532 parents = self.walktree(heads) |
546 parents = self.walktree(heads) |
533 status("sorting...\n") |
547 status("sorting...\n") |
534 t = self.toposort(parents) |
548 t = self.toposort(parents) |
535 t = [n for n in t if n not in self.map] |
|
536 num = len(t) |
549 num = len(t) |
537 c = None |
550 c = None |
538 |
551 |
539 status("converting...\n") |
552 status("converting...\n") |
540 for c in t: |
553 for c in t: |
578 try: |
591 try: |
579 mapfile = destc.mapfile() |
592 mapfile = destc.mapfile() |
580 except: |
593 except: |
581 mapfile = os.path.join(destc, "map") |
594 mapfile = os.path.join(destc, "map") |
582 |
595 |
583 c = convert(srcc, destc, mapfile) |
596 c = convert(srcc, destc, mapfile, opts) |
584 c.convert() |
597 c.convert() |
585 |
598 |
586 options = [('q', 'quiet', None, 'suppress output')] |
599 options = [('q', 'quiet', None, 'suppress output'), |
|
600 ('', 'datesort', None, 'try to sort changesets by date')] |
587 opts = {} |
601 opts = {} |
588 args = fancyopts.fancyopts(sys.argv[1:], options, opts) |
602 args = fancyopts.fancyopts(sys.argv[1:], options, opts) |
589 |
603 |
590 if opts['quiet']: |
604 if opts['quiet']: |
591 quiet = 1 |
605 quiet = 1 |