diff --git a/pre_commit/git.py b/pre_commit/git.py index 92efe4a4..ea065370 100644 --- a/pre_commit/git.py +++ b/pre_commit/git.py @@ -6,8 +6,22 @@ from plumbum import local from pre_commit.util import memoize_by_cwd +def _get_root_original(): + return local['git']['rev-parse', '--show-toplevel']().strip() + +def _get_root_new(): + path = os.getcwd() + while len(path) > 1: + if os.path.exists(os.path.join(path, '.git')): + return path + else: + path = os.path.normpath(os.path.join(path, '../')) + raise AssertionError('called from outside of the gits') + + @memoize_by_cwd def get_root(): + return _get_root_new() return local['git']['rev-parse', '--show-toplevel']().strip() diff --git a/pre_commit/hooks_workspace.py b/pre_commit/hooks_workspace.py index e79ad2b9..6533c719 100644 --- a/pre_commit/hooks_workspace.py +++ b/pre_commit/hooks_workspace.py @@ -10,6 +10,7 @@ from pre_commit import git def get_pre_commit_dir_path(): return os.path.join(git.get_root(), C.HOOKS_WORKSPACE) + @contextlib.contextmanager def in_hooks_workspace(): """Change into the hooks workspace. If it does not exist create it."""