diff --git a/pre_commit/util.py b/pre_commit/util.py index b75c84a2..58042ae4 100644 --- a/pre_commit/util.py +++ b/pre_commit/util.py @@ -42,8 +42,10 @@ def resource_text(filename: str) -> str: def make_executable(filename: str) -> None: original_mode = os.stat(filename).st_mode - new_mode = original_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH - os.chmod(filename, new_mode) + exe_mask = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + if (original_mode & exe_mask) != exe_mask: + new_mode = original_mode | exe_mask + os.chmod(filename, new_mode) class CalledProcessError(RuntimeError):