~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to gen_changeset.py

  • Committer: John Arbash Meinel
  • Date: 2005-10-15 07:16:56 UTC
  • mto: (1185.82.1 bzr-w-changeset)
  • mto: This revision was merged to the branch mainline in revision 1738.
  • Revision ID: john@arbash-meinel.com-20051015071656-1dac364f5f573249
Small performance enhancement.

Show diffs side-by-side

added added

removed removed

Lines of Context:
179
179
        It fills out the internal self.revision_list with Revision
180
180
        entries which should be in the changeset.
181
181
        """
182
 
        source = MultipleRevisionSources(self.target_branch, self.base_branch)
183
 
        if self.starting_rev_id is None:
184
 
            self.starting_rev_id = common_ancestor(self.target_rev_id, 
185
 
                self.base_rev_id, source)
186
 
 
187
 
        rev_id_list = get_intervening_revisions(self.starting_rev_id,
188
 
            self.target_rev_id, source, self.target_branch.revision_history())
189
 
 
190
 
        self.revision_list = [source.get_revision(rid) for rid in rev_id_list]
 
182
        # Performance, without locking here, a new lock is taken and
 
183
        # broken for every revision (6k+ total locks for the bzr.dev tree)
 
184
        self.target_branch.lock_read()
 
185
        self.base_branch.lock_read()
 
186
        try:
 
187
            source = MultipleRevisionSources(self.target_branch, self.base_branch)
 
188
            if self.starting_rev_id is None:
 
189
                self.starting_rev_id = common_ancestor(self.target_rev_id, 
 
190
                    self.base_rev_id, source)
 
191
 
 
192
            rev_id_list = get_intervening_revisions(self.starting_rev_id,
 
193
                self.target_rev_id, source, self.target_branch.revision_history())
 
194
 
 
195
            self.revision_list = [source.get_revision(rid) for rid in rev_id_list]
 
196
        finally:
 
197
            self.base_branch.unlock()
 
198
            self.target_branch.unlock()
191
199
 
192
200
    def _write(self, txt, key=None, encode=True, indent=1):
193
201
        from common import encode as _encode