Show More
@@ -0,0 +1,40 b'' | |||||
|
1 | |RCE| 4.27.1 |RNS| | |||
|
2 | ------------------ | |||
|
3 | ||||
|
4 | Release Date | |||
|
5 | ^^^^^^^^^^^^ | |||
|
6 | ||||
|
7 | - 2022-10-12 | |||
|
8 | ||||
|
9 | ||||
|
10 | New Features | |||
|
11 | ^^^^^^^^^^^^ | |||
|
12 | ||||
|
13 | ||||
|
14 | ||||
|
15 | General | |||
|
16 | ^^^^^^^ | |||
|
17 | ||||
|
18 | ||||
|
19 | ||||
|
20 | Security | |||
|
21 | ^^^^^^^^ | |||
|
22 | ||||
|
23 | ||||
|
24 | ||||
|
25 | Performance | |||
|
26 | ^^^^^^^^^^^ | |||
|
27 | ||||
|
28 | ||||
|
29 | ||||
|
30 | Fixes | |||
|
31 | ^^^^^ | |||
|
32 | ||||
|
33 | - VCSServer: fixes the file-store backend to use serialized names for filename cache of vcsserver. | |||
|
34 | ||||
|
35 | ||||
|
36 | ||||
|
37 | Upgrade notes | |||
|
38 | ^^^^^^^^^^^^^ | |||
|
39 | ||||
|
40 | - Un-scheduled release 4.27.1 addressing some new cache backed problems. |
@@ -24,7 +24,7 b' done = true' | |||||
24 |
|
24 | |||
25 | [release] |
|
25 | [release] | |
26 | state = prepared |
|
26 | state = prepared | |
27 |
version = 4.2 |
|
27 | version = 4.26.0 | |
28 |
|
28 | |||
29 | [task:generate_js_routes] |
|
29 | [task:generate_js_routes] | |
30 |
|
30 |
@@ -262,3 +262,39 b' ishell interface should be used.' | |||||
262 | In [1]: repo = Repository.get_by_repo_name('SOME_REPO_NAME') |
|
262 | In [1]: repo = Repository.get_by_repo_name('SOME_REPO_NAME') | |
263 | In [2]: repo.archived = False |
|
263 | In [2]: repo.archived = False | |
264 | In [3]: Session().add(repo);Session().commit() |
|
264 | In [3]: Session().add(repo);Session().commit() | |
|
265 | ||||
|
266 | ||||
|
267 | ||||
|
268 | ||||
|
269 | Bulk change repository owner | |||
|
270 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |||
|
271 | ||||
|
272 | Here's how one can change an owner of repository for an user who has been de activated. | |||
|
273 | Settings a new owner can be done via ishell for all repositories that past owner had. | |||
|
274 | ||||
|
275 | do run this script the interactive ishell interface should be used. | |||
|
276 | ||||
|
277 | .. code-block:: bash | |||
|
278 | ||||
|
279 | # Open iShell from the terminal | |||
|
280 | $ rccontrol ishell enterprise-1/community-1 | |||
|
281 | ||||
|
282 | ||||
|
283 | .. code-block:: python | |||
|
284 | ||||
|
285 | from rhodecode.model.db import User, Repository, Session | |||
|
286 | from rhodecode.model.permission import PermissionModel | |||
|
287 | ||||
|
288 | # replace old-owner and new-owner with your exact users | |||
|
289 | old_owner = User.get_by_username('old-owner') | |||
|
290 | new_owner = User.get_by_username('new-owner') | |||
|
291 | ||||
|
292 | # list of users we need to "flush" permissions | |||
|
293 | affected_user_ids = [new_owner.user_id, old_owner.user_id] | |||
|
294 | ||||
|
295 | for repo in Repository.get_all_repos(user_id=old_owner.user_id): | |||
|
296 | repo.user = new_owner | |||
|
297 | Session().add(repo) | |||
|
298 | Session().commit() | |||
|
299 | ||||
|
300 | PermissionModel().trigger_permission_flush(affected_user_ids) |
@@ -9,6 +9,7 b' Release Notes' | |||||
9 | .. toctree:: |
|
9 | .. toctree:: | |
10 | :maxdepth: 1 |
|
10 | :maxdepth: 1 | |
11 |
|
11 | |||
|
12 | release-notes-4.27.1.rst | |||
12 | release-notes-4.27.0.rst |
|
13 | release-notes-4.27.0.rst | |
13 | release-notes-4.26.0.rst |
|
14 | release-notes-4.26.0.rst | |
14 | release-notes-4.25.2.rst |
|
15 | release-notes-4.25.2.rst |
@@ -1883,7 +1883,7 b' self: super: {' | |||||
1883 | }; |
|
1883 | }; | |
1884 | }; |
|
1884 | }; | |
1885 | "rhodecode-enterprise-ce" = super.buildPythonPackage { |
|
1885 | "rhodecode-enterprise-ce" = super.buildPythonPackage { | |
1886 |
name = "rhodecode-enterprise-ce-4.27. |
|
1886 | name = "rhodecode-enterprise-ce-4.27.1"; | |
1887 | buildInputs = [ |
|
1887 | buildInputs = [ | |
1888 | self."pytest" |
|
1888 | self."pytest" | |
1889 | self."py" |
|
1889 | self."py" |
@@ -185,8 +185,10 b' class RemoteRepo(object):' | |||||
185 | self.url = remote_maker.url |
|
185 | self.url = remote_maker.url | |
186 | self.stream_url = remote_maker.stream_url |
|
186 | self.stream_url = remote_maker.stream_url | |
187 | self._session = remote_maker._session_factory() |
|
187 | self._session = remote_maker._session_factory() | |
|
188 | ||||
|
189 | cache_repo_id = self._repo_id_sanitizer(repo_id) | |||
188 | self._cache_region, self._cache_namespace = \ |
|
190 | self._cache_region, self._cache_namespace = \ | |
189 |
remote_maker.init_cache_region( |
|
191 | remote_maker.init_cache_region(cache_repo_id) | |
190 |
|
192 | |||
191 | with_wire = with_wire or {} |
|
193 | with_wire = with_wire or {} | |
192 |
|
194 | |||
@@ -194,6 +196,7 b' class RemoteRepo(object):' | |||||
194 | self._wire = { |
|
196 | self._wire = { | |
195 | "path": path, # repo path |
|
197 | "path": path, # repo path | |
196 | "repo_id": repo_id, |
|
198 | "repo_id": repo_id, | |
|
199 | "cache_repo_id": cache_repo_id, | |||
197 | "config": config, |
|
200 | "config": config, | |
198 | "repo_state_uid": repo_state_uid, |
|
201 | "repo_state_uid": repo_state_uid, | |
199 | "context": self._create_vcs_cache_context(path, repo_state_uid) |
|
202 | "context": self._create_vcs_cache_context(path, repo_state_uid) | |
@@ -210,7 +213,7 b' class RemoteRepo(object):' | |||||
210 | self.cert_dir = get_cert_path(rhodecode.CONFIG.get('__file__')) |
|
213 | self.cert_dir = get_cert_path(rhodecode.CONFIG.get('__file__')) | |
211 |
|
214 | |||
212 | def _repo_id_sanitizer(self, repo_id): |
|
215 | def _repo_id_sanitizer(self, repo_id): | |
213 | return repo_id.replace('/', '__') |
|
216 | return repo_id.replace('/', '__').replace('-', '_') | |
214 |
|
217 | |||
215 | def __getattr__(self, name): |
|
218 | def __getattr__(self, name): | |
216 |
|
219 |
General Comments 0
You need to be logged in to leave comments.
Login now