diff --git a/CHANGELOG.md b/CHANGELOG.md index bf528e16fd..172388c1dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,14 +38,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy headers added to all responses - Support for go-git user agents (e.g. ArgoCD ≥ 2.14) (Patch from 2.46.6) -## [3.7.6] - 2025-08-19 -### Fixed -- Support for go-git user agents (e.g. ArgoCD ≥ 2.14) (Patch from 2.46.6) - -## [2.46.6] - 2025-08-19 -### Fixed -- Support for go-git user agents (e.g. ArgoCD ≥ 2.14) - ## [3.9.0] - 2025-08-01 ### Added - Delete and retain functionality for mutable queryable stores @@ -110,6 +102,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Disabling hg repositories is now the first setting within the configuration form - Disabling svn repositories is now the first setting within the configuration form +## [3.7.7] - 2025-11-28 +### Fixed +- Significantly improved repository load times for large numbers of repositories + +## [3.7.6] - 2025-08-19 +### Fixed +- The committer in squash merge, rebase, and regular merge is now set to the current user. +- Support for go-git user agents (e.g. ArgoCD ≥ 2.14) (Patch from 2.46.6) + ## [3.7.5] - 2025-04-14 ### Fixed - Fix setting of document title for create repository page, if only a translation key was provided @@ -157,10 +158,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixes from version 2.46.2, 2.46.3, 2.46.4, and 2.46.5 -## [2.46.5] - 2025-01-17 -### Fixed -- Removed the API token error log message that was being printed when the API token was invalid - ## [3.6.0] - 2024-12-05 ### Added - Extension point for contributor row in contributor table @@ -414,6 +411,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The chip input api now provides an external add button - OmniSearchbar now makes use of the Combobox +## [2.46.6] - 2025-08-19 +### Fixed +- Support for go-git user agents (e.g. ArgoCD ≥ 2.14) + +## [2.46.5] - 2025-01-17 +### Fixed +- Removed the API token error log message that was being printed when the API token was invalid + ## [2.46.4] - 2024-06-24 ### Fixed - Check for already existing Namespace and Name when renaming a repository @@ -1813,6 +1818,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [3.7.3]: https://scm-manager.org/download/3.7.3 [3.7.4]: https://scm-manager.org/download/3.7.4 [3.7.5]: https://scm-manager.org/download/3.7.5 +[3.7.6]: https://scm-manager.org/download/3.7.6 +[3.7.7]: https://scm-manager.org/download/3.7.7 [3.8.0]: https://scm-manager.org/download/3.8.0 [3.9.0]: https://scm-manager.org/download/3.9.0 [3.10.0]: https://scm-manager.org/download/3.10.0 diff --git a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java index 3267ede87c..b511ff2e3a 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java @@ -55,6 +55,7 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; import java.util.stream.Collector; +import java.util.stream.Stream; import static java.util.Collections.emptySet; import static sonia.scm.AlreadyExistsException.alreadyExists; @@ -373,6 +374,16 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager { return repositories; } + private Stream streamAll(Predicate filter) { + return repositoryDAO + .getAll() + .stream() + .filter(repository -> handlerMap.containsKey(repository.getType())) + .filter(filter) + .filter(repository -> RepositoryPermissions.read().isPermitted(repository)) + .map(this::postProcess); + } + @Override public Collection getAll() { return getAll(repository -> true, null); @@ -402,9 +413,10 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager { @Deprecated @Override public Collection getAllNamespaces() { - return getAll().stream() - .map(Repository::getNamespace) - .collect(LINKED_HASH_SET_COLLECTOR); + Set foundNamespaces = new HashSet<>(); + streamAll(repository -> !foundNamespaces.contains(repository.getNamespace())) + .forEach(repository -> foundNamespaces.add(repository.getNamespace())); + return foundNamespaces; } @Override diff --git a/yarn.lock b/yarn.lock index 336a8939ae..8e0c4fdc1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3148,7 +3148,7 @@ unist-util-generated "^1.1.6" unist-util-visit "^2.0.3" -"@scm-manager/tsconfig@^2.12.0", "@scm-manager/tsconfig@^2.13.0": +"@scm-manager/tsconfig@^2.13.0": version "2.13.0" resolved "https://registry.npmjs.org/@scm-manager/tsconfig/-/tsconfig-2.13.0.tgz" integrity sha512-Tc9LZAxHUKd+yVBHcCMyRVYTBjhJez+zj+ABxiTOdZOQp/WtJ2Zt084HWxWEOyrXHI6dgo3qv+1H6P1m+UcpoQ==