Mercurial > hg
comparison hgext/convert/convcmd.py @ 8692:827d4e807d57
convert: default revisions order depends on source
When converting Mercurial repositories you expect the revision numbers to be
preserved, while other sources conversions focus on efficiency.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Mon, 01 Jun 2009 17:12:41 +0200 |
parents | a0a541d6fed6 |
children | 68e0a55eee6e |
comparison
equal
deleted
inserted
replaced
8691:a0a541d6fed6 | 8692:827d4e807d57 |
---|---|
28 return s.encode(orig_encoding, 'replace') | 28 return s.encode(orig_encoding, 'replace') |
29 else: | 29 else: |
30 return s.decode('utf-8').encode(orig_encoding, 'replace') | 30 return s.decode('utf-8').encode(orig_encoding, 'replace') |
31 | 31 |
32 source_converters = [ | 32 source_converters = [ |
33 ('cvs', convert_cvs), | 33 ('cvs', convert_cvs, 'branchsort'), |
34 ('git', convert_git), | 34 ('git', convert_git, 'branchsort'), |
35 ('svn', svn_source), | 35 ('svn', svn_source, 'branchsort'), |
36 ('hg', mercurial_source), | 36 ('hg', mercurial_source, 'sourcesort'), |
37 ('darcs', darcs_source), | 37 ('darcs', darcs_source, 'branchsort'), |
38 ('mtn', monotone_source), | 38 ('mtn', monotone_source, 'branchsort'), |
39 ('gnuarch', gnuarch_source), | 39 ('gnuarch', gnuarch_source, 'branchsort'), |
40 ('bzr', bzr_source), | 40 ('bzr', bzr_source, 'branchsort'), |
41 ('p4', p4_source), | 41 ('p4', p4_source, 'branchsort'), |
42 ] | 42 ] |
43 | 43 |
44 sink_converters = [ | 44 sink_converters = [ |
45 ('hg', mercurial_sink), | 45 ('hg', mercurial_sink), |
46 ('svn', svn_sink), | 46 ('svn', svn_sink), |
47 ] | 47 ] |
48 | 48 |
49 def convertsource(ui, path, type, rev): | 49 def convertsource(ui, path, type, rev): |
50 exceptions = [] | 50 exceptions = [] |
51 for name, source in source_converters: | 51 for name, source, sortmode in source_converters: |
52 try: | 52 try: |
53 if not type or name == type: | 53 if not type or name == type: |
54 return source(ui, path, rev) | 54 return source(ui, path, rev), sortmode |
55 except (NoRepo, MissingTool), inst: | 55 except (NoRepo, MissingTool), inst: |
56 exceptions.append(inst) | 56 exceptions.append(inst) |
57 if not ui.quiet: | 57 if not ui.quiet: |
58 for inst in exceptions: | 58 for inst in exceptions: |
59 ui.write("%s\n" % inst) | 59 ui.write("%s\n" % inst) |
362 ui.status(_("assuming destination %s\n") % dest) | 362 ui.status(_("assuming destination %s\n") % dest) |
363 | 363 |
364 destc = convertsink(ui, dest, opts.get('dest_type')) | 364 destc = convertsink(ui, dest, opts.get('dest_type')) |
365 | 365 |
366 try: | 366 try: |
367 srcc = convertsource(ui, src, opts.get('source_type'), | 367 srcc, defaultsort = convertsource(ui, src, opts.get('source_type'), |
368 opts.get('rev')) | 368 opts.get('rev')) |
369 except Exception: | 369 except Exception: |
370 for path in destc.created: | 370 for path in destc.created: |
371 shutil.rmtree(path, True) | 371 shutil.rmtree(path, True) |
372 raise | 372 raise |
373 | 373 |
374 sortmodes = ('datesort', 'sourcesort') | 374 sortmodes = ('branchsort', 'datesort', 'sourcesort') |
375 sortmode = [m for m in sortmodes if opts.get(m)] | 375 sortmode = [m for m in sortmodes if opts.get(m)] |
376 if len(sortmode) > 1: | 376 if len(sortmode) > 1: |
377 raise util.Abort(_('more than one sort mode specified')) | 377 raise util.Abort(_('more than one sort mode specified')) |
378 sortmode = sortmode and sortmode[0] or 'branchsort' | 378 sortmode = sortmode and sortmode[0] or defaultsort |
379 if sortmode == 'sourcesort' and not srcc.hasnativeorder(): | 379 if sortmode == 'sourcesort' and not srcc.hasnativeorder(): |
380 raise util.Abort(_('--sourcesort is not supported by this data source')) | 380 raise util.Abort(_('--sourcesort is not supported by this data source')) |
381 | 381 |
382 fmap = opts.get('filemap') | 382 fmap = opts.get('filemap') |
383 if fmap: | 383 if fmap: |