changeset 13494:3178aca36b0f stable

convert.svn: branch name which equals trunk means `default' branch (issue2653) Converting from subversion specifying config.svn.trunk results in storing trunk under branch named as config.svn.trunk, where `default' brunch is expected. Submission contains patch and test.
author Pavel Boldin <boldin.pavel@gmail.com>
date Fri, 25 Feb 2011 21:01:30 +0300
parents 95b0d4c1c9e1
children 45b48be6b910
files hgext/convert/__init__.py hgext/convert/subversion.py tests/test-convert-svn-source.t tests/test-convert.t
diffstat 4 files changed, 24 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/convert/__init__.py	Fri Feb 25 23:26:24 2011 -0600
+++ b/hgext/convert/__init__.py	Fri Feb 25 21:01:30 2011 +0300
@@ -221,13 +221,13 @@
     The following options can be set with ``--config``:
 
     :convert.svn.branches: specify the directory containing branches.
-        The defaults is ``branches``.
+        The default is ``branches``.
 
     :convert.svn.tags: specify the directory containing tags. The
         default is ``tags``.
 
-    :convert.svn.trunk: specify the name of the trunk branch The
-        defauls is ``trunk``.
+    :convert.svn.trunk: specify the name of the trunk branch. The
+        default is ``trunk``.
 
     Source history can be retrieved starting at a specific revision,
     instead of being integrally converted. Only single branch
--- a/hgext/convert/subversion.py	Fri Feb 25 23:26:24 2011 -0600
+++ b/hgext/convert/subversion.py	Fri Feb 25 21:01:30 2011 +0300
@@ -311,6 +311,9 @@
                 return None
             path = (cfgpath or name).strip('/')
             if not self.exists(path, rev):
+                if self.module.endswith(path) and name == 'trunk':
+                    # we are converting from inside this directory
+                    return None
                 if cfgpath:
                     raise util.Abort(_('expected %s to be at %r, but not found')
                                  % (name, path))
@@ -758,7 +761,8 @@
             author = author and self.recode(author) or ''
             try:
                 branch = self.module.split("/")[-1]
-                if branch == 'trunk':
+                trunkname = self.ui.config('convert', 'svn.trunk', 'trunk')
+                if branch == trunkname.strip('/'):
                     branch = ''
             except IndexError:
                 branch = None
--- a/tests/test-convert-svn-source.t	Fri Feb 25 23:26:24 2011 -0600
+++ b/tests/test-convert-svn-source.t	Fri Feb 25 21:01:30 2011 +0300
@@ -9,6 +9,8 @@
   > [extensions]
   > convert = 
   > graphlog =
+  > [convert]
+  > svn.trunk = mytrunk
   > EOF
 
   $ svnadmin create svn-repo
@@ -27,20 +29,20 @@
 
   $ mkdir projB
   $ cd projB
-  $ mkdir trunk
+  $ mkdir mytrunk
   $ mkdir tags
   $ cd ..
 
   $ svnurl="file://$svnpath/svn-repo/proj%20B"
   $ svn import -m "init projB" projB "$svnurl" | fixpath
-  Adding         projB/trunk
+  Adding         projB/mytrunk
   Adding         projB/tags
   
   Committed revision 1.
 
 Update svn repository
 
-  $ svn co "$svnurl"/trunk B | fixpath
+  $ svn co "$svnurl"/mytrunk B | fixpath
   Checked out revision 1.
   $ cd B
   $ echo hello > 'letter .txt'
@@ -57,7 +59,7 @@
   Transmitting file data .
   Committed revision 3.
 
-  $ svn copy -m "tag v0.1" "$svnurl"/trunk "$svnurl"/tags/v0.1
+  $ svn copy -m "tag v0.1" "$svnurl"/mytrunk "$svnurl"/tags/v0.1
   
   Committed revision 4.
 
@@ -94,7 +96,7 @@
   Transmitting file data ..
   Committed revision 6.
 
-  $ svn copy -m "tag v0.2" "$svnurl"/trunk "$svnurl"/tags/v0.2
+  $ svn copy -m "tag v0.2" "$svnurl"/mytrunk "$svnurl"/tags/v0.2
   
   Committed revision 7.
 
@@ -143,7 +145,7 @@
 
 Test filemap
   $ echo 'include letter2.txt' > filemap
-  $ hg convert --filemap filemap "$svnurl"/trunk fmap
+  $ hg convert --filemap filemap "$svnurl"/mytrunk fmap
   initializing destination fmap repository
   scanning source...
   sorting...
@@ -154,6 +156,8 @@
   2 nice day
   1 second letter
   0 work in progress
+  $ hg -R fmap branch -q
+  default
   $ hg glog -R fmap --template '{rev} {desc|firstline} files: {files}\n'
   o  1 work in progress files: letter2.txt
   |
@@ -161,12 +165,14 @@
   
 
 Test stop revision
-  $ hg convert --rev 1 "$svnurl"/trunk stoprev
+  $ hg convert --rev 1 "$svnurl"/mytrunk stoprev
   initializing destination stoprev repository
   scanning source...
   sorting...
   converting...
   0 init projB
+  $ hg -R stoprev branch -q
+  default
 
 Check convert_revision extra-records.
 This is also the only place testing more than one extra field in a revision.
@@ -174,5 +180,5 @@
   $ cd stoprev
   $ hg tip --debug | grep extra
   extra:       branch=default
-  extra:       convert_revision=svn:........-....-....-....-............/proj B/trunk@1 (re)
+  extra:       convert_revision=svn:........-....-....-....-............/proj B/mytrunk@1 (re)
   $ cd ..
--- a/tests/test-convert.t	Fri Feb 25 23:26:24 2011 -0600
+++ b/tests/test-convert.t	Fri Feb 25 21:01:30 2011 +0300
@@ -204,12 +204,12 @@
       The following options can be set with "--config":
   
       convert.svn.branches
-                  specify the directory containing branches. The defaults is
+                  specify the directory containing branches. The default is
                   "branches".
       convert.svn.tags
                   specify the directory containing tags. The default is "tags".
       convert.svn.trunk
-                  specify the name of the trunk branch The defauls is "trunk".
+                  specify the name of the trunk branch. The default is "trunk".
   
       Source history can be retrieved starting at a specific revision, instead
       of being integrally converted. Only single branch conversions are