From 16e677e925131974acbd67131124e11301d127b4 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 30 Aug 2020 13:22:57 +0200 Subject: Merging upstream version 2.7.1. Signed-off-by: Daniel Baumann --- pre_commit/store.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'pre_commit/store.py') 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): -- cgit v1.2.3