# HG changeset patch # User RhodeCode Admin # Date 2023-12-01 08:31:39 # Node ID 86489ea8c63bf9629db4e7c391afb4de00f5df37 # Parent 63fb9daf40acb9db8ea86a915f329020522c6cc7 feat(git/svn): ensure both assert repo function for git and svn use caching and only those create dirs. - in future this would be important if we use sharding for filesystem. Only vcsserver should make operations on the repositories diff --git a/vcsserver/remote/git_remote.py b/vcsserver/remote/git_remote.py --- a/vcsserver/remote/git_remote.py +++ b/vcsserver/remote/git_remote.py @@ -961,11 +961,13 @@ class GitRemote(RemoteBase): @reraise_safe_exceptions def init(self, wire): repo_path = safe_str(wire['path']) + os.makedirs(repo_path, mode=0o755) pygit2.init_repository(repo_path, bare=False) @reraise_safe_exceptions def init_bare(self, wire): repo_path = safe_str(wire['path']) + os.makedirs(repo_path, mode=0o755) pygit2.init_repository(repo_path, bare=True) @reraise_safe_exceptions diff --git a/vcsserver/remote/svn_remote.py b/vcsserver/remote/svn_remote.py --- a/vcsserver/remote/svn_remote.py +++ b/vcsserver/remote/svn_remote.py @@ -189,13 +189,21 @@ class SvnRemote(RemoteBase): if not os.path.isfile(os.path.join(path, 'format')): return False - try: - svn.repos.open(path) - except svn.core.SubversionException: - tb = traceback.format_exc() - log.debug("Invalid Subversion path `%s`, tb: %s", path, tb) - return False - return True + cache_on, context_uid, repo_id = self._cache_on(wire) + region = self._region(wire) + + @region.conditional_cache_on_arguments(condition=cache_on) + def _assert_correct_path(_context_uid, _repo_id, fast_check): + + try: + svn.repos.open(path) + except svn.core.SubversionException: + tb = traceback.format_exc() + log.debug("Invalid Subversion path `%s`, tb: %s", path, tb) + return False + return True + + return _assert_correct_path(context_uid, repo_id, True) @reraise_safe_exceptions def verify(self, wire,):