summaryrefslogtreecommitdiffstats
path: root/pre_commit/store.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2020-08-30 11:22:57 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2020-08-30 11:22:57 +0000
commit16e677e925131974acbd67131124e11301d127b4 (patch)
treedc6734c39114c88aeeeb6b72c46b141489cd66f5 /pre_commit/store.py
parentReleasing debian version 2.6.0-1. (diff)
downloadpre-commit-16e677e925131974acbd67131124e11301d127b4.tar.xz
pre-commit-16e677e925131974acbd67131124e11301d127b4.zip
Merging upstream version 2.7.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'pre_commit/store.py')
-rw-r--r--pre_commit/store.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/pre_commit/store.py b/pre_commit/store.py
index 6d8c40a..e5522ec 100644
--- a/pre_commit/store.py
+++ b/pre_commit/store.py
@@ -43,6 +43,10 @@ class Store:
def __init__(self, directory: Optional[str] = None) -> None:
self.directory = directory or Store.get_default_directory()
self.db_path = os.path.join(self.directory, 'db.db')
+ self.readonly = (
+ os.path.exists(self.directory) and
+ not os.access(self.directory, os.W_OK)
+ )
if not os.path.exists(self.directory):
os.makedirs(self.directory, exist_ok=True)
@@ -75,7 +79,7 @@ class Store:
self._create_config_table(db)
# Atomic file move
- os.rename(tmpfile, self.db_path)
+ os.replace(tmpfile, self.db_path)
@contextlib.contextmanager
def exclusive_lock(self) -> Generator[None, None, None]:
@@ -218,6 +222,8 @@ class Store:
)
def mark_config_used(self, path: str) -> None:
+ if self.readonly: # pragma: win32 no cover
+ return
path = os.path.realpath(path)
# don't insert config files that do not exist
if not os.path.exists(path):