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 | 25 | [release] |
|
26 | 26 | state = prepared |
|
27 |
version = 4.2 |
|
|
27 | version = 4.26.0 | |
|
28 | 28 | |
|
29 | 29 | [task:generate_js_routes] |
|
30 | 30 |
@@ -262,3 +262,39 b' ishell interface should be used.' | |||
|
262 | 262 | In [1]: repo = Repository.get_by_repo_name('SOME_REPO_NAME') |
|
263 | 263 | In [2]: repo.archived = False |
|
264 | 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 | 9 | .. toctree:: |
|
10 | 10 | :maxdepth: 1 |
|
11 | 11 | |
|
12 | release-notes-4.27.1.rst | |
|
12 | 13 | release-notes-4.27.0.rst |
|
13 | 14 | release-notes-4.26.0.rst |
|
14 | 15 | release-notes-4.25.2.rst |
@@ -1883,7 +1883,7 b' self: super: {' | |||
|
1883 | 1883 | }; |
|
1884 | 1884 | }; |
|
1885 | 1885 | "rhodecode-enterprise-ce" = super.buildPythonPackage { |
|
1886 |
name = "rhodecode-enterprise-ce-4.27. |
|
|
1886 | name = "rhodecode-enterprise-ce-4.27.1"; | |
|
1887 | 1887 | buildInputs = [ |
|
1888 | 1888 | self."pytest" |
|
1889 | 1889 | self."py" |
@@ -185,8 +185,10 b' class RemoteRepo(object):' | |||
|
185 | 185 | self.url = remote_maker.url |
|
186 | 186 | self.stream_url = remote_maker.stream_url |
|
187 | 187 | self._session = remote_maker._session_factory() |
|
188 | ||
|
189 | cache_repo_id = self._repo_id_sanitizer(repo_id) | |
|
188 | 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 | 193 | with_wire = with_wire or {} |
|
192 | 194 | |
@@ -194,6 +196,7 b' class RemoteRepo(object):' | |||
|
194 | 196 | self._wire = { |
|
195 | 197 | "path": path, # repo path |
|
196 | 198 | "repo_id": repo_id, |
|
199 | "cache_repo_id": cache_repo_id, | |
|
197 | 200 | "config": config, |
|
198 | 201 | "repo_state_uid": repo_state_uid, |
|
199 | 202 | "context": self._create_vcs_cache_context(path, repo_state_uid) |
@@ -210,7 +213,7 b' class RemoteRepo(object):' | |||
|
210 | 213 | self.cert_dir = get_cert_path(rhodecode.CONFIG.get('__file__')) |
|
211 | 214 | |
|
212 | 215 | def _repo_id_sanitizer(self, repo_id): |
|
213 | return repo_id.replace('/', '__') | |
|
216 | return repo_id.replace('/', '__').replace('-', '_') | |
|
214 | 217 | |
|
215 | 218 | def __getattr__(self, name): |
|
216 | 219 |
General Comments 0
You need to be logged in to leave comments.
Login now