Avoid refetching revision graph all of the time.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 24 Aug 2008 20:41:08 +0000 (22:41 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 24 Aug 2008 20:41:08 +0000 (22:41 +0200)
branch.py
commit.py
revids.py

index d5f791fbda091159df667d7a53aeb492ab08184f..a6cb158af2499e9ff663b694814e7d83401245f4 100644 (file)
--- a/branch.py
+++ b/branch.py
@@ -409,10 +409,11 @@ class SvnBranch(Branch):
             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 @@ class SvnBranch(Branch):
             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:
index 80cba2340dff45d1b18488be97c5aecfe33d8565..508d72aed70b5df5c8ddd02ef59a14de6e4469f7 100644 (file)
--- a/commit.py
+++ b/commit.py
@@ -86,8 +86,7 @@ def update_svk_features(oldvalue, merges):
     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 @@ class SvnCommitBuilder(RootCommitBuilder):
             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
 
index bf97f0a1d71ca2bf667b5fe1129cf39cb93e5b66..065eec8a75144daa13ea3458a850c87413ae9cfa 100644 (file)
--- a/revids.py
+++ b/revids.py
@@ -191,8 +191,9 @@ class CachingRevidMap(object):
                     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