~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: Robert Collins
  • Date: 2005-10-06 07:03:33 UTC
  • Revision ID: robertc@robertcollins.net-20051006070333-05cb8d7b08974aec
when committing a specific file, include all its parents

Show diffs side-by-side

added added

removed removed

Lines of Context:
78
78
from bzrlib.revision import Revision
79
79
from bzrlib.trace import mutter, note, warning
80
80
from bzrlib.xml5 import serializer_v5
81
 
from bzrlib.inventory import Inventory
 
81
from bzrlib.inventory import Inventory, ROOT_ID
82
82
from bzrlib.weave import Weave
83
83
from bzrlib.weavefile import read_weave, write_weave_v5
84
84
from bzrlib.atomicfile import AtomicFile
358
358
            if self.specific_files:
359
359
                if not is_inside_any(self.specific_files, path):
360
360
                    mutter('%s not selected for commit', path)
361
 
                    self._carry_file(file_id)
 
361
                    self._carry_entry(file_id)
362
362
                    continue
 
363
                else:
 
364
                    # this is selected, ensure its parents are too.
 
365
                    parent_id = new_ie.parent_id
 
366
                    while parent_id != ROOT_ID:
 
367
                        if not self.new_inv.has_id(parent_id):
 
368
                            ie = self._select_entry(self.work_inv[parent_id])
 
369
                            mutter('%s selected for commit because of %s',
 
370
                                   self.new_inv.id2path(parent_id), path)
 
371
 
 
372
                        ie = self.new_inv[parent_id]
 
373
                        if ie.revision is not None:
 
374
                            ie.revision = None
 
375
                            mutter('%s selected for commit because of %s',
 
376
                                   self.new_inv.id2path(parent_id), path)
 
377
                        parent_id = ie.parent_id
363
378
            mutter('%s selected for commit', path)
364
 
            ie = new_ie.copy()
365
 
            ie.revision = None
366
 
            self.new_inv.add(ie)
367
 
 
368
 
    def _carry_file(self, file_id):
 
379
            self._select_entry(new_ie)
 
380
 
 
381
    def _select_entry(self, new_ie):
 
382
        """Make new_ie be considered for committing."""
 
383
        ie = new_ie.copy()
 
384
        ie.revision = None
 
385
        self.new_inv.add(ie)
 
386
        return ie
 
387
 
 
388
    def _carry_entry(self, file_id):
369
389
        """Carry the file unchanged from the basis revision."""
370
390
        if self.basis_inv.has_id(file_id):
371
391
            self.new_inv.add(self.basis_inv[file_id].copy())