--- a/hgext/convert/__init__.py Wed May 13 22:42:40 2009 +0200
+++ b/hgext/convert/__init__.py Wed May 13 15:03:31 2009 -0400
@@ -86,6 +86,17 @@
(in either the source or destination revision control system) that
should be used as the new parents for that node.
+ The branchmap is a file that allows you to rename a branch when it is
+ being brought in from whatever external repository. When used in
+ conjunction with a splicemap, it allows for a powerful combination
+ to help fix even the most badly mismanaged repositories and turn them
+ into nicely structured Mercurial repositories. The branchmap contains
+ lines of the form "original_branch_name new_branch_name".
+ "original_branch_name" is the name of the branch in the source
+ repository, and "new_branch_name" is the name of the branch is the
+ destination repository. This can be used to (for instance) move code
+ in one repository from "default" to a named branch.
+
Mercurial Source
-----------------
@@ -235,6 +246,7 @@
('r', 'rev', '', _('import up to target revision REV')),
('s', 'source-type', '', _('source repository type')),
('', 'splicemap', '', _('splice synthesized history into place')),
+ ('', 'branchmap', '', _('change branch names while converting')),
('', 'datesort', None, _('try to sort changesets by date'))],
_('hg convert [OPTION]... SOURCE [DEST [REVMAP]]')),
"debugsvnlog":
--- a/hgext/convert/convcmd.py Wed May 13 22:42:40 2009 +0200
+++ b/hgext/convert/convcmd.py Wed May 13 15:03:31 2009 -0400
@@ -91,6 +91,7 @@
self.authorfile = self.dest.authorfile()
self.splicemap = mapfile(ui, opts.get('splicemap'))
+ self.branchmap = mapfile(ui, opts.get('branchmap'))
def walktree(self, heads):
'''Return a mapping that identifies the uncommitted parents of every
@@ -225,6 +226,7 @@
def cachecommit(self, rev):
commit = self.source.getcommit(rev)
commit.author = self.authors.get(commit.author, commit.author)
+ commit.branch = self.branchmap.get(commit.branch, commit.branch)
self.commitcache[rev] = commit
return commit
--- a/tests/test-convert-svn-branches Wed May 13 22:42:40 2009 +0200
+++ b/tests/test-convert-svn-branches Wed May 13 15:03:31 2009 -0400
@@ -24,10 +24,13 @@
svnurl=file://$svnpath/svn-repo
echo % convert trunk and branches
-hg convert --datesort -r 10 $svnurl A-hg
+cat >branchmap <<EOF
+old3 newbranch
+EOF
+hg convert --branchmap=branchmap --datesort -r 10 $svnurl A-hg
echo % convert again
-hg convert --datesort $svnurl A-hg
+hg convert --branchmap=branchmap --datesort $svnurl A-hg
cd A-hg
hg glog --template 'branch=#branches# #rev# #desc|firstline# files: #files#\n'
--- a/tests/test-convert-svn-branches.out Wed May 13 22:42:40 2009 +0200
+++ b/tests/test-convert-svn-branches.out Wed May 13 15:03:31 2009 -0400
@@ -19,7 +19,7 @@
sorting...
converting...
0 branch trunk@1 into old3
-o branch=old3 11 branch trunk@1 into old3 files:
+o branch=newbranch 11 branch trunk@1 into old3 files:
|
| o branch= 10 last change to a files: a
| |
@@ -43,7 +43,7 @@
|/
o branch= 0 init projA files:
-old3 11:
+newbranch 11:
default 10:
old 9:
old2 8:
--- a/tests/test-convert.out Wed May 13 22:42:40 2009 +0200
+++ b/tests/test-convert.out Wed May 13 15:03:31 2009 -0400
@@ -70,6 +70,17 @@
(in either the source or destination revision control system) that
should be used as the new parents for that node.
+ The branchmap is a file that allows you to rename a branch when it is
+ being brought in from whatever external repository. When used in
+ conjunction with a splicemap, it allows for a powerful combination
+ to help fix even the most badly mismanaged repositories and turn them
+ into nicely structured Mercurial repositories. The branchmap contains
+ lines of the form "original_branch_name new_branch_name".
+ "original_branch_name" is the name of the branch in the source
+ repository, and "new_branch_name" is the name of the branch is the
+ destination repository. This can be used to (for instance) move code
+ in one repository from "default" to a named branch.
+
Mercurial Source
-----------------
@@ -197,6 +208,7 @@
-r --rev import up to target revision REV
-s --source-type source repository type
--splicemap splice synthesized history into place
+ --branchmap change branch names while converting
--datesort try to sort changesets by date
use "hg -v help convert" to show global options