Repository.open: use stat() to check for repo dir, fixes #4695

This commit is contained in:
Thomas Waldmann 2019-07-29 14:54:20 +02:00
parent 0538dbfd64
commit ec3fad0f85
1 changed files with 6 additions and 1 deletions

View File

@ -2,6 +2,7 @@ import errno
import mmap import mmap
import os import os
import shutil import shutil
import stat
import struct import struct
import time import time
from binascii import hexlify, unhexlify from binascii import hexlify, unhexlify
@ -386,8 +387,12 @@ class Repository:
def open(self, path, exclusive, lock_wait=None, lock=True): def open(self, path, exclusive, lock_wait=None, lock=True):
self.path = path self.path = path
if not os.path.isdir(path): try:
st = os.stat(path)
except FileNotFoundError:
raise self.DoesNotExist(path) raise self.DoesNotExist(path)
if not stat.S_ISDIR(st.st_mode):
raise self.InvalidRepository(path)
if lock: if lock:
self.lock = Lock(os.path.join(path, 'lock'), exclusive, timeout=lock_wait, kill_stale_locks=hostname_is_unique()).acquire() self.lock = Lock(os.path.join(path, 'lock'), exclusive, timeout=lock_wait, kill_stale_locks=hostname_is_unique()).acquire()
else: else: