--- a/hgext/convert/__init__.py Mon Feb 18 19:21:33 2008 +0100
+++ b/hgext/convert/__init__.py Tue Feb 19 10:53:40 2008 -0800
@@ -67,6 +67,17 @@
subdirectory into the root of the repository, use '.' as the path to
rename to.
+ The splicemap is a file that allows insertion of synthetic
+ history, letting you specify the parents of a revision. This is
+ useful if you want to e.g. give a Subversion merge two parents, or
+ graft two disconnected series of history together. Each entry
+ contains a key, followed by a space, followed by one or two
+ values, separated by spaces. The key is the revision ID in the
+ source revision control system whose parents should be modified
+ (same format as a key in .hg/shamap). The values are the revision
+ IDs (in either the source or destination revision control system)
+ that should be used as the new parents for that node.
+
Back end options:
--config convert.hg.clonebranches=False (boolean)
@@ -100,6 +111,7 @@
('', 'filemap', '', 'remap file names using contents of file'),
('r', 'rev', '', 'import up to target revision REV'),
('s', 'source-type', '', 'source repository type'),
+ ('', 'splicemap', '', 'splice synthesized history into place'),
('', 'datesort', None, 'try to sort changesets by date')],
'hg convert [OPTION]... SOURCE [DEST [MAPFILE]]'),
"debugsvnlog":
--- a/hgext/convert/convcmd.py Mon Feb 18 19:21:33 2008 +0100
+++ b/hgext/convert/convcmd.py Tue Feb 19 10:53:40 2008 -0800
@@ -84,7 +84,7 @@
self.readauthormap(opts.get('authors'))
self.authorfile = self.dest.authorfile()
- self.splicemap = mapfile(ui, ui.config('convert', 'splicemap'))
+ self.splicemap = mapfile(ui, opts.get('splicemap'))
def walktree(self, heads):
'''Return a mapping that identifies the uncommitted parents of every
@@ -252,9 +252,10 @@
self.dest.copyfile(copyf, f)
try:
- parents = [self.splicemap[rev]]
- self.ui.debug('spliced in %s as parents of %s\n' %
- (parents, rev))
+ parents = self.splicemap[rev].replace(',', ' ').split()
+ self.ui.status('spliced in %s as parents of %s\n' %
+ (parents, rev))
+ parents = [self.map.get(p, p) for p in parents]
except KeyError:
parents = [b[0] for b in pbranches]
newnode = self.dest.putcommit(filenames, parents, commit)