Mercurial > hg-stable
changeset 5556:61fdf2558c0a
convert: some tidyups, doc improvements, and test fixes
The various back end options are now documented.
The hg source can now be configured not to hand out a revision ID.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Tue, 27 Nov 2007 09:44:09 -0800 |
parents | 86405ff6d74b |
children | c47484fab02e 7c1a9a21dcd7 |
files | hgext/convert/__init__.py hgext/convert/common.py hgext/convert/filemap.py hgext/convert/hg.py tests/test-convert tests/test-convert-cvs.out tests/test-convert-hg-sink tests/test-convert-hg-sink.out tests/test-convert-hg-source tests/test-convert-svn-source.out tests/test-convert.out |
diffstat | 11 files changed, 75 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/__init__.py Mon Nov 26 17:24:21 2007 -0800 +++ b/hgext/convert/__init__.py Tue Nov 27 09:44:09 2007 -0800 @@ -332,6 +332,24 @@ The 'rename' directive renames a file or directory. To rename from a subdirectory into the root of the repository, use '.' as the path to rename to. + + Back end options: + + --config convert.hg.clonebranches=False (boolean) + hg target: XXX not documented + --config convert.hg.saverev=True (boolean) + hg source: allow target to preserve source revision ID + --config convert.hg.tagsbranch=default (branch name) + hg target: XXX not documented + --config convert.hg.usebranchnames=True (boolean) + hg target: preserve branch names + + --config convert.svn.branches=branches (directory name) + svn source: specify the directory containing branches + --config convert.svn.tags=tags (directory name) + svn source: specify the directory containing tags + --config convert.svn.trunk=trunk (directory name) + svn source: specify the name of the trunk branch """ util._encoding = 'UTF-8'
--- a/hgext/convert/common.py Mon Nov 26 17:24:21 2007 -0800 +++ b/hgext/convert/common.py Tue Nov 27 09:44:09 2007 -0800 @@ -40,7 +40,7 @@ class converter_source(object): """Conversion source interface""" - def __init__(self, ui, path, rev=None): + def __init__(self, ui, path=None, rev=None): """Initialize conversion source (or raise NoRepo("message") exception if path is not a valid repository)""" self.ui = ui
--- a/hgext/convert/filemap.py Mon Nov 26 17:24:21 2007 -0800 +++ b/hgext/convert/filemap.py Tue Nov 27 09:44:09 2007 -0800 @@ -7,7 +7,7 @@ import shlex from mercurial.i18n import _ from mercurial import util -from common import SKIPREV +from common import SKIPREV, converter_source def rpairs(name): e = len(name) @@ -110,9 +110,9 @@ # touch files we're interested in, but also merges that merge two # or more interesting revisions. -class filemap_source(object): +class filemap_source(converter_source): def __init__(self, ui, baseconverter, filemap): - self.ui = ui + super(filemap_source, self).__init__(ui) self.base = baseconverter self.filemapper = filemapper(ui, filemap) self.commits = {} @@ -344,9 +344,3 @@ def gettags(self): return self.base.gettags() - - def before(self): - pass - - def after(self): - pass
--- a/hgext/convert/hg.py Mon Nov 26 17:24:21 2007 -0800 +++ b/hgext/convert/hg.py Tue Nov 27 09:44:09 2007 -0800 @@ -1,10 +1,16 @@ # hg backend for convert extension -# Note for hg->hg conversion: Old versions of Mercurial didn't trim -# the whitespace from the ends of commit messages, but new versions -# do. Changesets created by those older versions, then converted, may -# thus have different hashes for changesets that are otherwise -# identical. +# Notes for hg->hg conversion: +# +# * Old versions of Mercurial didn't trim the whitespace from the ends +# of commit messages, but new versions do. Changesets created by +# those older versions, then converted, may thus have different +# hashes for changesets that are otherwise identical. +# +# * By default, the source revision is stored in the converted +# revision. This will cause the converted revision to have a +# different identity than the source. To avoid this, use the +# following option: "--config convert.hg.saverev=false" import os, time @@ -181,6 +187,7 @@ class mercurial_source(converter_source): def __init__(self, ui, path, rev=None): converter_source.__init__(self, ui, path, rev) + self.saverev = ui.configbool('convert', 'hg.saverev', True) try: self.repo = hg.repository(self.ui, path) # try to provoke an exception if this isn't really a hg @@ -239,8 +246,12 @@ def getcommit(self, rev): ctx = self.changectx(rev) parents = [hex(p.node()) for p in ctx.parents() if p.node() != nullid] + if self.saverev: + crev = rev + else: + crev = None return commit(author=ctx.user(), date=util.datestr(ctx.date()), - desc=ctx.description(), rev=rev, parents=parents, + desc=ctx.description(), rev=crev, parents=parents, branch=ctx.branch(), extra=ctx.extra()) def gettags(self):
--- a/tests/test-convert Mon Nov 26 17:24:21 2007 -0800 +++ b/tests/test-convert Tue Nov 27 09:44:09 2007 -0800 @@ -1,7 +1,11 @@ #!/bin/sh -echo "[extensions]" >> $HGRCPATH -echo "convert=" >> $HGRCPATH +cat >> $HGRCPATH <<EOF +[extensions] +convert= +[convert] +hg.saverev=False +EOF hg help convert
--- a/tests/test-convert-cvs.out Mon Nov 26 17:24:21 2007 -0800 +++ b/tests/test-convert-cvs.out Tue Nov 27 09:44:09 2007 -0800 @@ -44,7 +44,6 @@ checking in src/a,v checking in src/b/c,v % convert again -destination src-hg is a Mercurial repository connecting to cvsrepo scanning source... sorting... @@ -56,7 +55,6 @@ c c % convert again with --filemap -destination src-filemap is a Mercurial repository connecting to cvsrepo scanning source... sorting...
--- a/tests/test-convert-hg-sink Mon Nov 26 17:24:21 2007 -0800 +++ b/tests/test-convert-hg-sink Tue Nov 27 09:44:09 2007 -0800 @@ -1,7 +1,11 @@ #!/bin/sh -echo "[extensions]" >> $HGRCPATH -echo "hgext.convert=" >> $HGRCPATH +cat >> $HGRCPATH <<EOF +[extensions] +convert= +[convert] +hg.saverev=False +EOF hg init orig cd orig
--- a/tests/test-convert-hg-sink.out Mon Nov 26 17:24:21 2007 -0800 +++ b/tests/test-convert-hg-sink.out Tue Nov 27 09:44:09 2007 -0800 @@ -37,7 +37,6 @@ a 0 -1 unset baz copy: bar -> baz % add a new revision in the original repo -destination new is a Mercurial repository scanning source... sorting... converting...
--- a/tests/test-convert-hg-source Mon Nov 26 17:24:21 2007 -0800 +++ b/tests/test-convert-hg-source Tue Nov 27 09:44:09 2007 -0800 @@ -1,7 +1,11 @@ #!/bin/sh -echo "[extensions]" >> $HGRCPATH -echo "hgext.convert=" >> $HGRCPATH +cat >> $HGRCPATH <<EOF +[extensions] +convert= +[convert] +hg.saverev=False +EOF hg init orig cd orig
--- a/tests/test-convert-svn-source.out Mon Nov 26 17:24:21 2007 -0800 +++ b/tests/test-convert-svn-source.out Tue Nov 27 09:44:09 2007 -0800 @@ -25,7 +25,6 @@ Committed revision 3. % test incremental conversion assuming destination trunk-hg -destination trunk-hg is a Mercurial repository scanning source... sorting... converting... @@ -86,7 +85,6 @@ Transmitting file data . Committed revision 11. % test incremental conversion -destination A-hg is a Mercurial repository scanning source... sorting... converting...
--- a/tests/test-convert.out Mon Nov 26 17:24:21 2007 -0800 +++ b/tests/test-convert.out Tue Nov 27 09:44:09 2007 -0800 @@ -55,6 +55,24 @@ subdirectory into the root of the repository, use '.' as the path to rename to. + Back end options: + + --config convert.hg.clonebranches=False (boolean) + hg target: XXX not documented + --config convert.hg.saverev=True (boolean) + hg source: allow target to preserve source revision ID + --config convert.hg.tagsbranch=default (branch name) + hg target: XXX not documented + --config convert.hg.usebranchnames=True (boolean) + hg target: preserve branch names + + --config convert.svn.branches=branches (directory name) + svn source: specify the directory containing branches + --config convert.svn.tags=tags (directory name) + svn source: specify the directory containing tags + --config convert.svn.trunk=trunk (directory name) + svn source: specify the name of the trunk branch + options: -A --authors username mapping filename