Mercurial > hg
changeset 6143:5b159ebb19cf
convert: document splicemap, allow setting of multiple parents
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Tue, 19 Feb 2008 10:53:40 -0800 |
parents | 50a277e6ceae |
children | 08e0825b8106 aafdea37f796 |
files | hgext/convert/__init__.py hgext/convert/convcmd.py |
diffstat | 2 files changed, 17 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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)