Rev 1840: Skip looking for tags if the layout doesn't support them anyway; pass project around in a couple more places. in file:///data/jelmer/bzr-svn/trunk/

Jelmer Vernooij jelmer at samba.org
Sat Sep 6 23:49:11 BST 2008


At file:///data/jelmer/bzr-svn/trunk/

------------------------------------------------------------
revno: 1840
revision-id: jelmer at samba.org-20080906224908-2hhbjp7k7m7cq58o
parent: jelmer at samba.org-20080906221725-ysfgks38y8cd5huk
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Sun 2008-09-07 00:49:08 +0200
message:
  Skip looking for tags if the layout doesn't support them anyway; pass project around in a couple more places.
modified:
  branch.py                      svnbranch.py-20051017135706-11c749eb0dab04a7
  fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
  layout.py                      layout.py-20080323165407-y9qw8nx4oykvoe1k-1
  mapping3/__init__.py           __init__.py-20080502174630-9324zh25kka98vlw-1
  repository.py                  repository.py-20060306123302-1f8c5069b3fe0265
  tags.py                        tags.py-20080822211316-scblu3akdvu0b64c-1
=== modified file 'branch.py'
--- a/branch.py	2008-09-04 11:47:09 +0000
+++ b/branch.py	2008-09-06 22:49:08 +0000
@@ -164,7 +164,8 @@
         :raises NoSuchRevision: If the revision id was not found.
         """
         (bp, revnum, mapping) = self.repository.lookup_revision_id(revid, 
-            ancestry=(self.get_branch_path(), self.get_revnum()))
+            ancestry=(self.get_branch_path(), self.get_revnum()), 
+            project=self.project)
         assert bp.strip("/") == self.get_branch_path(revnum).strip("/"), \
                 "Got %r, expected %r" % (bp, self.get_branch_path(revnum))
         return revnum

=== modified file 'fetch.py'
--- a/fetch.py	2008-09-06 19:33:59 +0000
+++ b/fetch.py	2008-09-06 22:49:08 +0000
@@ -376,14 +376,13 @@
     """Implementation of the Subversion commit editor interface that builds a 
     Bazaar revision.
     """
-    def __init__(self, source, target, revid, prev_inventory, revmeta):
+    def __init__(self, source, target, revid, prev_inventory, revmeta, mapping):
         self.target = target
         self.source = source
         self.texts = target.texts
         self.revid = revid
         self._text_revids = None
         self._premature_deletes = set()
-        mapping = self.source.lookup_revision_id(revid)[2]
         self.old_inventory = prev_inventory
         self.inventory = prev_inventory.copy()
         assert prev_inventory.root is None or self.inventory.root.revision == prev_inventory.root.revision
@@ -609,7 +608,7 @@
             try:
                 nestedpb = ui.ui_factory.nested_progress_bar()
                 for rev in self._find_until(branch.last_revision(), find_ghosts=find_ghosts, 
-                                            pb=nestedpb, checked=checked):
+                                            pb=nestedpb, checked=checked, project=branch.project):
                     if rev[0] not in set_needed:
                         ret_needed.append(rev)
                         set_needed.add(rev[0])
@@ -618,7 +617,7 @@
         return ret_needed
 
     def _find_until(self, revision_id, find_ghosts=False, pb=None,
-                    checked=None):
+                    checked=None, project=None):
         """Find all missing revisions until revision_id
 
         :param revision_id: Stop revision
@@ -631,11 +630,11 @@
         if revision_id in checked:
             return []
         extra = list()
-        def check_revid(revision_id):
+        def check_revid(revision_id, project=None):
             revmetas = []
             try:
                 (branch_path, revnum, mapping) = \
-                    self.source.lookup_revision_id(revision_id)
+                    self.source.lookup_revision_id(revision_id, project=project)
             except NoSuchRevision:
                 return [] # Ghost
             for revmeta in self.source._revmeta_provider.iter_reverse_branch_changes(
@@ -648,7 +647,7 @@
                 if revid in checked:
                     # This revision (and its ancestry) has already been checked
                     break
-                extra.extend(parent_ids[1:])
+                extra.extend([(p, project) for p in parent_ids[1:]])
                 if not self.target.has_revision(revid):
                     revmetas.append(revmeta)
                 elif not find_ghosts:
@@ -656,12 +655,12 @@
                 checked.add(revid)
             return [(revmeta, mapping) for revmeta in reversed(revmetas)]
 
-        needed = check_revid(revision_id)
+        needed = check_revid(revision_id, project)
 
         while len(extra) > 0:
-            revid = extra.pop()
+            revid, project = extra.pop()
             if revid not in checked:
-                needed += check_revid(revid)
+                needed += check_revid(revid, project)
 
         return needed
 
@@ -687,7 +686,7 @@
         return RevisionBuildEditor(self.source, self.target, 
             revmeta.get_revision_id(mapping), 
             self._get_inventory(revmeta.get_lhs_parent(mapping)), 
-            revmeta)
+            revmeta, mapping)
 
     def _fetch_revision_switch(self, editor, revmeta, parent_revmeta):
         if parent_revmeta is None:

=== modified file 'layout.py'
--- a/layout.py	2008-09-05 17:12:11 +0000
+++ b/layout.py	2008-09-06 22:49:08 +0000
@@ -26,6 +26,9 @@
     def __init__(self):
         pass
 
+    def supports_tags(self):
+        return True
+
     def get_tag_path(self, name, project=""):
         """Return the path at which the tag with specified name should be found.
 
@@ -220,6 +223,9 @@
     def __init__(self):
         pass
 
+    def supports_tags(self):
+        return False
+
     def get_tag_path(self, name, project=""):
         """Return the path at which the tag with specified name should be found.
 
@@ -285,6 +291,9 @@
     def __init__(self, branches=[], tags=[]):
         self.branches = branches
         self.tags = tags
+
+    def supports_tags(self):
+        return (self.tags != [])
     
     def get_tag_path(self, name, project=""):
         """Return the path at which the tag with specified name should be found.
@@ -359,6 +368,9 @@
     def __init__(self, branches=[], tags=[]):
         self.branches = branches
         self.tags = tags
+
+    def supports_tags(self):
+        return (self.tags != [])
     
     def get_tag_path(self, name, project=""):
         """Return the path at which the tag with specified name should be found.

=== modified file 'mapping3/__init__.py'
--- a/mapping3/__init__.py	2008-09-05 12:38:20 +0000
+++ b/mapping3/__init__.py	2008-09-06 22:49:08 +0000
@@ -48,6 +48,9 @@
     def get_tag_name(self, path, project=None):
         return path.split("/")[-1]
 
+    def supports_tags(self):
+        return (self.scheme.tag_list != [])
+
     def get_branches(self, repository, revnum, project=None, pb=None):
         return get_root_paths(repository, self.scheme.branch_list, revnum, self.scheme.is_branch, project, pb)
 

=== modified file 'repository.py'
--- a/repository.py	2008-09-06 22:17:25 +0000
+++ b/repository.py	2008-09-06 22:49:08 +0000
@@ -374,13 +374,13 @@
         ancestry.reverse()
         return ancestry
 
-    def has_revision(self, revision_id):
+    def has_revision(self, revision_id, project=None):
         """See Repository.has_revision()."""
         if revision_id is None:
             return True
 
         try:
-            (path, revnum, _) = self.lookup_revision_id(revision_id)
+            (path, revnum, _) = self.lookup_revision_id(revision_id, project=project)
         except NoSuchRevision:
             return False
 
@@ -419,7 +419,6 @@
                 continue
 
             revmeta = self._revmeta_provider.get_revision(branch, revnum)
-
             parent_map[revision_id] = revmeta.get_parent_ids(mapping)
         return parent_map
 
@@ -691,6 +690,9 @@
         if mapping is None:
             mapping = self.get_mapping()
 
+        if not layout.supports_tags():
+            return {}
+
         if not (layout, mapping) in self._cached_tags:
             self._cached_tags[layout,mapping] = self.find_tags_between(project=project,
                     layout=layout, mapping=mapping, from_revnum=0, to_revnum=revnum)

=== modified file 'tags.py'
--- a/tags.py	2008-09-04 17:33:09 +0000
+++ b/tags.py	2008-09-06 22:49:08 +0000
@@ -48,7 +48,7 @@
         assert isinstance(path, str)
         parent = urlutils.dirname(path)
         try:
-            (from_bp, from_revnum, mapping) = self.repository.lookup_revision_id(tag_target)
+            (from_bp, from_revnum, mapping) = self.repository.lookup_revision_id(tag_target, project=self.branch.project)
         except NoSuchRevision:
             mutter("not setting tag %s; unknown revision %s", tag_name, tag_target)
             return




More information about the bazaar-commits mailing list