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,):