~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

MergeĀ inĀ upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
76
76
from bzrlib.osutils import (local_time_offset,
77
77
                            rand_bytes, compact_date,
78
78
                            kind_marker, is_inside_any, quotefn,
79
 
                            sha_string, sha_strings, sha_file, isdir, isfile,
 
79
                            sha_file, isdir, isfile,
80
80
                            split_lines)
81
81
import bzrlib.config
82
82
import bzrlib.errors as errors
85
85
                           ConflictsInTree,
86
86
                           StrictCommitFailed
87
87
                           )
88
 
import bzrlib.gpg as gpg
89
88
from bzrlib.revision import Revision
90
89
from bzrlib.testament import Testament
91
90
from bzrlib.trace import mutter, note, warning
293
292
            if len(list(self.work_tree.iter_conflicts()))>0:
294
293
                raise ConflictsInTree
295
294
 
296
 
            self._record_inventory()
 
295
            self.inv_sha1 = self.branch.repository.add_inventory(
 
296
                self.rev_id,
 
297
                self.new_inv,
 
298
                self.present_parents
 
299
                )
297
300
            self._make_revision()
298
301
            self.work_tree.set_pending_merges([])
299
302
            self.branch.append_revision(self.rev_id)
314
317
        finally:
315
318
            self.branch.unlock()
316
319
 
317
 
    def _record_inventory(self):
318
 
        """Store the inventory for the new revision."""
319
 
        inv_text = serializer_v5.write_inventory_to_string(self.new_inv)
320
 
        self.inv_sha1 = sha_string(inv_text)
321
 
        s = self.branch.repository.control_weaves
322
 
        inv_versioned_file = s.get_weave('inventory',
323
 
                                         self.branch.repository.get_transaction())
324
 
        inv_versioned_file.add_lines(self.rev_id,
325
 
                                     self.present_parents,
326
 
                                     split_lines(inv_text))
327
 
 
328
320
    def _escape_commit_message(self):
329
321
        """Replace xml-incompatible control characters."""
330
322
        # Python strings can include characters that can't be
366
358
            
367
359
    def _make_revision(self):
368
360
        """Record a new revision object for this commit."""
369
 
        self.rev = Revision(timestamp=self.timestamp,
370
 
                            timezone=self.timezone,
371
 
                            committer=self.committer,
372
 
                            message=self.message,
373
 
                            inventory_sha1=self.inv_sha1,
374
 
                            revision_id=self.rev_id,
375
 
                            properties=self.revprops)
376
 
        self.rev.parent_ids = self.parents
377
 
        rev_tmp = StringIO()
378
 
        serializer_v5.write_revision(self.rev, rev_tmp)
379
 
        rev_tmp.seek(0)
380
 
        if self.config.signature_needed():
381
 
            plaintext = Testament(self.rev, self.new_inv).as_short_text()
382
 
            self.branch.repository.store_revision_signature(
383
 
                gpg.GPGStrategy(self.config), plaintext, self.rev_id)
384
 
        self.branch.repository.revision_store.add(rev_tmp, self.rev_id)
385
 
        mutter('new revision_id is {%s}', self.rev_id)
 
361
        rev = Revision(timestamp=self.timestamp,
 
362
                       timezone=self.timezone,
 
363
                       committer=self.committer,
 
364
                       message=self.message,
 
365
                       inventory_sha1=self.inv_sha1,
 
366
                       revision_id=self.rev_id,
 
367
                       properties=self.revprops)
 
368
        rev.parent_ids = self.parents
 
369
        self.branch.repository.add_revision(self.rev_id, rev, self.new_inv, self.config)
386
370
 
387
371
    def _remove_deleted(self):
388
372
        """Remove deleted files from the working inventories.