Rev 1734: Fix finding tags. in file:///data/jelmer/bzr-svn/trunk/

Jelmer Vernooij jelmer at samba.org
Sun Aug 31 15:41:55 BST 2008


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

------------------------------------------------------------
revno: 1734
revision-id: jelmer at samba.org-20080831144153-n76bg8i0ukdfxe8x
parent: jelmer at samba.org-20080831141447-nwp1xm5oll82vbno
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Sun 2008-08-31 16:41:53 +0200
message:
  Fix finding tags.
modified:
  repository.py                  repository.py-20060306123302-1f8c5069b3fe0265
=== modified file 'repository.py'
--- a/repository.py	2008-08-31 13:35:18 +0000
+++ b/repository.py	2008-08-31 14:41:53 +0000
@@ -904,6 +904,7 @@
                         else:
                             tags[name] = revid
                     continue
+                tag_changes = {}
                 for p in sorted(paths):
                     (action, cf, cr) = paths[p]
                     if layout.is_tag_parent(p, project) and cf is not None:
@@ -914,7 +915,7 @@
                                 for c in self.transport.get_dir(p, revnum)[0].keys():
                                     n = p+"/"+c
                                     if layout.is_tag(n, project):
-                                        tags[n] = self.generate_revision_id(revnum, n, mapping, revprops=revprops)
+                                        tag_changes[n] = self.generate_revision_id(revnum, n, mapping, revprops=revprops)
                                     elif layout.is_tag_parent(n, project):
                                         parents.append(n)
                             except SubversionException, (_, errors.ERR_FS_NOT_DIRECTORY):
@@ -929,7 +930,7 @@
                         if pt != "tag" or (project is not None and proj != project):
                             continue
                         if action == "D" and rp == "":
-                            tags[p] = None
+                            tag_changes[p] = None
                         elif rp == "" and cf is not None:
                             # This tag was (recreated) here, so unless anything else under this 
                             # tag changed
@@ -940,13 +941,19 @@
                             if not changes.changes_path(newpaths, p, False) and layout.is_branch(cf):
                                 tp = cf
                                 tr = int(self.transport.get_dir(cf, cr)[2][properties.PROP_ENTRY_COMMITTED_REV])
-                            tags[p] = self.generate_revision_id(tr, tp, mapping)
+                            tag_changes[p] = self.generate_revision_id(tr, tp, mapping)
                         else:
-                            tags[bp] = self.generate_revision_id(revnum, bp, mapping, revprops=revprops)
+                            tag_changes[bp] = self.generate_revision_id(revnum, bp, mapping, revprops=revprops)
+                for path, revid in tag_changes.items():
+                    name = layout.get_tag_name(path, project)
+                    if revid is None:
+                        del tags[name]
+                    else:
+                        tags[name] = revid
         finally:
             pb.finished()
 
-        return dict([(layout.get_tag_name(p, project), revid) for (p, revid) in tags.items() if revid is not None])
+        return tags
 
     @needs_read_lock
     def find_tags(self, project, layout=None, mapping=None, revnum=None):




More information about the bazaar-commits mailing list