diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2011-02-20 00:09:06 +0100 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-02-19 20:02:40 -0400 |
commit | a9784f835351f638919a44f3fe1dbc82ef1e0023 (patch) | |
tree | 637b2247c307684eae8d00990d74507fdf2ec882 /etckeeper-bzr | |
parent | 05a29cb5dd6397c62e42465978b95df074ea5fca (diff) |
Install bzr hook lazily, clean up some compatibility code.
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 |