Rev 2154: Use prefix when svn-importing part of a repository. in http://people.samba.org/bzr/jelmer/bzr-svn/0.5

Jelmer Vernooij jelmer at samba.org
Thu Dec 4 16:07:01 GMT 2008


At http://people.samba.org/bzr/jelmer/bzr-svn/0.5

------------------------------------------------------------
revno: 2154
revision-id: jelmer at samba.org-20081204160659-o61onpqbeqbmcr89
parent: jelmer at samba.org-20081204154703-2y3q3lv34l8pz42u
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.5
timestamp: Thu 2008-12-04 17:06:59 +0100
message:
  Use prefix when svn-importing part of a repository.
modified:
  __init__.py                    __init__.py-20051008155114-eae558e6cf149e1d
  convert.py                     svn2bzr.py-20051018015439-cb4563bff29e632d
  revmeta.py                     revmeta.py-20080901215045-n8a6arqybs9ez5hl-1
=== modified file '__init__.py'
--- a/__init__.py	2008-12-04 15:07:45 +0000
+++ b/__init__.py	2008-12-04 16:06:59 +0000
@@ -277,7 +277,7 @@
                                not standalone, trees, all, 
                                filter_branch=filter_branch,
                                keep=keep, incremental=incremental,
-                               to_revnum=to_revnum)
+                               to_revnum=to_revnum, prefix=prefix)
 
             if tmp_repos is not None:
                 osutils.rmtree(tmp_repos)

=== modified file 'convert.py'
--- a/convert.py	2008-12-03 01:16:27 +0000
+++ b/convert.py	2008-12-04 16:06:59 +0000
@@ -137,7 +137,7 @@
 def convert_repository(source_repos, output_url, layout=None,
                        create_shared_repo=True, working_trees=False, all=False,
                        format=None, filter_branch=None, keep=False, 
-                       incremental=False, to_revnum=None):
+                       incremental=False, to_revnum=None, prefix=None):
     """Convert a Subversion repository and its' branches to a 
     Bazaar repository.
 
@@ -212,7 +212,7 @@
         mapping = source_repos.get_mapping()
         existing_branches = {}
         deleted = set()
-        it = source_repos._revmeta_provider.iter_all_changes(layout, mapping.is_branch_or_tag, to_revnum, from_revnum, project=project)
+        it = source_repos._revmeta_provider.iter_all_changes(layout, mapping.is_branch_or_tag, to_revnum, from_revnum, project=project, prefix=prefix)
         if create_shared_repo:
             revfinder = FetchRevisionFinder(source_repos, target_repos, target_repos_is_empty)
             (it, it_rev) = tee(it)

=== modified file 'revmeta.py'
--- a/revmeta.py	2008-12-03 04:28:32 +0000
+++ b/revmeta.py	2008-12-04 16:06:59 +0000
@@ -840,6 +840,14 @@
             yield rev
 
 
+def restrict_prefixes(prefixes, prefix):
+    for p in prefixes:
+        if prefix == "" or p == prefix or p.startswith(prefix+"/"):
+            yield p
+        elif prefix.startswith(p+"/") or p == "":
+            yield prefix
+
+
 class RevisionMetadataProvider(object):
     """A RevisionMetadata provider."""
 
@@ -977,7 +985,7 @@
         return filter_revisions(self.iter_all_changes(layout, check_unusual_path, from_revnum, to_revnum, project, pb))
 
     def iter_all_changes(self, layout, check_unusual_path, from_revnum, 
-                         to_revnum=0, project=None, pb=None):
+                         to_revnum=0, project=None, prefix=None, pb=None):
         """Iterate over all RevisionMetadata objects and branch removals 
         in a repository.
 
@@ -993,6 +1001,9 @@
             prefixes = layout.get_project_prefixes(project)
         else:
             prefixes = [""]
+
+        if prefix is not None:
+            prefixes = list(restrict_prefixes(prefixes, prefix))
         
         browser = RevisionMetadataBrowser(prefixes, from_revnum, to_revnum, 
                                           layout, self, project, pb=pb)




More information about the bazaar-commits mailing list