Rev 1706: Cherrypick fix for modification of sets during iteration. in http://people.samba.org/bzr/jelmer/bzr-svn/trunk

Jelmer Vernooij jelmer at samba.org
Fri Sep 5 21:55:42 BST 2008


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

------------------------------------------------------------
revno: 1706
revision-id: jelmer at samba.org-20080905205536-05rbn2vlqzzzziil
parent: jelmer at samba.org-20080905202310-ku283g5ylf22ovyt
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Fri 2008-09-05 22:55:36 +0200
message:
  Cherrypick fix for modification of sets during iteration.
modified:
  NEWS                           news-20061231030336-h9fhq245ie0de8bs-1
  fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
=== modified file 'NEWS'
--- a/NEWS	2008-09-04 17:02:26 +0000
+++ b/NEWS	2008-09-05 20:55:36 +0000
@@ -4,6 +4,8 @@
 
    * Fix compatibility with Subversion 1.4 on Windows.
 
+   * Fix bug modifying set of right hand side revisions during fetch. (#264740)
+
 bzr-svn 0.4.12	2008-09-01
 
   BUG FIXES

=== modified file 'fetch.py'
--- a/fetch.py	2008-08-31 18:31:05 +0000
+++ b/fetch.py	2008-09-05 20:55:36 +0000
@@ -650,7 +650,7 @@
             checked = set()
         if revision_id in checked:
             return []
-        extra = set()
+        extra = list()
         def check_revid(revision_id):
             revs = []
             meta_map = {}
@@ -673,7 +673,7 @@
                 if revid in checked:
                     # This revision (and its ancestry) has already been checked
                     break
-                extra.update(parent_ids[1:])
+                extra.extend(parent_ids[1:])
                 if not self.target.has_revision(revid):
                     revs.append(revid)
                 elif not find_ghosts:
@@ -684,7 +684,8 @@
 
         needed = check_revid(revision_id)
 
-        for revid in extra:
+        while len(extra) > 0:
+            revid = extra.pop()
             if revid not in checked:
                 needed += check_revid(revid)
 
@@ -700,7 +701,7 @@
         :param revids: Revision ids to copy.
         :param pb: Optional progress bar
         """
-        raise NotImplementedError(self._copy_revisions_replay)
+        raise NotImplementedError(self._fetch_replay)
 
     def _fetch_switch(self, repos_root, revids, pb=None):
         """Copy a set of related revisions using svn.ra.switch.




More information about the bazaar-commits mailing list