Rev 1611: Simplify branch path finding code. in http://people.samba.org/bzr/jelmer/bzr-svn/trunk

Jelmer Vernooij jelmer at samba.org
Sat Aug 23 03:26:58 BST 2008


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

------------------------------------------------------------
revno: 1611
revision-id: jelmer at samba.org-20080823022655-0plqua58j6wrej5d
parent: jelmer at samba.org-20080823021854-pe8mra3o3uqqmyl8
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-08-23 04:26:55 +0200
message:
  Simplify branch path finding code.
modified:
  branch.py                      svnbranch.py-20051017135706-11c749eb0dab04a7
  layout.py                      layout.py-20080323165407-y9qw8nx4oykvoe1k-1
  repository.py                  repository.py-20060306123302-1f8c5069b3fe0265
=== modified file 'branch.py'
--- a/branch.py	2008-08-22 21:18:08 +0000
+++ b/branch.py	2008-08-23 02:26:55 +0000
@@ -361,10 +361,8 @@
         source.lock_read()
         try:
             (result.old_revno, result.old_revid) = self.last_revision_info()
-            old_revnum = self.get_revnum()
             self.update_revisions(source, stop_revision, overwrite)
-            result.tag_conflicts = source.tags.merge_to(self.tags, overwrite, 
-                                                        _from_revnum=old_revnum)
+            result.tag_conflicts = source.tags.merge_to(self.tags, overwrite)
             (result.new_revno, result.new_revid) = self.last_revision_info()
             return result
         finally:

=== modified file 'layout.py'
--- a/layout.py	2008-08-22 05:02:07 +0000
+++ b/layout.py	2008-08-23 02:26:55 +0000
@@ -74,6 +74,12 @@
             return True
         return False
 
+    def is_branch_or_tag(self, path, project=None):
+        return self.is_branch(path, project) or self.is_tag(path, project)
+
+    def is_branch_or_tag_parent(self, path, project=None):
+        return self.is_branch_parent(path, project) or self.is_tag_parent(path, project)
+
     def get_branches(self, revnum, project="", pb=None):
         """Retrieve a list of paths that refer to branches in a specific revision.
 

=== modified file 'repository.py'
--- a/repository.py	2008-08-23 02:18:54 +0000
+++ b/repository.py	2008-08-23 02:26:55 +0000
@@ -836,7 +836,8 @@
             pb.finished()
         return tags
 
-    def find_branchpaths(self, layout, from_revnum=0, to_revnum=None, 
+    def find_branchpaths(self, check_path, check_parent_path, 
+                         from_revnum=0, to_revnum=None, 
                          project=None):
         """Find all branch paths that were changed in the specified revision 
         range.
@@ -844,7 +845,6 @@
         :param revnum: Revision to search for branches.
         :return: iterator that returns tuples with (path, revision number, still exists). The revision number is the revision in which the branch last existed.
         """
-        assert layout is not None
         if to_revnum is None:
             to_revnum = self.get_latest_revnum()
 
@@ -857,16 +857,14 @@
             for (paths, i, revprops) in self._log.iter_changes([""], from_revnum, to_revnum):
                 pb.update("finding branches", i, to_revnum)
                 for p in sorted(paths.keys()):
-                    if (layout.is_branch(p, project) or 
-                        layout.is_tag(p, project)):
+                    if check_path(p, project):
                         if paths[p][0] in ('R', 'D') and p in created_branches:
                             ret.append((p, created_branches[p], False))
                             del created_branches[p]
 
                         if paths[p][0] in ('A', 'R', 'M'): 
                             created_branches[p] = i
-                    elif (layout.is_branch_parent(p, project) or 
-                          layout.is_tag_parent(p, project)):
+                    elif check_parent_path(p, project):
                         if paths[p][0] in ('R', 'D'):
                             k = created_branches.keys()
                             for c in k:
@@ -880,10 +878,9 @@
                                 try:
                                     for c in self.transport.get_dir(p, i)[0].keys():
                                         n = p+"/"+c
-                                        if layout.is_branch(n, project) or layout.is_tag(n, project):
+                                        if check_path(n, project):
                                             created_branches[n] = i
-                                        elif (layout.is_branch_parent(n, project) or 
-                                              layout.is_tag_parent(n, project)):
+                                        elif check_parent_path(n, project):
                                             parents.append(n)
                                 except SubversionException, (_, errors.ERR_FS_NOT_DIRECTORY):
                                     pass
@@ -915,7 +912,8 @@
             for (project, branch, nick) in chain(layout.get_branches(to_revnum, project), layout.get_tags(to_revnum, project)):
                 yield (branch, to_revnum, True)
         else:
-            for (branch, revno, exists) in self.find_branchpaths(layout, 
+            for (branch, revno, exists) in self.find_branchpaths(
+                layout.is_branch_or_tag, layout.is_branch_or_tag_parent,
                 from_revnum, to_revnum, project):
                 yield (branch, revno, exists)
 




More information about the bazaar-commits mailing list