summaryrefslogtreecommitdiff
path: root/etckeeper-bzr
diff options
context:
space:
mode:
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