convert: use branchmap to change default branch in destination (issue3469) stable
authorlstewart
Tue, 28 Jan 2014 14:00:23 +1100
branchstable
changeset 20331 1d155582a8ea
parent 20330 69a0d22b9677
child 20332 a959f7167077
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.
hgext/convert/convcmd.py
tests/test-convert-svn-branches.t
--- 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 ..
+