diff --git a/pre_commit/commands/autoupdate.py b/pre_commit/commands/autoupdate.py index a02efe08..0bff116c 100644 --- a/pre_commit/commands/autoupdate.py +++ b/pre_commit/commands/autoupdate.py @@ -11,10 +11,10 @@ from cfgv import remove_defaults import pre_commit.constants as C from pre_commit import output from pre_commit.clientlib import CONFIG_SCHEMA +from pre_commit.clientlib import InvalidManifestError from pre_commit.clientlib import is_local_repo from pre_commit.clientlib import is_meta_repo from pre_commit.clientlib import load_config -from pre_commit.clientlib import InvalidManifestError from pre_commit.commands.migrate_config import migrate_config from pre_commit.repository import Repository from pre_commit.util import CalledProcessError @@ -54,14 +54,15 @@ def _update_repo(repo_config, store, tags_only): # Construct a new config with the head rev new_config = OrderedDict(repo_config) new_config['rev'] = rev - new_repo = Repository.create(new_config, store) + + try: + new_hooks = Repository.create(new_config, store).manifest_hooks + except InvalidManifestError as e: + raise RepositoryCannotBeUpdatedError(e.args[0]) # See if any of our hooks were deleted with the new commits hooks = {hook['id'] for hook in repo_config['hooks']} - try: - hooks_missing = hooks - (hooks & set(new_repo.manifest_hooks)) - except InvalidManifestError as e: - raise RepositoryCannotBeUpdatedError(e.args[0]) + hooks_missing = hooks - set(new_hooks) if hooks_missing: raise RepositoryCannotBeUpdatedError( 'Cannot update because the tip of master is missing these hooks:\n'