/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/hooks.py

  • Committer: Vincent Ladeuil
  • Date: 2012-01-18 14:09:19 UTC
  • mto: This revision was merged to the branch mainline in revision 6468.
  • Revision ID: v.ladeuil+lp@free.fr-20120118140919-rlvdrhpc0nq1lbwi
Change set/remove to require a lock for the branch config files.

This means that tests (or any plugin for that matter) do not requires an
explicit lock on the branch anymore to change a single option. This also
means the optimisation becomes "opt-in" and as such won't be as
spectacular as it may be and/or harder to get right (nothing fails
anymore).

This reduces the diff by ~300 lines.

Code/tests that were updating more than one config option is still taking
a lock to at least avoid some IOs and demonstrate the benefits through
the decreased number of hpss calls.

The duplication between BranchStack and BranchOnlyStack will be removed
once the same sharing is in place for local config files, at which point
the Stack class itself may be able to host the changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
106
106
    return pyutils.get_named_object(module_name, member_name)
107
107
 
108
108
 
 
109
@symbol_versioning.deprecated_function(symbol_versioning.deprecated_in((2, 3)))
 
110
def known_hooks_key_to_parent_and_attribute(key):
 
111
    """See KnownHooksRegistry.key_to_parent_and_attribute."""
 
112
    return known_hooks.key_to_parent_and_attribute(key)
 
113
 
 
114
 
109
115
class Hooks(dict):
110
116
    """A dictionary mapping hook name to a list of callables.
111
117
 
147
153
                              deprecated=deprecated, callbacks=callbacks)
148
154
        self[name] = hookpoint
149
155
 
 
156
    @symbol_versioning.deprecated_method(symbol_versioning.deprecated_in((2, 4)))
 
157
    def create_hook(self, hook):
 
158
        """Create a hook which can have callbacks registered for it.
 
159
 
 
160
        :param hook: The hook to create. An object meeting the protocol of
 
161
            bzrlib.hooks.HookPoint. It's name is used as the key for future
 
162
            lookups.
 
163
        """
 
164
        if hook.name in self:
 
165
            raise errors.DuplicateKey(hook.name)
 
166
        self[hook.name] = hook
 
167
 
150
168
    def docs(self):
151
169
        """Generate the documentation for this Hooks instance.
152
170