summaryrefslogtreecommitdiff
path: root/etckeeper-bzr
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2011-02-20 00:09:06 +0100
committerJoey Hess <joey@kitenet.net>2011-02-19 20:02:40 -0400
commita9784f835351f638919a44f3fe1dbc82ef1e0023 (patch)
tree637b2247c307684eae8d00990d74507fdf2ec882 /etckeeper-bzr
parent05a29cb5dd6397c62e42465978b95df074ea5fca (diff)
Install bzr hook lazily, clean up some compatibility code.
Diffstat (limited to 'etckeeper-bzr')
-rwxr-xr-xetckeeper-bzr/__init__.py23
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