Rev 1644: Avoid refetching revision graph all of the time. in http://people.samba.org/bzr/jelmer/bzr-svn/trunk

Jelmer Vernooij jelmer at samba.org
Sun Aug 24 21:41:13 BST 2008


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

------------------------------------------------------------
revno: 1644
revision-id: jelmer at samba.org-20080824204108-8eb2r8zf35g4067s
parent: jelmer at samba.org-20080824194919-zvocpoo6wh0v2bb7
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sun 2008-08-24 22:41:08 +0200
message:
  Avoid refetching revision graph all of the time.
modified:
  branch.py                      svnbranch.py-20051017135706-11c749eb0dab04a7
  commit.py                      commit.py-20060607190346-qvq128wgfubhhgm2-1
  revids.py                      revids.py-20070416220458-36vfa0730cchevp1-1
=== modified file 'branch.py'
--- a/branch.py	2008-08-24 15:53:05 +0000
+++ b/branch.py	2008-08-24 20:41:08 +0000
@@ -409,10 +409,11 @@
             self.last_revision() == other.last_revision()):
             return
         if graph is None:
-            graph = self.repository.get_graph()
-        if not other.repository.get_graph().is_ancestor(self.last_revision(), 
+            my_graph = self.repository.get_graph()
+        other_graph = other.repository.get_graph()
+        if not other_graph.is_ancestor(self.last_revision(), 
                                                         stop_revision):
-            if graph.is_ancestor(stop_revision, self.last_revision()):
+            if my_graph.is_ancestor(stop_revision, self.last_revision()):
                 return
             if not overwrite:
                 raise DivergedBranches(self, other)
@@ -424,19 +425,18 @@
             raise DivergedBranches(self, other)
         if _push_merged is None:
             _push_merged = self.layout.push_merged_revisions(self.project)
-        self._push_missing_revisions(other, todo, _push_merged)
+        self._push_missing_revisions(other, other_graph, todo, _push_merged)
 
-    def _push_missing_revisions(self, other, todo, push_merged=False):
-        if push_merged:
-            graph = other.repository.get_graph()
+    def _push_missing_revisions(self, other, other_graph, todo, 
+                                push_merged=False):
         pb = ui.ui_factory.nested_progress_bar()
         try:
             for revid in todo:
                 pb.update("pushing revisions", todo.index(revid), 
                           len(todo))
                 if push_merged:
-                    parent_revids = graph.get_parent_map([revid])[revid]
-                    push_ancestors(self.repository, other.repository, self.layout, self.project, parent_revids, graph)
+                    parent_revids = other_graph.get_parent_map([revid])[revid]
+                    push_ancestors(self.repository, other.repository, self.layout, self.project, parent_revids, other_graph)
                 push(self, other.repository, revid)
                 self._clear_cached_state()
         finally:

=== modified file 'commit.py'
--- a/commit.py	2008-08-24 19:49:19 +0000
+++ b/commit.py	2008-08-24 20:41:08 +0000
@@ -86,8 +86,7 @@
     return None
 
 
-def update_mergeinfo(repository, oldvalue, baserevid, merges):
-    graph = repository.get_graph()
+def update_mergeinfo(repository, graph, oldvalue, baserevid, merges):
     mergeinfo = properties.parse_mergeinfo_property(oldvalue)
     for merge in merges:
         for (revid, parents) in graph.iter_ancestry([merge]):
@@ -194,7 +193,7 @@
             if new_svk_merges is not None:
                 self._svnprops[SVN_PROP_SVK_MERGE] = new_svk_merges
 
-            new_mergeinfo = update_mergeinfo(self.repository, base_branch_props.get(properties.PROP_MERGEINFO, ""), self.base_revid, merges)
+            new_mergeinfo = update_mergeinfo(self.repository, graph, base_branch_props.get(properties.PROP_MERGEINFO, ""), self.base_revid, merges)
             if new_mergeinfo is not None:
                 self._svnprops[properties.PROP_MERGEINFO] = new_mergeinfo
 

=== modified file 'revids.py'
--- a/revids.py	2008-08-23 14:55:24 +0000
+++ b/revids.py	2008-08-24 20:41:08 +0000
@@ -191,8 +191,9 @@
                     self.cache.insert_revid(entry_revid, branch, last_checked, revno, str(mapping.scheme))
                     self.revid_seen.add(entry_revid)
                 
-            # We've added all the revision ids for this layout in the repository,
-            # so no need to check again unless new revisions got added
+            # We've added all the revision ids for this layout in the
+            # repository, so no need to check again unless new revisions got 
+            # added
             self.cache.set_last_revnum_checked(repr((layout, project)), last_revnum)
             if not found:
                 raise e




More information about the bazaar-commits mailing list