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