~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/history2weaves.py

  • Committer: Martin Pool
  • Date: 2005-09-19 07:43:53 UTC
  • Revision ID: mbp@sourcefrog.net-20050919074353-534837a6b802ce32
- compute order to import revisions

Show diffs side-by-side

added added

removed removed

Lines of Context:
106
106
                and rev_id not in self.absent_revisions):
107
107
                self._load_one_rev(rev_id)
108
108
        self.pb.clear()
109
 
 
110
 
        self._make_order()
 
109
        to_import = self._make_order()
 
110
        for rev_id in to_import:
 
111
            self._import_one_rev(rev_id)
111
112
 
112
113
        # self._convert_one_rev(self.to_read.pop())
113
114
        
156
157
            self.revisions[rev_id] = rev
157
158
 
158
159
 
 
160
    def _import_one_rev(self, rev_id):
 
161
        """Convert rev_id and all referenced file texts to new format."""
 
162
        
 
163
 
 
164
 
159
165
    def _make_order(self):
 
166
        """Return a suitable order for importing revisions.
 
167
 
 
168
        The order must be such that an revision is imported after all
 
169
        its (present) parents.
 
170
        """
160
171
        todo = set(self.revisions.keys())
161
172
        done = self.absent_revisions.copy()
 
173
        o = []
162
174
        while todo:
163
175
            # scan through looking for a revision whose parents
164
176
            # are all done
165
 
            for rev_id in list(todo):
 
177
            for rev_id in sorted(list(todo)):
166
178
                rev = self.revisions[rev_id]
167
179
                parent_ids = set([x.revision_id for x in rev.parents])
168
180
                if parent_ids.issubset(done):
169
181
                    # can take this one now
170
 
                    print rev_id
 
182
                    o.append(rev_id)
171
183
                    todo.remove(rev_id)
172
184
                    done.add(rev_id)
173
185