Show More
@@ -0,0 +1,28 b'' | |||
|
1 | # RhodeCode VCSServer provides access to different vcs backends via network. | |
|
2 | # Copyright (C) 2014-2019 RhodeCode GmbH | |
|
3 | # | |
|
4 | # This program is free software; you can redistribute it and/or modify | |
|
5 | # it under the terms of the GNU General Public License as published by | |
|
6 | # the Free Software Foundation; either version 3 of the License, or | |
|
7 | # (at your option) any later version. | |
|
8 | # | |
|
9 | # This program is distributed in the hope that it will be useful, | |
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
12 | # GNU General Public License for more details. | |
|
13 | # | |
|
14 | # You should have received a copy of the GNU General Public License | |
|
15 | # along with this program; if not, write to the Free Software Foundation, | |
|
16 | # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
|
17 | ||
|
18 | ||
|
19 | class RemoteBase(object): | |
|
20 | EMPTY_COMMIT = '0' * 40 | |
|
21 | ||
|
22 | def _cache_on(self, wire): | |
|
23 | context = wire.get('context', '') | |
|
24 | context_uid = '{}'.format(context) | |
|
25 | repo_id = wire.get('repo_id', '') | |
|
26 | cache = wire.get('cache', True) | |
|
27 | cache_on = context and cache | |
|
28 | return cache_on, context_uid, repo_id |
@@ -44,6 +44,7 b' from vcsserver.base import RepoFactory, ' | |||
|
44 | 44 | from vcsserver.hgcompat import ( |
|
45 | 45 | hg_url as url_parser, httpbasicauthhandler, httpdigestauthhandler) |
|
46 | 46 | from vcsserver.git_lfs.lib import LFSOidStore |
|
47 | from vcsserver.vcs_base import RemoteBase | |
|
47 | 48 | |
|
48 | 49 | DIR_STAT = stat.S_IFDIR |
|
49 | 50 | FILE_MODE = stat.S_IFMT |
@@ -127,8 +128,7 b' class GitFactory(RepoFactory):' | |||
|
127 | 128 | return self.repo(wire, use_libgit2=True) |
|
128 | 129 | |
|
129 | 130 | |
|
130 |
class GitRemote( |
|
|
131 | EMPTY_COMMIT = '0' * 40 | |
|
131 | class GitRemote(RemoteBase): | |
|
132 | 132 | |
|
133 | 133 | def __init__(self, factory): |
|
134 | 134 | self._factory = factory |
@@ -156,14 +156,6 b' class GitRemote(object):' | |||
|
156 | 156 | params.extend(['-c', 'http.sslCAinfo={}'.format(ssl_cert_dir)]) |
|
157 | 157 | return params |
|
158 | 158 | |
|
159 | def _cache_on(self, wire): | |
|
160 | context = wire.get('context', '') | |
|
161 | context_uid = '{}'.format(context) | |
|
162 | repo_id = wire.get('repo_id', '') | |
|
163 | cache = wire.get('cache', True) | |
|
164 | cache_on = context and cache | |
|
165 | return cache_on, context_uid, repo_id | |
|
166 | ||
|
167 | 159 | @reraise_safe_exceptions |
|
168 | 160 | def discover_git_version(self): |
|
169 | 161 | stdout, _ = self.run_git_command( |
@@ -404,7 +396,6 b' class GitRemote(object):' | |||
|
404 | 396 | @reraise_safe_exceptions |
|
405 | 397 | def branch(self, wire, commit_id): |
|
406 | 398 | cache_on, context_uid, repo_id = self._cache_on(wire) |
|
407 | cache_on = False | |
|
408 | 399 | @self.region.conditional_cache_on_arguments(condition=cache_on) |
|
409 | 400 | def _branch(_context_uid, _repo_id, _commit_id): |
|
410 | 401 | regex = re.compile('^refs/heads') |
@@ -37,6 +37,7 b' from vcsserver.hgcompat import (' | |||
|
37 | 37 | makepeer, instance, match, memctx, exchange, memfilectx, nullrev, hg_merge, |
|
38 | 38 | patch, peer, revrange, ui, hg_tag, Abort, LookupError, RepoError, |
|
39 | 39 | RepoLookupError, InterventionRequired, RequirementError) |
|
40 | from vcsserver.vcs_base import RemoteBase | |
|
40 | 41 | |
|
41 | 42 | log = logging.getLogger(__name__) |
|
42 | 43 | |
@@ -150,7 +151,7 b' class MercurialFactory(RepoFactory):' | |||
|
150 | 151 | return self._create_repo(wire, create) |
|
151 | 152 | |
|
152 | 153 | |
|
153 |
class HgRemote( |
|
|
154 | class HgRemote(RemoteBase): | |
|
154 | 155 | |
|
155 | 156 | def __init__(self, factory): |
|
156 | 157 | self._factory = factory |
@@ -173,14 +174,6 b' class HgRemote(object):' | |||
|
173 | 174 | def _get_ctx(self, repo, ref): |
|
174 | 175 | return get_ctx(repo, ref) |
|
175 | 176 | |
|
176 | def _cache_on(self, wire): | |
|
177 | context = wire.get('context', '') | |
|
178 | context_uid = '{}'.format(context) | |
|
179 | repo_id = wire.get('repo_id', '') | |
|
180 | cache = wire.get('cache', True) | |
|
181 | cache_on = context and cache | |
|
182 | return cache_on, context_uid, repo_id | |
|
183 | ||
|
184 | 177 | @reraise_safe_exceptions |
|
185 | 178 | def discover_hg_version(self): |
|
186 | 179 | from mercurial import util |
@@ -36,6 +36,7 b' import svn.repos' | |||
|
36 | 36 | |
|
37 | 37 | from vcsserver import svn_diff, exceptions, subprocessio, settings |
|
38 | 38 | from vcsserver.base import RepoFactory, raise_from_original |
|
39 | from vcsserver.vcs_base import RemoteBase | |
|
39 | 40 | |
|
40 | 41 | log = logging.getLogger(__name__) |
|
41 | 42 | |
@@ -107,7 +108,7 b' NODE_TYPE_MAPPING = {' | |||
|
107 | 108 | } |
|
108 | 109 | |
|
109 | 110 | |
|
110 |
class SvnRemote( |
|
|
111 | class SvnRemote(RemoteBase): | |
|
111 | 112 | |
|
112 | 113 | def __init__(self, factory, hg_factory=None): |
|
113 | 114 | self._factory = factory |
@@ -116,14 +117,6 b' class SvnRemote(object):' | |||
|
116 | 117 | self._hg_factory = hg_factory |
|
117 | 118 | self.region = self._factory._cache_region |
|
118 | 119 | |
|
119 | def _cache_on(self, wire): | |
|
120 | context = wire.get('context', '') | |
|
121 | context_uid = '{}'.format(context) | |
|
122 | repo_id = wire.get('repo_id', '') | |
|
123 | cache = wire.get('cache', True) | |
|
124 | cache_on = context and cache | |
|
125 | return cache_on, context_uid, repo_id | |
|
126 | ||
|
127 | 120 | @reraise_safe_exceptions |
|
128 | 121 | def discover_svn_version(self): |
|
129 | 122 | try: |
General Comments 0
You need to be logged in to leave comments.
Login now