diff options
Diffstat (limited to 'etckeeper-bzr')
-rwxr-xr-x | etckeeper-bzr/__init__.py | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/etckeeper-bzr/__init__.py b/etckeeper-bzr/__init__.py index 3cf06db..61322fe 100755 --- a/etckeeper-bzr/__init__.py +++ b/etckeeper-bzr/__init__.py @@ -3,30 +3,29 @@ """Runs etckeeper pre-commit when necessary.""" -import bzrlib -from bzrlib.mutabletree import MutableTree -from bzrlib.errors import BzrError, NotLocalUrl +from bzrlib.errors import BzrError import os -import subprocess - -if not (hasattr(MutableTree, "hooks") and "start_commit" in MutableTree.hooks): - raise "Version of Bazaar installed does not support required hooks." def etckeeper_startcommit_hook(tree): abspath = getattr(tree, "abspath", None) if abspath is None or not os.path.exists(abspath(".etckeeper")): # Only run the commit hook when this is an etckeeper branch return + import subprocess ret = subprocess.call(["etckeeper", "pre-commit", abspath(".")]) if ret != 0: raise BzrError("etckeeper pre-commit failed") -install_named_hook = getattr(MutableTree.hooks, 'install_named_hook', None) -if install_named_hook is not None: - install_named_hook('start_commit', etckeeper_startcommit_hook, 'etckeeper') +try: + from bzrlib.hooks import install_lazy_named_hook +except ImportError: + from bzrlib.mutabletree import MutableTree + MutableTree.hooks.install_named_hook('start_commit', + etckeeper_startcommit_hook, 'etckeeper') else: - MutableTree.hooks.install_hook('start_commit', etckeeper_startcommit_hook) - MutableTree.hooks.name_hook(etckeeper_startcommit_hook, "etckeeper") + install_lazy_named_hook( + "bzrlib.mutabletree", "MutableTree.hooks", + 'start_commit', etckeeper_startcommit_hook, 'etckeeper') if __name__ == "__main__": from distutils.core import setup |