~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/upgrade.py

  • Committer: Martin Pool
  • Date: 2005-10-05 09:08:22 UTC
  • mto: (1185.13.3)
  • mto: This revision was merged to the branch mainline in revision 1406.
  • Revision ID: mbp@sourcefrog.net-20051005090821-8b101f03409b1424
[patch] better version selection in upgrade (from john)

Show diffs side-by-side

added added

removed removed

Lines of Context:
331
331
 
332
332
    def _set_revision(self, rev, ie, parent_invs):
333
333
        """Set name version for a file.
334
 
 
335
 
        Done in a slightly lazy way: if the file is renamed or in a merge revision
336
 
        it gets a new version, otherwise the same as before.
337
334
        """
338
335
        file_id = ie.file_id
339
336
        if ie.kind == 'root_directory':
340
337
            return
341
 
        if len(parent_invs) != 1:
 
338
        if len(parent_invs) == 0:
342
339
            ie.revision = rev.revision_id
343
340
        else:
344
 
            old_inv = parent_invs[0]
345
 
            if not old_inv.has_id(file_id):
346
 
                ie.revision = rev.revision_id
 
341
            matched_id = None
 
342
            for p_inv in parent_invs:
 
343
                if not p_inv.has_id(file_id):
 
344
                    ie.revision = rev.revision_id
 
345
                    break
 
346
                old_ie = p_inv[file_id]
 
347
                if (old_ie.parent_id != ie.parent_id
 
348
                    or old_ie.name != ie.name
 
349
                    or old_ie.text_sha1 != ie.text_sha1
 
350
                    or old_ie.text_size != ie.text_size):
 
351
                    ie.revision = rev.revision_id
 
352
                    break
 
353
                if matched_id is None:
 
354
                    matched_id = old_ie.revision
 
355
                elif matched_id != old_ie.revision:
 
356
                    ie.revision = rev.revision_id
 
357
                    break
347
358
            else:
348
 
                old_ie = old_inv[file_id]
349
 
                if (old_ie.parent_id != ie.parent_id
350
 
                    or old_ie.name != ie.name):
351
 
                    ie.revision = rev.revision_id
352
 
                else:
353
 
                    ie.revision = old_ie.revision
354
 
 
355
 
 
 
359
                assert matched_id is not None
 
360
                ie.revision = matched_id
356
361
 
357
362
    def _convert_file_version(self, rev, ie, parent_invs):
358
363
        """Convert one version of one file.