/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: Ian Clatworthy
  • Date: 2007-09-03 13:17:52 UTC
  • mto: (2819.1.1 ianc-integration)
  • mto: This revision was merged to the branch mainline in revision 2820.
  • Revision ID: ian.clatworthy@internode.on.net-20070903131752-va6227ax1vj8b9pb
Make commit less verbose by default

Show diffs side-by-side

added added

removed removed

Lines of Context:
72
72
                            is_inside_or_parent_of_any,
73
73
                            quotefn, sha_file, split_lines)
74
74
from bzrlib.testament import Testament
75
 
from bzrlib.trace import mutter, note, warning
 
75
from bzrlib.trace import mutter, note, warning, is_quiet
76
76
from bzrlib.xml5 import serializer_v5
77
77
from bzrlib.inventory import Inventory, InventoryEntry
78
78
from bzrlib import symbol_versioning
104
104
    def renamed(self, change, old_path, new_path):
105
105
        pass
106
106
 
 
107
    def is_verbose(self):
 
108
        return False
107
109
 
108
 
class ReportCommitToLog(NullCommitReporter):
 
110
class DefaultCommitReporter(NullCommitReporter):
109
111
 
110
112
    def _note(self, format, *args):
111
113
        """Output a message.
114
116
        """
115
117
        note(format, *args)
116
118
 
 
119
    def completed(self, revno, rev_id):
 
120
        self._note('Committed revision %d.', revno)
 
121
 
 
122
 
 
123
class ReportCommitToLog(DefaultCommitReporter):
 
124
 
117
125
    def snapshot_change(self, change, path):
118
126
        if change == 'unchanged':
119
127
            return
121
129
            return
122
130
        self._note("%s %s", change, path)
123
131
 
124
 
    def completed(self, revno, rev_id):
125
 
        self._note('Committed revision %d.', revno)
126
 
    
127
132
    def deleted(self, file_id):
128
133
        self._note('deleted %s', file_id)
129
134
 
136
141
    def renamed(self, change, old_path, new_path):
137
142
        self._note('%s %s => %s', change, old_path, new_path)
138
143
 
 
144
    def is_verbose(self):
 
145
        return True
 
146
 
139
147
 
140
148
class Commit(object):
141
149
    """Task of committing a new revision.
152
160
    def __init__(self,
153
161
                 reporter=None,
154
162
                 config=None):
155
 
        if reporter is not None:
156
 
            self.reporter = reporter
157
 
        else:
158
 
            self.reporter = NullCommitReporter()
 
163
        """Create a Commit object.
 
164
 
 
165
        :param reporter: the default reporter to use or None to decide later
 
166
        """
 
167
        self.reporter = reporter
159
168
        self.config = config
160
 
        
 
169
 
161
170
    def commit(self,
162
171
               message=None,
163
172
               timestamp=None,
167
176
               rev_id=None,
168
177
               allow_pointless=True,
169
178
               strict=False,
170
 
               verbose=False,
171
179
               revprops=None,
172
180
               working_tree=None,
173
181
               local=False,
174
182
               reporter=None,
 
183
               verbose=False,
175
184
               config=None,
176
185
               message_callback=None,
177
186
               recursive='down'):
198
207
 
199
208
        :param revprops: Properties for new revision
200
209
        :param local: Perform a local only commit.
 
210
        :param reporter: the reporter to use or None for the default
 
211
        :param verbose: if True and the reporter is not None, report everything
201
212
        :param recursive: If set to 'down', commit in any subtrees that have
202
213
            pending changes of any sort during this commit.
203
214
        """
236
247
        self.strict = strict
237
248
        self.verbose = verbose
238
249
 
239
 
        if reporter is None and self.reporter is None:
240
 
            self.reporter = NullCommitReporter()
241
 
        elif reporter is not None:
 
250
        if reporter is not None:
242
251
            self.reporter = reporter
 
252
        elif self.reporter is None:
 
253
            self.reporter = self._get_default_reporter()
243
254
 
244
255
        self.work_tree.lock_write()
245
256
        self.pb = bzrlib.ui.ui_factory.nested_progress_bar()
379
390
        # No actual changes present
380
391
        return False
381
392
 
 
393
    def _get_default_reporter(self):
 
394
        """Get the default CommitReporter."""
 
395
        if self.verbose:
 
396
            return ReportCommitToLog()
 
397
        elif is_quiet():
 
398
            return NullCommitReporter()
 
399
        else:
 
400
            return DefaultCommitReporter()
 
401
 
382
402
    def _check_pointless(self):
383
403
        if self.allow_pointless:
384
404
            return
619
639
                self.builder.record_entry_contents(ie, self.parent_invs, path,
620
640
                                                   self.basis_tree)
621
641
 
622
 
        # Report what was deleted. We could skip this when no deletes are
623
 
        # detected to gain a performance win, but it arguably serves as a
624
 
        # 'safety check' by informing the user whenever anything disappears.
625
 
        for path, ie in self.basis_inv.iter_entries():
626
 
            if ie.file_id not in self.builder.new_inventory:
627
 
                self.reporter.deleted(path)
 
642
        # Report what was deleted.
 
643
        if self.reporter.is_verbose():
 
644
            for path, ie in self.basis_inv.iter_entries():
 
645
                if ie.file_id not in self.builder.new_inventory:
 
646
                    self.reporter.deleted(path)
628
647
 
629
648
    def _populate_from_inventory(self, specific_files):
630
649
        """Populate the CommitBuilder by walking the working tree inventory."""
640
659
        entries = work_inv.iter_entries()
641
660
        if not self.builder.record_root_entry:
642
661
            entries.next()
 
662
        report_changes = self.reporter.is_verbose()
643
663
        for path, existing_ie in entries:
644
664
            file_id = existing_ie.file_id
645
665
            name = existing_ie.name
675
695
            # without it thanks to a unicode normalisation issue. :-(
676
696
            definitely_changed = kind != existing_ie.kind 
677
697
            self._record_entry(path, file_id, specific_files, kind, name,
678
 
                parent_id, definitely_changed, existing_ie)
 
698
                parent_id, definitely_changed, existing_ie, report_changes)
679
699
 
680
700
        # Unversion IDs that were found to be deleted
681
701
        self.work_tree.unversion(deleted_ids)
706
726
            pass
707
727
 
708
728
    def _record_entry(self, path, file_id, specific_files, kind, name,
709
 
                      parent_id, definitely_changed, existing_ie=None):
 
729
                      parent_id, definitely_changed, existing_ie=None,
 
730
                      report_changes=False):
710
731
        "Record the new inventory entry for a path if any."
711
732
        # mutter('check %s {%s}', path, file_id)
712
733
        if (not specific_files or 
727
748
        if ie is not None:
728
749
            self.builder.record_entry_contents(ie, self.parent_invs, 
729
750
                path, self.work_tree)
730
 
            self._report_change(ie, path)
 
751
            if report_changes:
 
752
                self._report_change(ie, path)
731
753
        return ie
732
754
 
733
755
    def _report_change(self, ie, path):