~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree_4.py

(jameinel) Bug #380202,
 don't bother rewriting the dirstate if <10 items have changed. (John A
 Meinel)

Show diffs side-by-side

added added

removed removed

Lines of Context:
76
76
 
77
77
class DirStateWorkingTree(InventoryWorkingTree):
78
78
 
 
79
    _DEFAULT_WORTH_SAVING_LIMIT = 10
 
80
 
79
81
    def __init__(self, basedir,
80
82
                 branch,
81
83
                 _control_files=None,
229
231
        local_path = self.bzrdir.get_workingtree_transport(None
230
232
            ).local_abspath('dirstate')
231
233
        self._dirstate = dirstate.DirState.on_file(local_path,
232
 
            self._sha1_provider())
 
234
            self._sha1_provider(), self._worth_saving_limit())
233
235
        return self._dirstate
234
236
 
235
237
    def _sha1_provider(self):
244
246
        else:
245
247
            return None
246
248
 
 
249
    def _worth_saving_limit(self):
 
250
        """How many hash changes are ok before we must save the dirstate.
 
251
 
 
252
        :return: an integer. -1 means never save.
 
253
        """
 
254
        config = self.branch.get_config()
 
255
        val = config.get_user_option('bzr.workingtree.worth_saving_limit')
 
256
        if val is None:
 
257
            val = self._DEFAULT_WORTH_SAVING_LIMIT
 
258
        else:
 
259
            try:
 
260
                val = int(val)
 
261
            except ValueError, e:
 
262
                trace.warning('Invalid config value for'
 
263
                              ' "bzr.workingtree.worth_saving_limit"'
 
264
                              ' value %r is not an integer.'
 
265
                              % (val,))
 
266
                val = self._DEFAULT_WORTH_SAVING_LIMIT
 
267
        return val
 
268
 
247
269
    def filter_unversioned_files(self, paths):
248
270
        """Filter out paths that are versioned.
249
271
 
860
882
                rollback_rename()
861
883
                raise
862
884
            result.append((from_rel, to_rel))
863
 
            state._dirblock_state = dirstate.DirState.IN_MEMORY_MODIFIED
 
885
            state._mark_modified()
864
886
            self._make_dirty(reset_inventory=False)
865
887
 
866
888
        return result