diff hgsubversion/wrappers.py @ 499:1fd3cfa47c5e

Support for single-directory clones.
author Augie Fackler <durin42@gmail.com>
date Fri, 16 Oct 2009 23:33:41 -0400
parents 9548b406a2d8
children 4ce09bf4d382
line wrap: on
line diff
--- a/hgsubversion/wrappers.py
+++ b/hgsubversion/wrappers.py
@@ -228,6 +228,16 @@ def pull(repo, source, heads=[], force=F
     svn = svnrepo.svnremoterepo(repo.ui, svn_url).svn
     meta = repo.svnmeta(svn.uuid, svn.subdir)
 
+    layout = repo.ui.config('hgsubversion', 'layout', 'auto')
+    if layout == 'auto':
+        rootlist = svn.list_dir('', revision=(stopat_rev or None))
+        if sum(map(lambda x: x in rootlist, ('branches', 'tags', 'trunk'))):
+            layout = 'standard'
+        else:
+            layout = 'single'
+        repo.ui.setconfig('hgsubversion', 'layout', layout)
+        repo.ui.note('using %s layout\n' % layout)
+
     start = max(meta.revmap.seen, skipto_rev)
     initializing_repo = meta.revmap.seen <= 0
     ui = repo.ui
@@ -351,9 +361,10 @@ optionmap = {
     'defaulthost': ('hgsubversion', 'defaulthost'),
     'defaultauthors': ('hgsubversion', 'defaultauthors'),
     'usebranchnames': ('hgsubversion', 'usebranchnames'),
+    'layout': ('hgsubversion', 'layout'),
 }
 
-dontretain = { 'hgsubversion': set(['authormap', 'filemap']) }
+dontretain = { 'hgsubversion': set(['authormap', 'filemap', 'layout', ]) }
 
 def clone(orig, ui, source, dest=None, **opts):
     """