/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: Martin Pool
  • Date: 2005-09-16 09:39:57 UTC
  • Revision ID: mbp@sourcefrog.net-20050916093957-27ea539ac05c643a
- commit updates entry_version

- some tests check this works

Show diffs side-by-side

added added

removed removed

Lines of Context:
201
201
            self.new_inv = Inventory()
202
202
            self._store_entries()
203
203
            self._report_deletes()
 
204
            self._set_entry_versions()
204
205
 
205
206
            if not (self.allow_pointless
206
207
                    or len(self.parents) > 1
336
337
                    assert r[ie.text_version] == ie
337
338
                else:
338
339
                    r[ie.text_version] = ie
339
 
        return r            
 
340
        return r
 
341
 
 
342
 
 
343
    def _set_entry_versions(self):
 
344
        """Pass over inventory and mark new entry version as needed.
 
345
 
 
346
        Files get a new name version when they are new, have a
 
347
        different parent, or a different name from in the
 
348
        basis inventory, or if the file is in a different place
 
349
        to any of the parents."""
 
350
        # XXX: Need to think more here about when the user has
 
351
        # made a specific decision on a particular value -- c.f.
 
352
        # mark-merge.  
 
353
        for path, ie in self.new_inv.iter_entries():
 
354
            old_version = None
 
355
            file_id = ie.file_id
 
356
            for parent_tree in self.parent_trees:
 
357
                parent_inv = parent_tree.inventory
 
358
                if file_id not in parent_inv:
 
359
                    continue
 
360
                parent_ie = parent_inv[file_id]
 
361
                if parent_ie.parent_id != ie.parent_id:
 
362
                    old_version = None
 
363
                    break
 
364
                elif parent_ie.name != ie.name:
 
365
                    old_version = None
 
366
                    break
 
367
                elif old_version is None:
 
368
                    old_version = parent_ie.entry_version
 
369
                elif old_version != parent_ie.entry_version:
 
370
                    old_version = None
 
371
                    break
 
372
                else:
 
373
                    pass                # so far so good
 
374
            if old_version is None:
 
375
                mutter('new entry_version for {%s}', file_id)
 
376
                ie.entry_version = self.rev_id
 
377
            else:
 
378
                mutter('entry_version for {%s} inherited as {%s}',
 
379
                       file_id, old_version)
 
380
                ie.entry_version = old_version
340
381
 
341
382
 
342
383
    def _store_entries(self):