convert: use branchmap to change default branch in destination (
issue3469)
The fix for
issue2653 broke the ability to map the default branch of a source
repository to a non-default named branch in the destination repository. Leave
the default behaviour as is, but allow the branch name "None" to be used to map
to a non-default named branch in the destination repository.
--- a/hgext/convert/convcmd.py Mon Jan 27 10:57:20 2014 +0100
+++ b/hgext/convert/convcmd.py Tue Jan 28 14:00:23 2014 +1100
@@ -371,7 +371,12 @@
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)
+ # If commit.branch is None, this commit is coming from the source
+ # repository's default branch and destined for the default branch in the
+ # destination repository. For such commits, passing a literal "None"
+ # string to branchmap.get() below allows the user to map "None" to an
+ # alternate default branch in the destination repository.
+ commit.branch = self.branchmap.get(str(commit.branch), commit.branch)
self.commitcache[rev] = commit
return commit
--- a/tests/test-convert-svn-branches.t Mon Jan 27 10:57:20 2014 +0100
+++ b/tests/test-convert-svn-branches.t Tue Jan 28 14:00:23 2014 +1100
@@ -96,3 +96,35 @@
$ HG=foobar hg convert svn-repo B-hg 2>&1 | grep abort
abort: Mercurial failed to run itself, check hg executable is in PATH
+
+Convert 'trunk' to branch other than 'default'
+
+ $ cat > branchmap <<EOF
+ > None hgtrunk
+ >
+ >
+ > EOF
+ $ hg convert --branchmap=branchmap --datesort -r 10 svn-repo C-hg
+ initializing destination C-hg repository
+ scanning source...
+ sorting...
+ converting...
+ 10 init projA
+ 9 hello
+ 8 branch trunk, remove c and dir
+ 7 change a
+ 6 change b
+ 5 move and update c
+ 4 move and update c
+ 3 change b again
+ 2 move to old2
+ 1 move back to old
+ 0 last change to a
+
+ $ cd C-hg
+ $ hg branches
+ hgtrunk 10:745f063703b4
+ old 9:aa50d7b8d922
+ old2 8:c85a22267b6e (inactive)
+ $ cd ..
+