From 8fe612cc068162c406ad866853b2bfd62f375581 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 20 Oct 2020 10:24:31 +0200 Subject: [PATCH 01/22] create lookup command --- .../sonia/scm/repository/api/Command.java | 7 ++- .../repository/api/LookupCommandBuilder.java | 49 +++++++++++++++++ .../scm/repository/api/RepositoryService.java | 14 +++++ .../scm/repository/spi/LookupCommand.java | 35 ++++++++++++ .../repository/spi/LookupCommandRequest.java | 35 ++++++++++++ .../spi/RepositoryServiceProvider.java | 8 +++ .../scm/repository/spi/SvnLookupCommand.java | 55 +++++++++++++++++++ .../spi/SvnRepositoryServiceProvider.java | 4 +- 8 files changed, 205 insertions(+), 2 deletions(-) create mode 100644 scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java create mode 100644 scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java create mode 100644 scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java create mode 100644 scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java diff --git a/scm-core/src/main/java/sonia/scm/repository/api/Command.java b/scm-core/src/main/java/sonia/scm/repository/api/Command.java index d00c898233..5f3e060165 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/Command.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/Command.java @@ -57,5 +57,10 @@ public enum Command /** * @since 2.0 */ - MODIFICATIONS, MERGE, DIFF_RESULT, BRANCH, MODIFY; + MODIFICATIONS, MERGE, DIFF_RESULT, BRANCH, MODIFY, + + /** + * @since 2.8.0 + */ + LOOKUP; } diff --git a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java new file mode 100644 index 0000000000..bc083521ac --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package sonia.scm.repository.api; + +import sonia.scm.repository.spi.LookupCommand; +import sonia.scm.repository.spi.LookupCommandRequest; + +/** + * The lookup command executes a lookup for additional repository information. + * + * @since 2.8.0 + */ +public class LookupCommandBuilder { + + private final LookupCommand lookupCommand; + private final LookupCommandRequest request = new LookupCommandRequest(); + + public LookupCommandBuilder(LookupCommand lookupCommand) { + this.lookupCommand = lookupCommand; + } + + public T lookup(Class type, String... args) { + request.setType(type); + request.setArgs(args); + return lookupCommand.lookup(request); + } +} diff --git a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java index aa2a41782d..f0ffcec338 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java @@ -429,6 +429,20 @@ public final class RepositoryService implements Closeable { return new ModifyCommandBuilder(provider.getModifyCommand(), workdirProvider, eMail); } + /** + * The lookup command executes a lookup which returns additional information for the repository. + * + * @return instance of {@link LookupCommandBuilder} + * @throws CommandNotSupportedException if the command is not supported + * by the implementation of the repository service provider. + * @since 2.8.0 + */ + public LookupCommandBuilder getLookupCommand() { + LOG.debug("create lookup command for repository {}", + repository.getNamespaceAndName()); + return new LookupCommandBuilder(provider.getLookupCommand()); + } + /** * Returns true if the command is supported by the repository service. * diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java new file mode 100644 index 0000000000..5d9cf64060 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java @@ -0,0 +1,35 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package sonia.scm.repository.spi; + +public interface LookupCommand { + + /** + * Executes lookup for given parameters. + * @param request Arguments provided for the lookup. + * @return Result of provided type. + */ + T lookup(LookupCommandRequest request); +} diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java new file mode 100644 index 0000000000..a3ceb13414 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java @@ -0,0 +1,35 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package sonia.scm.repository.spi; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class LookupCommandRequest { + private Class type; + private String[] args; +} diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java b/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java index 6bde899617..f5e52e294c 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java @@ -274,4 +274,12 @@ public abstract class RepositoryServiceProvider implements Closeable { throw new CommandNotSupportedException(Command.MODIFY); } + + /** + * @since 2.8.0 + */ + public LookupCommand getLookupCommand() + { + throw new CommandNotSupportedException(Command.LOOKUP); + } } diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java new file mode 100644 index 0000000000..908d618bec --- /dev/null +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java @@ -0,0 +1,55 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package sonia.scm.repository.spi; + +import lombok.extern.slf4j.Slf4j; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.io.SVNRepository; + +import java.util.Arrays; + +@Slf4j +public class SvnLookupCommand extends AbstractSvnCommand implements LookupCommand { + + protected SvnLookupCommand(SvnContext context) { + super(context); + } + + @Override + public T lookup(LookupCommandRequest request) { + try { + SVNRepository repository = context.open(); + if (request.getArgs()[0].equalsIgnoreCase("props")) { + if (Arrays.stream(request.getArgs()).anyMatch(a -> a.equalsIgnoreCase("uuid"))) { + return (T) repository.getRepositoryUUID(false); + } + } + } catch (SVNException | ClassCastException e) { + log.error("Invalid lookup request", e); + } + + return null; + } +} diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java index 1548fba869..827f9dfb03 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java @@ -46,7 +46,7 @@ public class SvnRepositoryServiceProvider extends RepositoryServiceProvider //J- public static final Set COMMANDS = ImmutableSet.of( Command.BLAME, Command.BROWSE, Command.CAT, Command.DIFF, - Command.LOG, Command.BUNDLE, Command.UNBUNDLE, Command.MODIFY + Command.LOG, Command.BUNDLE, Command.UNBUNDLE, Command.MODIFY, Command.LOOKUP ); //J+ @@ -156,6 +156,8 @@ public class SvnRepositoryServiceProvider extends RepositoryServiceProvider return new SvnModifyCommand(context, workingCopyFactory); } + public LookupCommand getLookupCommand() { return new SvnLookupCommand(context);} + /** * Method description * From 018ebf03ba549813c11e85edb803822464872631 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 20 Oct 2020 13:14:03 +0200 Subject: [PATCH 02/22] fix unit test --- .../test/java/sonia/scm/api/v2/resources/MeResourceTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/MeResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/MeResourceTest.java index 953f4638ad..e25576f2a3 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/MeResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/MeResourceTest.java @@ -43,6 +43,7 @@ import sonia.scm.ContextEntry; import sonia.scm.group.GroupCollector; import sonia.scm.security.ApiKey; import sonia.scm.security.ApiKeyService; +import sonia.scm.user.EMail; import sonia.scm.user.InvalidPasswordException; import sonia.scm.user.User; import sonia.scm.user.UserManager; @@ -96,6 +97,9 @@ public class MeResourceTest { @Mock private ApiKeyService apiKeyService; + @Mock + private EMail eMail; + @InjectMocks private MeDtoFactory meDtoFactory; @InjectMocks From c005944a5c0f2e8875e1e6e80905b7cdbea465e6 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 20 Oct 2020 14:07:06 +0200 Subject: [PATCH 03/22] wrap lookup command result in java.util.Optional to clarify api --- .../repository/api/LookupCommandBuilder.java | 4 +- .../scm/repository/spi/LookupCommand.java | 5 +- .../scm/repository/spi/SvnLookupCommand.java | 29 ++++--- .../repository/spi/SvnLookupCommandTest.java | 80 +++++++++++++++++++ 4 files changed, 107 insertions(+), 11 deletions(-) create mode 100644 scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java diff --git a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java index bc083521ac..61f4be80a8 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java @@ -27,6 +27,8 @@ package sonia.scm.repository.api; import sonia.scm.repository.spi.LookupCommand; import sonia.scm.repository.spi.LookupCommandRequest; +import java.util.Optional; + /** * The lookup command executes a lookup for additional repository information. * @@ -41,7 +43,7 @@ public class LookupCommandBuilder { this.lookupCommand = lookupCommand; } - public T lookup(Class type, String... args) { + public Optional lookup(Class type, String... args) { request.setType(type); request.setArgs(args); return lookupCommand.lookup(request); diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java index 5d9cf64060..57cf4f7851 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java @@ -24,12 +24,15 @@ package sonia.scm.repository.spi; +import java.util.Optional; + public interface LookupCommand { /** * Executes lookup for given parameters. + * * @param request Arguments provided for the lookup. * @return Result of provided type. */ - T lookup(LookupCommandRequest request); + Optional lookup(LookupCommandRequest request); } diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java index 908d618bec..336950e8cb 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java @@ -29,6 +29,7 @@ import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.io.SVNRepository; import java.util.Arrays; +import java.util.Optional; @Slf4j public class SvnLookupCommand extends AbstractSvnCommand implements LookupCommand { @@ -38,18 +39,28 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman } @Override - public T lookup(LookupCommandRequest request) { + public Optional lookup(LookupCommandRequest request) { try { - SVNRepository repository = context.open(); - if (request.getArgs()[0].equalsIgnoreCase("props")) { - if (Arrays.stream(request.getArgs()).anyMatch(a -> a.equalsIgnoreCase("uuid"))) { - return (T) repository.getRepositoryUUID(false); - } + if (requestContainsArg(request, "props")) { + return lookupProps(request); } - } catch (SVNException | ClassCastException e) { - log.error("Invalid lookup request", e); + } catch (SVNException e) { + log.error("Lookup failed: ", e); } - return null; + return Optional.empty(); + } + + private Optional lookupProps(LookupCommandRequest request) throws SVNException { + if (requestContainsArg(request, "uuid")) { + SVNRepository repository = context.open(); + return Optional.of((T) repository.getRepositoryUUID(true)); + } + log.debug("No result found on lookup"); + return Optional.empty(); + } + + private boolean requestContainsArg(LookupCommandRequest request, String props) { + return Arrays.stream(request.getArgs()).anyMatch(a -> a.equalsIgnoreCase(props)); } } diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java new file mode 100644 index 0000000000..a9c3925954 --- /dev/null +++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java @@ -0,0 +1,80 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package sonia.scm.repository.spi; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.io.SVNRepository; + +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class SvnLookupCommandTest { + + @Mock + SvnContext context; + + @Mock + SVNRepository svnRepository; + + @InjectMocks + SvnLookupCommand command; + + @Test + void shouldReturnEmptyOptional() { + LookupCommandRequest request = new LookupCommandRequest(); + request.setType(String.class); + request.setArgs(new String[]{"props"}); + + Optional result = command.lookup(request); + + assertThat(result).isNotPresent(); + } + + @Test + void shouldReturnRepositoryUUID() throws SVNException { + String uuid = "trillian-hitchhiker-42"; + when(context.open()).thenReturn(svnRepository); + when(svnRepository.getRepositoryUUID(true)).thenReturn(uuid); + + LookupCommandRequest request = new LookupCommandRequest(); + request.setType(String.class); + request.setArgs(new String[]{"props", "uuid"}); + + Optional result = command.lookup(request); + + assertThat(result).isPresent(); + assertThat(result.get()) + .isInstanceOf(String.class) + .isEqualTo(uuid); + } +} From 96233997b453d8ddea830faed53e71bc71f3256b Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Wed, 4 Nov 2020 09:27:16 +0100 Subject: [PATCH 04/22] change SvnLookupCommand implementation to match the svn lookup api --- .../java/sonia/scm/repository/spi/SvnLookupCommand.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java index 336950e8cb..14119cd851 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java @@ -28,7 +28,6 @@ import lombok.extern.slf4j.Slf4j; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.io.SVNRepository; -import java.util.Arrays; import java.util.Optional; @Slf4j @@ -41,7 +40,7 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman @Override public Optional lookup(LookupCommandRequest request) { try { - if (requestContainsArg(request, "props")) { + if ("propget".equalsIgnoreCase(request.getArgs()[0])) { return lookupProps(request); } } catch (SVNException e) { @@ -52,15 +51,11 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman } private Optional lookupProps(LookupCommandRequest request) throws SVNException { - if (requestContainsArg(request, "uuid")) { + if (request.getArgs()[1].equalsIgnoreCase("uuid")) { SVNRepository repository = context.open(); return Optional.of((T) repository.getRepositoryUUID(true)); } log.debug("No result found on lookup"); return Optional.empty(); } - - private boolean requestContainsArg(LookupCommandRequest request, String props) { - return Arrays.stream(request.getArgs()).anyMatch(a -> a.equalsIgnoreCase(props)); - } } From 1709fa0e3df2382c96459a1803969f2fa4141972 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 10 Nov 2020 10:08:15 +0100 Subject: [PATCH 05/22] update java doc since version --- scm-core/src/main/java/sonia/scm/repository/api/Command.java | 2 +- .../java/sonia/scm/repository/api/LookupCommandBuilder.java | 2 +- .../main/java/sonia/scm/repository/api/RepositoryService.java | 2 +- .../sonia/scm/repository/spi/RepositoryServiceProvider.java | 2 +- .../java/sonia/scm/repository/spi/SvnLookupCommandTest.java | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/api/Command.java b/scm-core/src/main/java/sonia/scm/repository/api/Command.java index 5f3e060165..4a2d3e77ae 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/Command.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/Command.java @@ -60,7 +60,7 @@ public enum Command MODIFICATIONS, MERGE, DIFF_RESULT, BRANCH, MODIFY, /** - * @since 2.8.0 + * @since 2.10.0 */ LOOKUP; } diff --git a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java index 61f4be80a8..794771d81a 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java @@ -32,7 +32,7 @@ import java.util.Optional; /** * The lookup command executes a lookup for additional repository information. * - * @since 2.8.0 + * @since 2.10.0 */ public class LookupCommandBuilder { diff --git a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java index f814ae7aab..15c2f3f523 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java @@ -436,7 +436,7 @@ public final class RepositoryService implements Closeable { * @return instance of {@link LookupCommandBuilder} * @throws CommandNotSupportedException if the command is not supported * by the implementation of the repository service provider. - * @since 2.8.0 + * @since 2.10.0 */ public LookupCommandBuilder getLookupCommand() { LOG.debug("create lookup command for repository {}", diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java b/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java index f5e52e294c..091c9b46b3 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java @@ -276,7 +276,7 @@ public abstract class RepositoryServiceProvider implements Closeable } /** - * @since 2.8.0 + * @since 2.10.0 */ public LookupCommand getLookupCommand() { diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java index a9c3925954..df4fedae92 100644 --- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java +++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java @@ -53,7 +53,7 @@ class SvnLookupCommandTest { void shouldReturnEmptyOptional() { LookupCommandRequest request = new LookupCommandRequest(); request.setType(String.class); - request.setArgs(new String[]{"props"}); + request.setArgs(new String[]{"propget"}); Optional result = command.lookup(request); @@ -68,7 +68,7 @@ class SvnLookupCommandTest { LookupCommandRequest request = new LookupCommandRequest(); request.setType(String.class); - request.setArgs(new String[]{"props", "uuid"}); + request.setArgs(new String[]{"propget", "uuid", "/"}); Optional result = command.lookup(request); From 4ed3a0aef67231be54bd2b57e0b3a0c780cf3960 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 10 Nov 2020 10:15:43 +0100 Subject: [PATCH 06/22] update CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99b640e468..b7b6e84501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased +### Added +- Lookup command which provides further repository information ([#1415](https://github.com/scm-manager/scm-manager/pull/1415)) + ## [2.9.0] - 2020-11-06 ### Added - Tracing api ([#1393](https://github.com/scm-manager/scm-manager/pull/#1393)) From c6d3a8054edfb30cb9f67e86721d8e474d954cad Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 10 Nov 2020 10:51:20 +0100 Subject: [PATCH 07/22] fix code smell --- .../main/java/sonia/scm/repository/spi/SvnLookupCommand.java | 2 +- .../sonia/scm/repository/spi/SvnRepositoryServiceProvider.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java index 14119cd851..e23018095a 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java @@ -40,7 +40,7 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman @Override public Optional lookup(LookupCommandRequest request) { try { - if ("propget".equalsIgnoreCase(request.getArgs()[0])) { + if (request.getArgs().length > 1 && "propget".equalsIgnoreCase(request.getArgs()[0])) { return lookupProps(request); } } catch (SVNException e) { diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java index 827f9dfb03..bce2d48f4b 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java @@ -156,6 +156,7 @@ public class SvnRepositoryServiceProvider extends RepositoryServiceProvider return new SvnModifyCommand(context, workingCopyFactory); } + @Override public LookupCommand getLookupCommand() { return new SvnLookupCommand(context);} /** From 10ebae4822b806e76518a106683eb69ceb57c390 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Tue, 10 Nov 2020 21:57:28 +0000 Subject: [PATCH 08/22] fix: upgrade org.mockito:mockito-core from 3.5.13 to 3.5.15 Snyk has created this PR to upgrade org.mockito:mockito-core from 3.5.13 to 3.5.15. See this package in Maven Repository: https://mvnrepository.com/artifact/org.mockito/mockito-core/ See this project in Snyk: https://app.snyk.io/org/scm-manager/project/c575ed09-e310-44e7-afc8-22b77c5873cf?utm_source=github&utm_medium=upgrade-pr --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fa8eaab8d0..dbdce60fa7 100644 --- a/pom.xml +++ b/pom.xml @@ -903,7 +903,7 @@ - 3.5.13 + 3.5.15 2.1 5.7.0 From fcd6003a4fed09f71f98c0cbb7eb39184b8aebfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 11 Nov 2020 14:46:53 +0100 Subject: [PATCH 09/22] Adhere to qit quiet flag --- CHANGELOG.md | 1 + .../sonia/scm/repository/api/GitHookMessageProvider.java | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 695fa92aa3..fec71fa110 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Fixed - Error on repository initialization with least-privilege user ([#1414](https://github.com/scm-manager/scm-manager/pull/1414)) +- Adhere to git quiet flag ([#1421](https://github.com/scm-manager/scm-manager/pull/1421)) ## [2.9.0] - 2020-11-06 ### Added diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/api/GitHookMessageProvider.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/api/GitHookMessageProvider.java index f5e451df84..b7ca70fac9 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/api/GitHookMessageProvider.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/api/GitHookMessageProvider.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository.api; //~--- non-JDK imports -------------------------------------------------------- @@ -71,7 +71,9 @@ public final class GitHookMessageProvider implements HookMessageProvider @Override public void sendMessage(String message) { - GitHooks.sendPrefixedMessage(receivePack, message); + if (!receivePack.isQuiet()) { + GitHooks.sendPrefixedMessage(receivePack, message); + } } //~--- fields --------------------------------------------------------------- From 8781a9407330d220f1d62031819b748927b2f830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 11 Nov 2020 17:05:26 +0100 Subject: [PATCH 10/22] Fix german translation file for repositories --- CHANGELOG.md | 4 ++++ scm-ui/ui-webapp/public/locales/de/repos.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99b640e468..d0f67bfdfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.9.1] - 2020-11-11 +### Fixed +- German translation for repositories view + ## [2.9.0] - 2020-11-06 ### Added - Tracing api ([#1393](https://github.com/scm-manager/scm-manager/pull/#1393)) diff --git a/scm-ui/ui-webapp/public/locales/de/repos.json b/scm-ui/ui-webapp/public/locales/de/repos.json index d3ec72b23f..d97fc9493c 100644 --- a/scm-ui/ui-webapp/public/locales/de/repos.json +++ b/scm-ui/ui-webapp/public/locales/de/repos.json @@ -279,4 +279,4 @@ "clickHere": "Klicken Sie hier um Ihre Datei hochzuladen.", "dragAndDrop": "Sie können Ihre Datei auch direkt in die Dropzone ziehen." } -}, +} From bc4c2df27c1674bb465e26c6cdcbea1e6a02ad38 Mon Sep 17 00:00:00 2001 From: CES Marvin Date: Wed, 11 Nov 2020 17:15:36 +0000 Subject: [PATCH 11/22] release version 2.9.1 --- lerna.json | 2 +- pom.xml | 2 +- scm-annotation-processor/pom.xml | 6 ++--- scm-annotations/pom.xml | 4 +-- scm-core/pom.xml | 8 +++--- scm-dao-xml/pom.xml | 8 +++--- scm-it/pom.xml | 20 +++++++------- scm-packaging/deb/pom.xml | 6 ++--- scm-packaging/docker/pom.xml | 4 +-- scm-packaging/helm/pom.xml | 4 +-- scm-packaging/pom.xml | 4 +-- scm-packaging/release-yaml/pom.xml | 4 +-- scm-packaging/rpm/pom.xml | 6 ++--- scm-packaging/unix/pom.xml | 4 +-- scm-packaging/windows/pom.xml | 4 +-- scm-plugins/pom.xml | 10 +++---- scm-plugins/scm-git-plugin/package.json | 4 +-- scm-plugins/scm-git-plugin/pom.xml | 2 +- scm-plugins/scm-hg-plugin/package.json | 4 +-- scm-plugins/scm-hg-plugin/pom.xml | 2 +- .../scm-integration-test-plugin/pom.xml | 4 +-- scm-plugins/scm-legacy-plugin/package.json | 4 +-- scm-plugins/scm-legacy-plugin/pom.xml | 4 +-- scm-plugins/scm-svn-plugin/package.json | 4 +-- scm-plugins/scm-svn-plugin/pom.xml | 2 +- scm-server/pom.xml | 4 +-- scm-test/pom.xml | 6 ++--- scm-ui/babel-preset/package.json | 2 +- scm-ui/e2e-tests/package.json | 2 +- scm-ui/eslint-config/package.json | 2 +- scm-ui/jest-preset/package.json | 2 +- scm-ui/pom.xml | 4 +-- scm-ui/prettier-config/package.json | 2 +- scm-ui/tsconfig/package.json | 2 +- scm-ui/ui-components/package.json | 8 +++--- scm-ui/ui-extensions/package.json | 2 +- scm-ui/ui-plugins/package.json | 22 ++++++++-------- scm-ui/ui-polyfill/package.json | 2 +- scm-ui/ui-scripts/package.json | 2 +- scm-ui/ui-styles/package.json | 2 +- scm-ui/ui-tests/package.json | 2 +- scm-ui/ui-types/package.json | 2 +- scm-ui/ui-webapp/package.json | 8 +++--- scm-webapp/pom.xml | 26 +++++++++---------- 44 files changed, 114 insertions(+), 114 deletions(-) diff --git a/lerna.json b/lerna.json index 210af935bc..599eefc7c6 100644 --- a/lerna.json +++ b/lerna.json @@ -5,5 +5,5 @@ ], "npmClient": "yarn", "useWorkspaces": true, - "version": "2.10.0-SNAPSHOT" + "version": "2.9.1" } diff --git a/pom.xml b/pom.xml index fa8eaab8d0..6562f20403 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ sonia.scm scm pom - 2.10.0-SNAPSHOT + 2.9.1 The easiest way to share your Git, Mercurial and Subversion repositories. diff --git a/scm-annotation-processor/pom.xml b/scm-annotation-processor/pom.xml index 62087852cd..ae9d37d7c9 100644 --- a/scm-annotation-processor/pom.xml +++ b/scm-annotation-processor/pom.xml @@ -31,12 +31,12 @@ sonia.scm scm - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm scm-annotation-processor - 2.10.0-SNAPSHOT + 2.9.1 scm-annotation-processor @@ -46,7 +46,7 @@ sonia.scm scm-annotations - 2.10.0-SNAPSHOT + 2.9.1 diff --git a/scm-annotations/pom.xml b/scm-annotations/pom.xml index 6e70ada1ab..e7bc619b56 100644 --- a/scm-annotations/pom.xml +++ b/scm-annotations/pom.xml @@ -31,11 +31,11 @@ sonia.scm scm - 2.10.0-SNAPSHOT + 2.9.1 scm-annotations - 2.10.0-SNAPSHOT + 2.9.1 scm-annotations diff --git a/scm-core/pom.xml b/scm-core/pom.xml index 85a539c471..5166d85483 100644 --- a/scm-core/pom.xml +++ b/scm-core/pom.xml @@ -31,11 +31,11 @@ scm sonia.scm - 2.10.0-SNAPSHOT + 2.9.1 scm-core - 2.10.0-SNAPSHOT + 2.9.1 scm-core @@ -54,7 +54,7 @@ sonia.scm scm-annotations - 2.10.0-SNAPSHOT + 2.9.1 @@ -227,7 +227,7 @@ sonia.scm scm-annotation-processor - 2.10.0-SNAPSHOT + 2.9.1 provided diff --git a/scm-dao-xml/pom.xml b/scm-dao-xml/pom.xml index 0f43eafa51..2484843237 100644 --- a/scm-dao-xml/pom.xml +++ b/scm-dao-xml/pom.xml @@ -31,11 +31,11 @@ sonia.scm scm - 2.10.0-SNAPSHOT + 2.9.1 scm-dao-xml - 2.10.0-SNAPSHOT + 2.9.1 scm-dao-xml @@ -50,7 +50,7 @@ sonia.scm scm-core - 2.10.0-SNAPSHOT + 2.9.1 @@ -58,7 +58,7 @@ sonia.scm scm-test - 2.10.0-SNAPSHOT + 2.9.1 test diff --git a/scm-it/pom.xml b/scm-it/pom.xml index 1817845989..cf115c7621 100644 --- a/scm-it/pom.xml +++ b/scm-it/pom.xml @@ -31,40 +31,40 @@ sonia.scm scm - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm scm-it war - 2.10.0-SNAPSHOT + 2.9.1 scm-it sonia.scm scm-core - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm scm-test - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm.plugins scm-git-plugin - 2.10.0-SNAPSHOT + 2.9.1 test sonia.scm.plugins scm-git-plugin - 2.10.0-SNAPSHOT + 2.9.1 tests test @@ -72,14 +72,14 @@ sonia.scm.plugins scm-hg-plugin - 2.10.0-SNAPSHOT + 2.9.1 test sonia.scm.plugins scm-hg-plugin - 2.10.0-SNAPSHOT + 2.9.1 tests test @@ -87,14 +87,14 @@ sonia.scm.plugins scm-svn-plugin - 2.10.0-SNAPSHOT + 2.9.1 test sonia.scm.plugins scm-svn-plugin - 2.10.0-SNAPSHOT + 2.9.1 tests test diff --git a/scm-packaging/deb/pom.xml b/scm-packaging/deb/pom.xml index 569e1d9e73..6ce93c7b87 100644 --- a/scm-packaging/deb/pom.xml +++ b/scm-packaging/deb/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.10.0-SNAPSHOT + 2.9.1 deb deb - 2.10.0-SNAPSHOT + 2.9.1 Packaging for Debian/Ubuntu deb @@ -46,7 +46,7 @@ sonia.scm scm-server - 2.10.0-SNAPSHOT + 2.9.1 diff --git a/scm-packaging/docker/pom.xml b/scm-packaging/docker/pom.xml index b12f198695..353799421b 100644 --- a/scm-packaging/docker/pom.xml +++ b/scm-packaging/docker/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.10.0-SNAPSHOT + 2.9.1 docker pom - 2.10.0-SNAPSHOT + 2.9.1 diff --git a/scm-packaging/helm/pom.xml b/scm-packaging/helm/pom.xml index 2a642dee27..c4c485c5d3 100644 --- a/scm-packaging/helm/pom.xml +++ b/scm-packaging/helm/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.10.0-SNAPSHOT + 2.9.1 helm helm - 2.10.0-SNAPSHOT + 2.9.1 3.2.1 diff --git a/scm-packaging/pom.xml b/scm-packaging/pom.xml index faf3e5d404..c9433ccaef 100644 --- a/scm-packaging/pom.xml +++ b/scm-packaging/pom.xml @@ -31,13 +31,13 @@ sonia.scm scm - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm.packaging scm-packaging pom - 2.10.0-SNAPSHOT + 2.9.1 packages.scm-manager.org diff --git a/scm-packaging/release-yaml/pom.xml b/scm-packaging/release-yaml/pom.xml index f2bb1e07d2..32669e80ae 100644 --- a/scm-packaging/release-yaml/pom.xml +++ b/scm-packaging/release-yaml/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.10.0-SNAPSHOT + 2.9.1 release-yaml pom - 2.10.0-SNAPSHOT + 2.9.1 diff --git a/scm-packaging/rpm/pom.xml b/scm-packaging/rpm/pom.xml index 98b4dacad7..1867579c1c 100644 --- a/scm-packaging/rpm/pom.xml +++ b/scm-packaging/rpm/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.10.0-SNAPSHOT + 2.9.1 rpm rpm - 2.10.0-SNAPSHOT + 2.9.1 Packaging for RedHat/Centos/Fedora rpm @@ -52,7 +52,7 @@ sonia.scm scm-server - 2.10.0-SNAPSHOT + 2.9.1 diff --git a/scm-packaging/unix/pom.xml b/scm-packaging/unix/pom.xml index 41063ca51d..0af5d88bdc 100644 --- a/scm-packaging/unix/pom.xml +++ b/scm-packaging/unix/pom.xml @@ -31,12 +31,12 @@ sonia.scm.packaging scm-packaging - 2.10.0-SNAPSHOT + 2.9.1 unix pom - 2.10.0-SNAPSHOT + 2.9.1 diff --git a/scm-packaging/windows/pom.xml b/scm-packaging/windows/pom.xml index 617f6a8b34..3663e3b65c 100644 --- a/scm-packaging/windows/pom.xml +++ b/scm-packaging/windows/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.10.0-SNAPSHOT + 2.9.1 windows pom - 2.10.0-SNAPSHOT + 2.9.1 diff --git a/scm-plugins/pom.xml b/scm-plugins/pom.xml index 33b1061c3f..d3426f655c 100644 --- a/scm-plugins/pom.xml +++ b/scm-plugins/pom.xml @@ -31,13 +31,13 @@ sonia.scm scm - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm.plugins scm-plugins pom - 2.10.0-SNAPSHOT + 2.9.1 scm-plugins @@ -60,7 +60,7 @@ sonia.scm scm-core - 2.10.0-SNAPSHOT + 2.9.1 provided @@ -69,7 +69,7 @@ sonia.scm scm-annotation-processor - 2.10.0-SNAPSHOT + 2.9.1 provided @@ -99,7 +99,7 @@ sonia.scm scm-test - 2.10.0-SNAPSHOT + 2.9.1 test diff --git a/scm-plugins/scm-git-plugin/package.json b/scm-plugins/scm-git-plugin/package.json index a0ca9cf3ac..12d708deae 100644 --- a/scm-plugins/scm-git-plugin/package.json +++ b/scm-plugins/scm-git-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@scm-manager/scm-git-plugin", "private": true, - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "license": "MIT", "main": "./src/main/js/index.ts", "scripts": { @@ -20,6 +20,6 @@ }, "prettier": "@scm-manager/prettier-config", "dependencies": { - "@scm-manager/ui-plugins": "^2.10.0-SNAPSHOT" + "@scm-manager/ui-plugins": "^2.9.1" } } diff --git a/scm-plugins/scm-git-plugin/pom.xml b/scm-plugins/scm-git-plugin/pom.xml index 23c7e50527..16edab0ee6 100644 --- a/scm-plugins/scm-git-plugin/pom.xml +++ b/scm-plugins/scm-git-plugin/pom.xml @@ -31,7 +31,7 @@ scm-plugins sonia.scm.plugins - 2.10.0-SNAPSHOT + 2.9.1 scm-git-plugin diff --git a/scm-plugins/scm-hg-plugin/package.json b/scm-plugins/scm-hg-plugin/package.json index 107dde3e2e..ded57707d6 100644 --- a/scm-plugins/scm-hg-plugin/package.json +++ b/scm-plugins/scm-hg-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@scm-manager/scm-hg-plugin", "private": true, - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "license": "MIT", "main": "./src/main/js/index.ts", "scripts": { @@ -19,6 +19,6 @@ }, "prettier": "@scm-manager/prettier-config", "dependencies": { - "@scm-manager/ui-plugins": "^2.10.0-SNAPSHOT" + "@scm-manager/ui-plugins": "^2.9.1" } } diff --git a/scm-plugins/scm-hg-plugin/pom.xml b/scm-plugins/scm-hg-plugin/pom.xml index a6f125a6f9..b9410c3646 100644 --- a/scm-plugins/scm-hg-plugin/pom.xml +++ b/scm-plugins/scm-hg-plugin/pom.xml @@ -31,7 +31,7 @@ sonia.scm.plugins scm-plugins - 2.10.0-SNAPSHOT + 2.9.1 scm-hg-plugin diff --git a/scm-plugins/scm-integration-test-plugin/pom.xml b/scm-plugins/scm-integration-test-plugin/pom.xml index e4575edcf6..3b4d7eab00 100644 --- a/scm-plugins/scm-integration-test-plugin/pom.xml +++ b/scm-plugins/scm-integration-test-plugin/pom.xml @@ -29,12 +29,12 @@ sonia.scm.plugins scm-plugins - 2.10.0-SNAPSHOT + 2.9.1 scm-integration-test-plugin Add functions for integration tests. This is not intended for production systems. - 2.10.0-SNAPSHOT + 2.9.1 smp diff --git a/scm-plugins/scm-legacy-plugin/package.json b/scm-plugins/scm-legacy-plugin/package.json index 2772a2c2b2..2fe601e7c9 100644 --- a/scm-plugins/scm-legacy-plugin/package.json +++ b/scm-plugins/scm-legacy-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@scm-manager/scm-legacy-plugin", "private": true, - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "license": "MIT", "main": "./src/main/js/index.tsx", "scripts": { @@ -19,6 +19,6 @@ }, "prettier": "@scm-manager/prettier-config", "dependencies": { - "@scm-manager/ui-plugins": "^2.10.0-SNAPSHOT" + "@scm-manager/ui-plugins": "^2.9.1" } } diff --git a/scm-plugins/scm-legacy-plugin/pom.xml b/scm-plugins/scm-legacy-plugin/pom.xml index 30fe94e9a8..8cc9f0da66 100644 --- a/scm-plugins/scm-legacy-plugin/pom.xml +++ b/scm-plugins/scm-legacy-plugin/pom.xml @@ -29,12 +29,12 @@ sonia.scm.plugins scm-plugins - 2.10.0-SNAPSHOT + 2.9.1 scm-legacy-plugin Support migrated repository urls and v1 passwords - 2.10.0-SNAPSHOT + 2.9.1 smp diff --git a/scm-plugins/scm-svn-plugin/package.json b/scm-plugins/scm-svn-plugin/package.json index b8dbeed962..416c7aaf4e 100644 --- a/scm-plugins/scm-svn-plugin/package.json +++ b/scm-plugins/scm-svn-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@scm-manager/scm-svn-plugin", "private": true, - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "license": "MIT", "main": "./src/main/js/index.ts", "scripts": { @@ -19,6 +19,6 @@ }, "prettier": "@scm-manager/prettier-config", "dependencies": { - "@scm-manager/ui-plugins": "^2.10.0-SNAPSHOT" + "@scm-manager/ui-plugins": "^2.9.1" } } diff --git a/scm-plugins/scm-svn-plugin/pom.xml b/scm-plugins/scm-svn-plugin/pom.xml index f127b00c6d..f642e530eb 100644 --- a/scm-plugins/scm-svn-plugin/pom.xml +++ b/scm-plugins/scm-svn-plugin/pom.xml @@ -31,7 +31,7 @@ scm-plugins sonia.scm.plugins - 2.10.0-SNAPSHOT + 2.9.1 scm-svn-plugin diff --git a/scm-server/pom.xml b/scm-server/pom.xml index 6016d0d537..45576f8ffa 100644 --- a/scm-server/pom.xml +++ b/scm-server/pom.xml @@ -31,12 +31,12 @@ scm sonia.scm - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm scm-server - 2.10.0-SNAPSHOT + 2.9.1 scm-server jar diff --git a/scm-test/pom.xml b/scm-test/pom.xml index 3d155f8630..d244511dc5 100644 --- a/scm-test/pom.xml +++ b/scm-test/pom.xml @@ -31,12 +31,12 @@ scm sonia.scm - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm scm-test - 2.10.0-SNAPSHOT + 2.9.1 scm-test @@ -50,7 +50,7 @@ sonia.scm scm-core - 2.10.0-SNAPSHOT + 2.9.1 diff --git a/scm-ui/babel-preset/package.json b/scm-ui/babel-preset/package.json index a37d1989f0..71367a56c1 100644 --- a/scm-ui/babel-preset/package.json +++ b/scm-ui/babel-preset/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/babel-preset", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "license": "MIT", "description": "Babel configuration for scm-manager and its plugins", "main": "index.js", diff --git a/scm-ui/e2e-tests/package.json b/scm-ui/e2e-tests/package.json index 0fbc576449..98e6abd3db 100644 --- a/scm-ui/e2e-tests/package.json +++ b/scm-ui/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/e2e-tests", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "End to end Tests for SCM-Manager", "main": "index.js", "author": "Eduard Heimbuch ", diff --git a/scm-ui/eslint-config/package.json b/scm-ui/eslint-config/package.json index 44b318c1b0..82dea4b1cf 100644 --- a/scm-ui/eslint-config/package.json +++ b/scm-ui/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/eslint-config", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "ESLint configuration for scm-manager and its plugins", "main": "src/index.js", "author": "Sebastian Sdorra ", diff --git a/scm-ui/jest-preset/package.json b/scm-ui/jest-preset/package.json index 2eeb3d2ece..9864a1a24e 100644 --- a/scm-ui/jest-preset/package.json +++ b/scm-ui/jest-preset/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/jest-preset", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "Jest presets for SCM-Manager and its plugins", "main": "src/index.js", "author": "Sebastian Sdorra ", diff --git a/scm-ui/pom.xml b/scm-ui/pom.xml index 0e9633053d..d980c0c191 100644 --- a/scm-ui/pom.xml +++ b/scm-ui/pom.xml @@ -32,13 +32,13 @@ sonia.scm scm - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm scm-ui war - 2.10.0-SNAPSHOT + 2.9.1 scm-ui diff --git a/scm-ui/prettier-config/package.json b/scm-ui/prettier-config/package.json index 9594fb3819..6ff80b4e22 100644 --- a/scm-ui/prettier-config/package.json +++ b/scm-ui/prettier-config/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/prettier-config", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "license": "MIT", "description": "Prettier configuration", "author": "Sebastian Sdorra ", diff --git a/scm-ui/tsconfig/package.json b/scm-ui/tsconfig/package.json index 1f9230a619..0770b12603 100644 --- a/scm-ui/tsconfig/package.json +++ b/scm-ui/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/tsconfig", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "license": "MIT", "description": "TypeScript configuration", "author": "Sebastian Sdorra ", diff --git a/scm-ui/ui-components/package.json b/scm-ui/ui-components/package.json index c78531db56..0455d9498b 100644 --- a/scm-ui/ui-components/package.json +++ b/scm-ui/ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-components", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "UI Components for SCM-Manager and its plugins", "main": "src/index.ts", "files": [ @@ -18,7 +18,7 @@ "update-storyshots": "jest --testPathPattern=\"storyshots.test.ts\" --collectCoverage=false -u" }, "devDependencies": { - "@scm-manager/ui-tests": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-tests": "^2.9.1", "@storybook/addon-actions": "^5.2.3", "@storybook/addon-storyshots": "^5.2.3", "@storybook/react": "^5.2.3", @@ -51,8 +51,8 @@ "worker-plugin": "^3.2.0" }, "dependencies": { - "@scm-manager/ui-extensions": "^2.10.0-SNAPSHOT", - "@scm-manager/ui-types": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-extensions": "^2.9.1", + "@scm-manager/ui-types": "^2.9.1", "classnames": "^2.2.6", "date-fns": "^2.4.1", "gitdiff-parser": "^0.1.2", diff --git a/scm-ui/ui-extensions/package.json b/scm-ui/ui-extensions/package.json index 64ee6367cc..e2f5db77c5 100644 --- a/scm-ui/ui-extensions/package.json +++ b/scm-ui/ui-extensions/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-extensions", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "main": "src/index.ts", "license": "MIT", "private": false, diff --git a/scm-ui/ui-plugins/package.json b/scm-ui/ui-plugins/package.json index 97a840f7c8..2d8f78c43c 100644 --- a/scm-ui/ui-plugins/package.json +++ b/scm-ui/ui-plugins/package.json @@ -1,13 +1,13 @@ { "name": "@scm-manager/ui-plugins", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "license": "MIT", "bin": { "ui-plugins": "./bin/ui-plugins.js" }, "dependencies": { - "@scm-manager/ui-components": "^2.10.0-SNAPSHOT", - "@scm-manager/ui-extensions": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-components": "^2.9.1", + "@scm-manager/ui-extensions": "^2.9.1", "classnames": "^2.2.6", "query-string": "^5.0.1", "react": "^16.10.2", @@ -18,14 +18,14 @@ "styled-components": "^5.1.0" }, "devDependencies": { - "@scm-manager/babel-preset": "^2.10.0-SNAPSHOT", - "@scm-manager/eslint-config": "^2.10.0-SNAPSHOT", - "@scm-manager/jest-preset": "^2.10.0-SNAPSHOT", - "@scm-manager/prettier-config": "^2.10.0-SNAPSHOT", - "@scm-manager/tsconfig": "^2.10.0-SNAPSHOT", - "@scm-manager/ui-scripts": "^2.10.0-SNAPSHOT", - "@scm-manager/ui-tests": "^2.10.0-SNAPSHOT", - "@scm-manager/ui-types": "^2.10.0-SNAPSHOT", + "@scm-manager/babel-preset": "^2.9.1", + "@scm-manager/eslint-config": "^2.9.1", + "@scm-manager/jest-preset": "^2.9.1", + "@scm-manager/prettier-config": "^2.9.1", + "@scm-manager/tsconfig": "^2.9.1", + "@scm-manager/ui-scripts": "^2.9.1", + "@scm-manager/ui-tests": "^2.9.1", + "@scm-manager/ui-types": "^2.9.1", "@types/classnames": "^2.2.9", "@types/enzyme": "^3.10.3", "@types/fetch-mock": "^7.3.1", diff --git a/scm-ui/ui-polyfill/package.json b/scm-ui/ui-polyfill/package.json index fd8b63aa29..6636a8b6ae 100644 --- a/scm-ui/ui-polyfill/package.json +++ b/scm-ui/ui-polyfill/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-polyfill", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "Polyfills for SCM-Manager UI", "main": "src/index.js", "author": "Sebastian Sdorra ", diff --git a/scm-ui/ui-scripts/package.json b/scm-ui/ui-scripts/package.json index 6132eb70bf..a6e834cc6a 100644 --- a/scm-ui/ui-scripts/package.json +++ b/scm-ui/ui-scripts/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-scripts", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "Build scripts for SCM-Manager", "main": "src/index.js", "author": "Sebastian Sdorra ", diff --git a/scm-ui/ui-styles/package.json b/scm-ui/ui-styles/package.json index 0c0df6b16b..96b5d7a478 100644 --- a/scm-ui/ui-styles/package.json +++ b/scm-ui/ui-styles/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-styles", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "Styles for SCM-Manager", "main": "src/scm.scss", "license": "MIT", diff --git a/scm-ui/ui-tests/package.json b/scm-ui/ui-tests/package.json index 706a6cb06c..0075845549 100644 --- a/scm-ui/ui-tests/package.json +++ b/scm-ui/ui-tests/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-tests", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "UI-Tests helpers", "author": "Sebastian Sdorra ", "license": "MIT", diff --git a/scm-ui/ui-types/package.json b/scm-ui/ui-types/package.json index e420646d82..e5ab6f1372 100644 --- a/scm-ui/ui-types/package.json +++ b/scm-ui/ui-types/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-types", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "description": "Flow types for SCM-Manager related Objects", "main": "src/index.ts", "files": [ diff --git a/scm-ui/ui-webapp/package.json b/scm-ui/ui-webapp/package.json index fd43d89102..62a6fe0379 100644 --- a/scm-ui/ui-webapp/package.json +++ b/scm-ui/ui-webapp/package.json @@ -1,10 +1,10 @@ { "name": "@scm-manager/ui-webapp", - "version": "2.10.0-SNAPSHOT", + "version": "2.9.1", "private": true, "dependencies": { - "@scm-manager/ui-components": "^2.10.0-SNAPSHOT", - "@scm-manager/ui-extensions": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-components": "^2.9.1", + "@scm-manager/ui-extensions": "^2.9.1", "classnames": "^2.2.5", "history": "^4.10.1", "i18next": "^19.6.0", @@ -29,7 +29,7 @@ "test": "jest" }, "devDependencies": { - "@scm-manager/ui-tests": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-tests": "^2.9.1", "@types/classnames": "^2.2.9", "@types/enzyme": "^3.10.3", "@types/fetch-mock": "^7.3.1", diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index adb0f51980..205d8b5d29 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -32,13 +32,13 @@ sonia.scm scm - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm scm-webapp war - 2.10.0-SNAPSHOT + 2.9.1 scm-webapp @@ -48,7 +48,7 @@ sonia.scm scm-annotation-processor - 2.10.0-SNAPSHOT + 2.9.1 provided @@ -73,13 +73,13 @@ sonia.scm scm-core - 2.10.0-SNAPSHOT + 2.9.1 sonia.scm scm-dao-xml - 2.10.0-SNAPSHOT + 2.9.1 @@ -343,7 +343,7 @@ sonia.scm scm-test - 2.10.0-SNAPSHOT + 2.9.1 test @@ -405,7 +405,7 @@ sonia.scm.plugins scm-git-plugin - 2.10.0-SNAPSHOT + 2.9.1 tests test @@ -413,14 +413,14 @@ sonia.scm.plugins scm-git-plugin - 2.10.0-SNAPSHOT + 2.9.1 test sonia.scm.plugins scm-hg-plugin - 2.10.0-SNAPSHOT + 2.9.1 tests test @@ -428,14 +428,14 @@ sonia.scm.plugins scm-hg-plugin - 2.10.0-SNAPSHOT + 2.9.1 test sonia.scm.plugins scm-svn-plugin - 2.10.0-SNAPSHOT + 2.9.1 tests test @@ -443,7 +443,7 @@ sonia.scm.plugins scm-svn-plugin - 2.10.0-SNAPSHOT + 2.9.1 test @@ -729,7 +729,7 @@ sonia.scm scm-ui - 2.10.0-SNAPSHOT + 2.9.1 war From 59e28ec313261fe70fa813d7d8a50d1942b8731e Mon Sep 17 00:00:00 2001 From: CES Marvin Date: Wed, 11 Nov 2020 17:48:56 +0000 Subject: [PATCH 12/22] prepare for next development iteration --- lerna.json | 2 +- pom.xml | 2 +- scm-annotation-processor/pom.xml | 6 ++--- scm-annotations/pom.xml | 4 +-- scm-core/pom.xml | 8 +++--- scm-dao-xml/pom.xml | 8 +++--- scm-it/pom.xml | 20 +++++++------- scm-packaging/deb/pom.xml | 6 ++--- scm-packaging/docker/pom.xml | 4 +-- scm-packaging/helm/pom.xml | 4 +-- scm-packaging/pom.xml | 4 +-- scm-packaging/release-yaml/pom.xml | 4 +-- scm-packaging/rpm/pom.xml | 6 ++--- scm-packaging/unix/pom.xml | 4 +-- scm-packaging/windows/pom.xml | 4 +-- scm-plugins/pom.xml | 10 +++---- scm-plugins/scm-git-plugin/package.json | 4 +-- scm-plugins/scm-git-plugin/pom.xml | 2 +- scm-plugins/scm-hg-plugin/package.json | 4 +-- scm-plugins/scm-hg-plugin/pom.xml | 2 +- .../scm-integration-test-plugin/pom.xml | 4 +-- scm-plugins/scm-legacy-plugin/package.json | 4 +-- scm-plugins/scm-legacy-plugin/pom.xml | 4 +-- scm-plugins/scm-svn-plugin/package.json | 4 +-- scm-plugins/scm-svn-plugin/pom.xml | 2 +- scm-server/pom.xml | 4 +-- scm-test/pom.xml | 6 ++--- scm-ui/babel-preset/package.json | 2 +- scm-ui/e2e-tests/package.json | 2 +- scm-ui/eslint-config/package.json | 2 +- scm-ui/jest-preset/package.json | 2 +- scm-ui/pom.xml | 4 +-- scm-ui/prettier-config/package.json | 2 +- scm-ui/tsconfig/package.json | 2 +- scm-ui/ui-components/package.json | 8 +++--- scm-ui/ui-extensions/package.json | 2 +- scm-ui/ui-plugins/package.json | 22 ++++++++-------- scm-ui/ui-polyfill/package.json | 2 +- scm-ui/ui-scripts/package.json | 2 +- scm-ui/ui-styles/package.json | 2 +- scm-ui/ui-tests/package.json | 2 +- scm-ui/ui-types/package.json | 2 +- scm-ui/ui-webapp/package.json | 8 +++--- scm-webapp/pom.xml | 26 +++++++++---------- 44 files changed, 114 insertions(+), 114 deletions(-) diff --git a/lerna.json b/lerna.json index 599eefc7c6..210af935bc 100644 --- a/lerna.json +++ b/lerna.json @@ -5,5 +5,5 @@ ], "npmClient": "yarn", "useWorkspaces": true, - "version": "2.9.1" + "version": "2.10.0-SNAPSHOT" } diff --git a/pom.xml b/pom.xml index 9ca9b53ddb..dbdce60fa7 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ sonia.scm scm pom - 2.9.1 + 2.10.0-SNAPSHOT The easiest way to share your Git, Mercurial and Subversion repositories. diff --git a/scm-annotation-processor/pom.xml b/scm-annotation-processor/pom.xml index ae9d37d7c9..62087852cd 100644 --- a/scm-annotation-processor/pom.xml +++ b/scm-annotation-processor/pom.xml @@ -31,12 +31,12 @@ sonia.scm scm - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm scm-annotation-processor - 2.9.1 + 2.10.0-SNAPSHOT scm-annotation-processor @@ -46,7 +46,7 @@ sonia.scm scm-annotations - 2.9.1 + 2.10.0-SNAPSHOT diff --git a/scm-annotations/pom.xml b/scm-annotations/pom.xml index e7bc619b56..6e70ada1ab 100644 --- a/scm-annotations/pom.xml +++ b/scm-annotations/pom.xml @@ -31,11 +31,11 @@ sonia.scm scm - 2.9.1 + 2.10.0-SNAPSHOT scm-annotations - 2.9.1 + 2.10.0-SNAPSHOT scm-annotations diff --git a/scm-core/pom.xml b/scm-core/pom.xml index 5166d85483..85a539c471 100644 --- a/scm-core/pom.xml +++ b/scm-core/pom.xml @@ -31,11 +31,11 @@ scm sonia.scm - 2.9.1 + 2.10.0-SNAPSHOT scm-core - 2.9.1 + 2.10.0-SNAPSHOT scm-core @@ -54,7 +54,7 @@ sonia.scm scm-annotations - 2.9.1 + 2.10.0-SNAPSHOT @@ -227,7 +227,7 @@ sonia.scm scm-annotation-processor - 2.9.1 + 2.10.0-SNAPSHOT provided diff --git a/scm-dao-xml/pom.xml b/scm-dao-xml/pom.xml index 2484843237..0f43eafa51 100644 --- a/scm-dao-xml/pom.xml +++ b/scm-dao-xml/pom.xml @@ -31,11 +31,11 @@ sonia.scm scm - 2.9.1 + 2.10.0-SNAPSHOT scm-dao-xml - 2.9.1 + 2.10.0-SNAPSHOT scm-dao-xml @@ -50,7 +50,7 @@ sonia.scm scm-core - 2.9.1 + 2.10.0-SNAPSHOT @@ -58,7 +58,7 @@ sonia.scm scm-test - 2.9.1 + 2.10.0-SNAPSHOT test diff --git a/scm-it/pom.xml b/scm-it/pom.xml index cf115c7621..1817845989 100644 --- a/scm-it/pom.xml +++ b/scm-it/pom.xml @@ -31,40 +31,40 @@ sonia.scm scm - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm scm-it war - 2.9.1 + 2.10.0-SNAPSHOT scm-it sonia.scm scm-core - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm scm-test - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm.plugins scm-git-plugin - 2.9.1 + 2.10.0-SNAPSHOT test sonia.scm.plugins scm-git-plugin - 2.9.1 + 2.10.0-SNAPSHOT tests test @@ -72,14 +72,14 @@ sonia.scm.plugins scm-hg-plugin - 2.9.1 + 2.10.0-SNAPSHOT test sonia.scm.plugins scm-hg-plugin - 2.9.1 + 2.10.0-SNAPSHOT tests test @@ -87,14 +87,14 @@ sonia.scm.plugins scm-svn-plugin - 2.9.1 + 2.10.0-SNAPSHOT test sonia.scm.plugins scm-svn-plugin - 2.9.1 + 2.10.0-SNAPSHOT tests test diff --git a/scm-packaging/deb/pom.xml b/scm-packaging/deb/pom.xml index 6ce93c7b87..569e1d9e73 100644 --- a/scm-packaging/deb/pom.xml +++ b/scm-packaging/deb/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.9.1 + 2.10.0-SNAPSHOT deb deb - 2.9.1 + 2.10.0-SNAPSHOT Packaging for Debian/Ubuntu deb @@ -46,7 +46,7 @@ sonia.scm scm-server - 2.9.1 + 2.10.0-SNAPSHOT diff --git a/scm-packaging/docker/pom.xml b/scm-packaging/docker/pom.xml index 353799421b..b12f198695 100644 --- a/scm-packaging/docker/pom.xml +++ b/scm-packaging/docker/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.9.1 + 2.10.0-SNAPSHOT docker pom - 2.9.1 + 2.10.0-SNAPSHOT diff --git a/scm-packaging/helm/pom.xml b/scm-packaging/helm/pom.xml index c4c485c5d3..2a642dee27 100644 --- a/scm-packaging/helm/pom.xml +++ b/scm-packaging/helm/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.9.1 + 2.10.0-SNAPSHOT helm helm - 2.9.1 + 2.10.0-SNAPSHOT 3.2.1 diff --git a/scm-packaging/pom.xml b/scm-packaging/pom.xml index c9433ccaef..faf3e5d404 100644 --- a/scm-packaging/pom.xml +++ b/scm-packaging/pom.xml @@ -31,13 +31,13 @@ sonia.scm scm - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm.packaging scm-packaging pom - 2.9.1 + 2.10.0-SNAPSHOT packages.scm-manager.org diff --git a/scm-packaging/release-yaml/pom.xml b/scm-packaging/release-yaml/pom.xml index 32669e80ae..f2bb1e07d2 100644 --- a/scm-packaging/release-yaml/pom.xml +++ b/scm-packaging/release-yaml/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.9.1 + 2.10.0-SNAPSHOT release-yaml pom - 2.9.1 + 2.10.0-SNAPSHOT diff --git a/scm-packaging/rpm/pom.xml b/scm-packaging/rpm/pom.xml index 1867579c1c..98b4dacad7 100644 --- a/scm-packaging/rpm/pom.xml +++ b/scm-packaging/rpm/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.9.1 + 2.10.0-SNAPSHOT rpm rpm - 2.9.1 + 2.10.0-SNAPSHOT Packaging for RedHat/Centos/Fedora rpm @@ -52,7 +52,7 @@ sonia.scm scm-server - 2.9.1 + 2.10.0-SNAPSHOT diff --git a/scm-packaging/unix/pom.xml b/scm-packaging/unix/pom.xml index 0af5d88bdc..41063ca51d 100644 --- a/scm-packaging/unix/pom.xml +++ b/scm-packaging/unix/pom.xml @@ -31,12 +31,12 @@ sonia.scm.packaging scm-packaging - 2.9.1 + 2.10.0-SNAPSHOT unix pom - 2.9.1 + 2.10.0-SNAPSHOT diff --git a/scm-packaging/windows/pom.xml b/scm-packaging/windows/pom.xml index 3663e3b65c..617f6a8b34 100644 --- a/scm-packaging/windows/pom.xml +++ b/scm-packaging/windows/pom.xml @@ -32,12 +32,12 @@ sonia.scm.packaging scm-packaging - 2.9.1 + 2.10.0-SNAPSHOT windows pom - 2.9.1 + 2.10.0-SNAPSHOT diff --git a/scm-plugins/pom.xml b/scm-plugins/pom.xml index d3426f655c..33b1061c3f 100644 --- a/scm-plugins/pom.xml +++ b/scm-plugins/pom.xml @@ -31,13 +31,13 @@ sonia.scm scm - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm.plugins scm-plugins pom - 2.9.1 + 2.10.0-SNAPSHOT scm-plugins @@ -60,7 +60,7 @@ sonia.scm scm-core - 2.9.1 + 2.10.0-SNAPSHOT provided @@ -69,7 +69,7 @@ sonia.scm scm-annotation-processor - 2.9.1 + 2.10.0-SNAPSHOT provided @@ -99,7 +99,7 @@ sonia.scm scm-test - 2.9.1 + 2.10.0-SNAPSHOT test diff --git a/scm-plugins/scm-git-plugin/package.json b/scm-plugins/scm-git-plugin/package.json index 12d708deae..a0ca9cf3ac 100644 --- a/scm-plugins/scm-git-plugin/package.json +++ b/scm-plugins/scm-git-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@scm-manager/scm-git-plugin", "private": true, - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "license": "MIT", "main": "./src/main/js/index.ts", "scripts": { @@ -20,6 +20,6 @@ }, "prettier": "@scm-manager/prettier-config", "dependencies": { - "@scm-manager/ui-plugins": "^2.9.1" + "@scm-manager/ui-plugins": "^2.10.0-SNAPSHOT" } } diff --git a/scm-plugins/scm-git-plugin/pom.xml b/scm-plugins/scm-git-plugin/pom.xml index 16edab0ee6..23c7e50527 100644 --- a/scm-plugins/scm-git-plugin/pom.xml +++ b/scm-plugins/scm-git-plugin/pom.xml @@ -31,7 +31,7 @@ scm-plugins sonia.scm.plugins - 2.9.1 + 2.10.0-SNAPSHOT scm-git-plugin diff --git a/scm-plugins/scm-hg-plugin/package.json b/scm-plugins/scm-hg-plugin/package.json index ded57707d6..107dde3e2e 100644 --- a/scm-plugins/scm-hg-plugin/package.json +++ b/scm-plugins/scm-hg-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@scm-manager/scm-hg-plugin", "private": true, - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "license": "MIT", "main": "./src/main/js/index.ts", "scripts": { @@ -19,6 +19,6 @@ }, "prettier": "@scm-manager/prettier-config", "dependencies": { - "@scm-manager/ui-plugins": "^2.9.1" + "@scm-manager/ui-plugins": "^2.10.0-SNAPSHOT" } } diff --git a/scm-plugins/scm-hg-plugin/pom.xml b/scm-plugins/scm-hg-plugin/pom.xml index b9410c3646..a6f125a6f9 100644 --- a/scm-plugins/scm-hg-plugin/pom.xml +++ b/scm-plugins/scm-hg-plugin/pom.xml @@ -31,7 +31,7 @@ sonia.scm.plugins scm-plugins - 2.9.1 + 2.10.0-SNAPSHOT scm-hg-plugin diff --git a/scm-plugins/scm-integration-test-plugin/pom.xml b/scm-plugins/scm-integration-test-plugin/pom.xml index 3b4d7eab00..e4575edcf6 100644 --- a/scm-plugins/scm-integration-test-plugin/pom.xml +++ b/scm-plugins/scm-integration-test-plugin/pom.xml @@ -29,12 +29,12 @@ sonia.scm.plugins scm-plugins - 2.9.1 + 2.10.0-SNAPSHOT scm-integration-test-plugin Add functions for integration tests. This is not intended for production systems. - 2.9.1 + 2.10.0-SNAPSHOT smp diff --git a/scm-plugins/scm-legacy-plugin/package.json b/scm-plugins/scm-legacy-plugin/package.json index 2fe601e7c9..2772a2c2b2 100644 --- a/scm-plugins/scm-legacy-plugin/package.json +++ b/scm-plugins/scm-legacy-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@scm-manager/scm-legacy-plugin", "private": true, - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "license": "MIT", "main": "./src/main/js/index.tsx", "scripts": { @@ -19,6 +19,6 @@ }, "prettier": "@scm-manager/prettier-config", "dependencies": { - "@scm-manager/ui-plugins": "^2.9.1" + "@scm-manager/ui-plugins": "^2.10.0-SNAPSHOT" } } diff --git a/scm-plugins/scm-legacy-plugin/pom.xml b/scm-plugins/scm-legacy-plugin/pom.xml index 8cc9f0da66..30fe94e9a8 100644 --- a/scm-plugins/scm-legacy-plugin/pom.xml +++ b/scm-plugins/scm-legacy-plugin/pom.xml @@ -29,12 +29,12 @@ sonia.scm.plugins scm-plugins - 2.9.1 + 2.10.0-SNAPSHOT scm-legacy-plugin Support migrated repository urls and v1 passwords - 2.9.1 + 2.10.0-SNAPSHOT smp diff --git a/scm-plugins/scm-svn-plugin/package.json b/scm-plugins/scm-svn-plugin/package.json index 416c7aaf4e..b8dbeed962 100644 --- a/scm-plugins/scm-svn-plugin/package.json +++ b/scm-plugins/scm-svn-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@scm-manager/scm-svn-plugin", "private": true, - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "license": "MIT", "main": "./src/main/js/index.ts", "scripts": { @@ -19,6 +19,6 @@ }, "prettier": "@scm-manager/prettier-config", "dependencies": { - "@scm-manager/ui-plugins": "^2.9.1" + "@scm-manager/ui-plugins": "^2.10.0-SNAPSHOT" } } diff --git a/scm-plugins/scm-svn-plugin/pom.xml b/scm-plugins/scm-svn-plugin/pom.xml index f642e530eb..f127b00c6d 100644 --- a/scm-plugins/scm-svn-plugin/pom.xml +++ b/scm-plugins/scm-svn-plugin/pom.xml @@ -31,7 +31,7 @@ scm-plugins sonia.scm.plugins - 2.9.1 + 2.10.0-SNAPSHOT scm-svn-plugin diff --git a/scm-server/pom.xml b/scm-server/pom.xml index 45576f8ffa..6016d0d537 100644 --- a/scm-server/pom.xml +++ b/scm-server/pom.xml @@ -31,12 +31,12 @@ scm sonia.scm - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm scm-server - 2.9.1 + 2.10.0-SNAPSHOT scm-server jar diff --git a/scm-test/pom.xml b/scm-test/pom.xml index d244511dc5..3d155f8630 100644 --- a/scm-test/pom.xml +++ b/scm-test/pom.xml @@ -31,12 +31,12 @@ scm sonia.scm - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm scm-test - 2.9.1 + 2.10.0-SNAPSHOT scm-test @@ -50,7 +50,7 @@ sonia.scm scm-core - 2.9.1 + 2.10.0-SNAPSHOT diff --git a/scm-ui/babel-preset/package.json b/scm-ui/babel-preset/package.json index 71367a56c1..a37d1989f0 100644 --- a/scm-ui/babel-preset/package.json +++ b/scm-ui/babel-preset/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/babel-preset", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "license": "MIT", "description": "Babel configuration for scm-manager and its plugins", "main": "index.js", diff --git a/scm-ui/e2e-tests/package.json b/scm-ui/e2e-tests/package.json index 98e6abd3db..0fbc576449 100644 --- a/scm-ui/e2e-tests/package.json +++ b/scm-ui/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/e2e-tests", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "End to end Tests for SCM-Manager", "main": "index.js", "author": "Eduard Heimbuch ", diff --git a/scm-ui/eslint-config/package.json b/scm-ui/eslint-config/package.json index 82dea4b1cf..44b318c1b0 100644 --- a/scm-ui/eslint-config/package.json +++ b/scm-ui/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/eslint-config", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "ESLint configuration for scm-manager and its plugins", "main": "src/index.js", "author": "Sebastian Sdorra ", diff --git a/scm-ui/jest-preset/package.json b/scm-ui/jest-preset/package.json index 9864a1a24e..2eeb3d2ece 100644 --- a/scm-ui/jest-preset/package.json +++ b/scm-ui/jest-preset/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/jest-preset", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "Jest presets for SCM-Manager and its plugins", "main": "src/index.js", "author": "Sebastian Sdorra ", diff --git a/scm-ui/pom.xml b/scm-ui/pom.xml index d980c0c191..0e9633053d 100644 --- a/scm-ui/pom.xml +++ b/scm-ui/pom.xml @@ -32,13 +32,13 @@ sonia.scm scm - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm scm-ui war - 2.9.1 + 2.10.0-SNAPSHOT scm-ui diff --git a/scm-ui/prettier-config/package.json b/scm-ui/prettier-config/package.json index 6ff80b4e22..9594fb3819 100644 --- a/scm-ui/prettier-config/package.json +++ b/scm-ui/prettier-config/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/prettier-config", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "license": "MIT", "description": "Prettier configuration", "author": "Sebastian Sdorra ", diff --git a/scm-ui/tsconfig/package.json b/scm-ui/tsconfig/package.json index 0770b12603..1f9230a619 100644 --- a/scm-ui/tsconfig/package.json +++ b/scm-ui/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/tsconfig", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "license": "MIT", "description": "TypeScript configuration", "author": "Sebastian Sdorra ", diff --git a/scm-ui/ui-components/package.json b/scm-ui/ui-components/package.json index 0455d9498b..c78531db56 100644 --- a/scm-ui/ui-components/package.json +++ b/scm-ui/ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-components", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "UI Components for SCM-Manager and its plugins", "main": "src/index.ts", "files": [ @@ -18,7 +18,7 @@ "update-storyshots": "jest --testPathPattern=\"storyshots.test.ts\" --collectCoverage=false -u" }, "devDependencies": { - "@scm-manager/ui-tests": "^2.9.1", + "@scm-manager/ui-tests": "^2.10.0-SNAPSHOT", "@storybook/addon-actions": "^5.2.3", "@storybook/addon-storyshots": "^5.2.3", "@storybook/react": "^5.2.3", @@ -51,8 +51,8 @@ "worker-plugin": "^3.2.0" }, "dependencies": { - "@scm-manager/ui-extensions": "^2.9.1", - "@scm-manager/ui-types": "^2.9.1", + "@scm-manager/ui-extensions": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-types": "^2.10.0-SNAPSHOT", "classnames": "^2.2.6", "date-fns": "^2.4.1", "gitdiff-parser": "^0.1.2", diff --git a/scm-ui/ui-extensions/package.json b/scm-ui/ui-extensions/package.json index e2f5db77c5..64ee6367cc 100644 --- a/scm-ui/ui-extensions/package.json +++ b/scm-ui/ui-extensions/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-extensions", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "main": "src/index.ts", "license": "MIT", "private": false, diff --git a/scm-ui/ui-plugins/package.json b/scm-ui/ui-plugins/package.json index 2d8f78c43c..97a840f7c8 100644 --- a/scm-ui/ui-plugins/package.json +++ b/scm-ui/ui-plugins/package.json @@ -1,13 +1,13 @@ { "name": "@scm-manager/ui-plugins", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "license": "MIT", "bin": { "ui-plugins": "./bin/ui-plugins.js" }, "dependencies": { - "@scm-manager/ui-components": "^2.9.1", - "@scm-manager/ui-extensions": "^2.9.1", + "@scm-manager/ui-components": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-extensions": "^2.10.0-SNAPSHOT", "classnames": "^2.2.6", "query-string": "^5.0.1", "react": "^16.10.2", @@ -18,14 +18,14 @@ "styled-components": "^5.1.0" }, "devDependencies": { - "@scm-manager/babel-preset": "^2.9.1", - "@scm-manager/eslint-config": "^2.9.1", - "@scm-manager/jest-preset": "^2.9.1", - "@scm-manager/prettier-config": "^2.9.1", - "@scm-manager/tsconfig": "^2.9.1", - "@scm-manager/ui-scripts": "^2.9.1", - "@scm-manager/ui-tests": "^2.9.1", - "@scm-manager/ui-types": "^2.9.1", + "@scm-manager/babel-preset": "^2.10.0-SNAPSHOT", + "@scm-manager/eslint-config": "^2.10.0-SNAPSHOT", + "@scm-manager/jest-preset": "^2.10.0-SNAPSHOT", + "@scm-manager/prettier-config": "^2.10.0-SNAPSHOT", + "@scm-manager/tsconfig": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-scripts": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-tests": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-types": "^2.10.0-SNAPSHOT", "@types/classnames": "^2.2.9", "@types/enzyme": "^3.10.3", "@types/fetch-mock": "^7.3.1", diff --git a/scm-ui/ui-polyfill/package.json b/scm-ui/ui-polyfill/package.json index 6636a8b6ae..fd8b63aa29 100644 --- a/scm-ui/ui-polyfill/package.json +++ b/scm-ui/ui-polyfill/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-polyfill", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "Polyfills for SCM-Manager UI", "main": "src/index.js", "author": "Sebastian Sdorra ", diff --git a/scm-ui/ui-scripts/package.json b/scm-ui/ui-scripts/package.json index a6e834cc6a..6132eb70bf 100644 --- a/scm-ui/ui-scripts/package.json +++ b/scm-ui/ui-scripts/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-scripts", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "Build scripts for SCM-Manager", "main": "src/index.js", "author": "Sebastian Sdorra ", diff --git a/scm-ui/ui-styles/package.json b/scm-ui/ui-styles/package.json index 96b5d7a478..0c0df6b16b 100644 --- a/scm-ui/ui-styles/package.json +++ b/scm-ui/ui-styles/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-styles", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "Styles for SCM-Manager", "main": "src/scm.scss", "license": "MIT", diff --git a/scm-ui/ui-tests/package.json b/scm-ui/ui-tests/package.json index 0075845549..706a6cb06c 100644 --- a/scm-ui/ui-tests/package.json +++ b/scm-ui/ui-tests/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-tests", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "UI-Tests helpers", "author": "Sebastian Sdorra ", "license": "MIT", diff --git a/scm-ui/ui-types/package.json b/scm-ui/ui-types/package.json index e5ab6f1372..e420646d82 100644 --- a/scm-ui/ui-types/package.json +++ b/scm-ui/ui-types/package.json @@ -1,6 +1,6 @@ { "name": "@scm-manager/ui-types", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "description": "Flow types for SCM-Manager related Objects", "main": "src/index.ts", "files": [ diff --git a/scm-ui/ui-webapp/package.json b/scm-ui/ui-webapp/package.json index 62a6fe0379..fd43d89102 100644 --- a/scm-ui/ui-webapp/package.json +++ b/scm-ui/ui-webapp/package.json @@ -1,10 +1,10 @@ { "name": "@scm-manager/ui-webapp", - "version": "2.9.1", + "version": "2.10.0-SNAPSHOT", "private": true, "dependencies": { - "@scm-manager/ui-components": "^2.9.1", - "@scm-manager/ui-extensions": "^2.9.1", + "@scm-manager/ui-components": "^2.10.0-SNAPSHOT", + "@scm-manager/ui-extensions": "^2.10.0-SNAPSHOT", "classnames": "^2.2.5", "history": "^4.10.1", "i18next": "^19.6.0", @@ -29,7 +29,7 @@ "test": "jest" }, "devDependencies": { - "@scm-manager/ui-tests": "^2.9.1", + "@scm-manager/ui-tests": "^2.10.0-SNAPSHOT", "@types/classnames": "^2.2.9", "@types/enzyme": "^3.10.3", "@types/fetch-mock": "^7.3.1", diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index 205d8b5d29..adb0f51980 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -32,13 +32,13 @@ sonia.scm scm - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm scm-webapp war - 2.9.1 + 2.10.0-SNAPSHOT scm-webapp @@ -48,7 +48,7 @@ sonia.scm scm-annotation-processor - 2.9.1 + 2.10.0-SNAPSHOT provided @@ -73,13 +73,13 @@ sonia.scm scm-core - 2.9.1 + 2.10.0-SNAPSHOT sonia.scm scm-dao-xml - 2.9.1 + 2.10.0-SNAPSHOT @@ -343,7 +343,7 @@ sonia.scm scm-test - 2.9.1 + 2.10.0-SNAPSHOT test @@ -405,7 +405,7 @@ sonia.scm.plugins scm-git-plugin - 2.9.1 + 2.10.0-SNAPSHOT tests test @@ -413,14 +413,14 @@ sonia.scm.plugins scm-git-plugin - 2.9.1 + 2.10.0-SNAPSHOT test sonia.scm.plugins scm-hg-plugin - 2.9.1 + 2.10.0-SNAPSHOT tests test @@ -428,14 +428,14 @@ sonia.scm.plugins scm-hg-plugin - 2.9.1 + 2.10.0-SNAPSHOT test sonia.scm.plugins scm-svn-plugin - 2.9.1 + 2.10.0-SNAPSHOT tests test @@ -443,7 +443,7 @@ sonia.scm.plugins scm-svn-plugin - 2.9.1 + 2.10.0-SNAPSHOT test @@ -729,7 +729,7 @@ sonia.scm scm-ui - 2.9.1 + 2.10.0-SNAPSHOT war From 8e10f7e7ed33a0c2f20b74fb7d63c6c5279b1218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Thu, 12 Nov 2020 08:10:01 +0100 Subject: [PATCH 13/22] Fix generics as far as possible --- .../sonia/scm/repository/api/LookupCommandBuilder.java | 2 +- .../main/java/sonia/scm/repository/spi/LookupCommand.java | 2 +- .../sonia/scm/repository/spi/LookupCommandRequest.java | 4 ++-- .../java/sonia/scm/repository/spi/SvnLookupCommand.java | 7 +++++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java index 794771d81a..2c047b97eb 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java @@ -37,13 +37,13 @@ import java.util.Optional; public class LookupCommandBuilder { private final LookupCommand lookupCommand; - private final LookupCommandRequest request = new LookupCommandRequest(); public LookupCommandBuilder(LookupCommand lookupCommand) { this.lookupCommand = lookupCommand; } public Optional lookup(Class type, String... args) { + LookupCommandRequest request = new LookupCommandRequest<>(); request.setType(type); request.setArgs(args); return lookupCommand.lookup(request); diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java index 57cf4f7851..363d50ec4e 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java @@ -34,5 +34,5 @@ public interface LookupCommand { * @param request Arguments provided for the lookup. * @return Result of provided type. */ - Optional lookup(LookupCommandRequest request); + Optional lookup(LookupCommandRequest request); } diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java index a3ceb13414..0094351038 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java @@ -29,7 +29,7 @@ import lombok.Setter; @Getter @Setter -public class LookupCommandRequest { - private Class type; +public class LookupCommandRequest { + private Class type; private String[] args; } diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java index e23018095a..ed79e40e25 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java @@ -38,7 +38,7 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman } @Override - public Optional lookup(LookupCommandRequest request) { + public Optional lookup(LookupCommandRequest request) { try { if (request.getArgs().length > 1 && "propget".equalsIgnoreCase(request.getArgs()[0])) { return lookupProps(request); @@ -50,8 +50,11 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman return Optional.empty(); } - private Optional lookupProps(LookupCommandRequest request) throws SVNException { + private Optional lookupProps(LookupCommandRequest request) throws SVNException { if (request.getArgs()[1].equalsIgnoreCase("uuid")) { + if (!request.getType().equals(String.class)) { + throw new IllegalArgumentException("uuid can only be returned as String"); + } SVNRepository repository = context.open(); return Optional.of((T) repository.getRepositoryUUID(true)); } From 6abf793f498185377b98a6cb03459339364e4ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Thu, 12 Nov 2020 08:11:13 +0100 Subject: [PATCH 14/22] Fix formatting --- .../scm/repository/spi/SvnRepositoryServiceProvider.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java index bce2d48f4b..f948a7168f 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnRepositoryServiceProvider.java @@ -148,16 +148,20 @@ public class SvnRepositoryServiceProvider extends RepositoryServiceProvider return new SvnLogCommand(context); } + @Override public ModificationsCommand getModificationsCommand() { return new SvnModificationsCommand(context); } + @Override public ModifyCommand getModifyCommand() { return new SvnModifyCommand(context, workingCopyFactory); } @Override - public LookupCommand getLookupCommand() { return new SvnLookupCommand(context);} + public LookupCommand getLookupCommand() { + return new SvnLookupCommand(context); + } /** * Method description From 8d797a454a22b308aab3483ede20fa2e54deb294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Tue, 10 Nov 2020 08:29:19 +0100 Subject: [PATCH 15/22] Fix typings --- .../java/sonia/scm/ConcurrentModificationException.java | 6 +++--- scm-core/src/main/java/sonia/scm/ContextEntry.java | 9 +++++---- scm-core/src/main/java/sonia/scm/NotFoundException.java | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/ConcurrentModificationException.java b/scm-core/src/main/java/sonia/scm/ConcurrentModificationException.java index 694120dc2b..93c84e01cc 100644 --- a/scm-core/src/main/java/sonia/scm/ConcurrentModificationException.java +++ b/scm-core/src/main/java/sonia/scm/ConcurrentModificationException.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm; import java.util.Collections; @@ -33,7 +33,7 @@ public class ConcurrentModificationException extends ExceptionWithContext { private static final String CODE = "2wR7UzpPG1"; - public ConcurrentModificationException(Class type, String id) { + public ConcurrentModificationException(Class type, String id) { this(Collections.singletonList(new ContextEntry(type, id))); } @@ -56,4 +56,4 @@ public class ConcurrentModificationException extends ExceptionWithContext { .collect(joining(" in ", "", " has been modified concurrently")); } } - + diff --git a/scm-core/src/main/java/sonia/scm/ContextEntry.java b/scm-core/src/main/java/sonia/scm/ContextEntry.java index d398e54609..15217e3173 100644 --- a/scm-core/src/main/java/sonia/scm/ContextEntry.java +++ b/scm-core/src/main/java/sonia/scm/ContextEntry.java @@ -21,22 +21,23 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm; import sonia.scm.repository.NamespaceAndName; import sonia.scm.repository.Repository; import sonia.scm.util.AssertUtil; +import java.io.Serializable; import java.util.Collections; import java.util.LinkedList; import java.util.List; -public class ContextEntry { +public class ContextEntry implements Serializable { private final String type; private final String id; - ContextEntry(Class type, String id) { + ContextEntry(Class type, String id) { this(type.getSimpleName(), id); } @@ -91,7 +92,7 @@ public class ContextEntry { return this.in(Repository.class, namespaceAndName.logString()); } - public ContextBuilder in(Class type, String id) { + public ContextBuilder in(Class type, String id) { context.add(new ContextEntry(type, id)); return this; } diff --git a/scm-core/src/main/java/sonia/scm/NotFoundException.java b/scm-core/src/main/java/sonia/scm/NotFoundException.java index 2ca74fc60c..0c0a06926c 100644 --- a/scm-core/src/main/java/sonia/scm/NotFoundException.java +++ b/scm-core/src/main/java/sonia/scm/NotFoundException.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm; import java.util.Collections; @@ -35,7 +35,7 @@ public class NotFoundException extends ExceptionWithContext { private static final String CODE = "AGR7UzkhA1"; - public NotFoundException(Class type, String id) { + public NotFoundException(Class type, String id) { this(Collections.singletonList(new ContextEntry(type, id))); } From b2533db6841f9843447bf73948180238046cd775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Tue, 10 Nov 2020 08:32:14 +0100 Subject: [PATCH 16/22] Simplify mapper --- ...ScmViolationExceptionToErrorDtoMapper.java | 33 +++++-------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ScmViolationExceptionToErrorDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ScmViolationExceptionToErrorDtoMapper.java index edf685ce87..0f9f267fb5 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ScmViolationExceptionToErrorDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ScmViolationExceptionToErrorDtoMapper.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.api.v2.resources; import org.mapstruct.AfterMapping; @@ -32,46 +32,29 @@ import org.slf4j.MDC; import sonia.scm.ScmConstraintViolationException; import sonia.scm.ScmConstraintViolationException.ScmConstraintViolation; -import java.util.List; -import java.util.stream.Collectors; - @Mapper -public abstract class ScmViolationExceptionToErrorDtoMapper { +public interface ScmViolationExceptionToErrorDtoMapper { @Mapping(target = "errorCode", ignore = true) @Mapping(target = "transactionId", ignore = true) @Mapping(target = "context", ignore = true) - public abstract ErrorDto map(ScmConstraintViolationException exception); + ErrorDto map(ScmConstraintViolationException exception); @AfterMapping - void setTransactionId(@MappingTarget ErrorDto dto) { + default void setTransactionId(@MappingTarget ErrorDto dto) { dto.setTransactionId(MDC.get("transaction_id")); } - @AfterMapping - void mapViolations(ScmConstraintViolationException exception, @MappingTarget ErrorDto dto) { - List violations = - exception.getViolations() - .stream() - .map(this::createViolationDto) - .collect(Collectors.toList()); - dto.setViolations(violations); - } - - private ErrorDto.ConstraintViolationDto createViolationDto(ScmConstraintViolation violation) { - ErrorDto.ConstraintViolationDto constraintViolationDto = new ErrorDto.ConstraintViolationDto(); - constraintViolationDto.setMessage(violation.getMessage()); - constraintViolationDto.setPath(violation.getPropertyPath()); - return constraintViolationDto; - } + @Mapping(source = "propertyPath", target = "path") + ErrorDto.ConstraintViolationDto map(ScmConstraintViolation violation); @AfterMapping - void setErrorCode(@MappingTarget ErrorDto dto) { + default void setErrorCode(@MappingTarget ErrorDto dto) { dto.setErrorCode("3zR9vPNIE1"); } @AfterMapping - void setMessage(@MappingTarget ErrorDto dto) { + default void setMessage(@MappingTarget ErrorDto dto) { dto.setMessage("input violates conditions (see violation list)"); } } From 01a5dbd09167150a40a5e2d4d7c9f2ae6e3b6570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Tue, 10 Nov 2020 08:33:22 +0100 Subject: [PATCH 17/22] Show messages from native scm protocol --- .../java/sonia/scm/ExceptionWithContext.java | 34 +++++++++++ .../sonia/scm/api/v2/resources/ErrorDto.java | 13 +++- .../IntegrateChangesFromWorkdirException.java | 42 +++++++++++-- ...egrateChangesFromWorkdirExceptionTest.java | 59 +++++++++++++++++++ .../repository/spi/AbstractGitCommand.java | 3 +- .../scm/repository/spi/HgBranchCommand.java | 7 ++- .../scm/repository/spi/HgModifyCommand.java | 6 +- .../scm/repository/spi/SvnModifyCommand.java | 8 ++- .../src/BackendErrorNotification.tsx | 12 +++- scm-ui/ui-components/src/errors.ts | 7 +++ .../ExceptionWithContextToErrorDtoMapper.java | 10 ++-- .../main/resources/locales/de/plugins.json | 2 +- .../main/resources/locales/en/plugins.json | 2 +- ...eptionWithContextToErrorDtoMapperTest.java | 21 ++++++- 14 files changed, 202 insertions(+), 24 deletions(-) create mode 100644 scm-core/src/test/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirExceptionTest.java diff --git a/scm-core/src/main/java/sonia/scm/ExceptionWithContext.java b/scm-core/src/main/java/sonia/scm/ExceptionWithContext.java index 1631aea178..a972c4e794 100644 --- a/scm-core/src/main/java/sonia/scm/ExceptionWithContext.java +++ b/scm-core/src/main/java/sonia/scm/ExceptionWithContext.java @@ -24,6 +24,7 @@ package sonia.scm; +import java.io.Serializable; import java.util.List; import java.util.Optional; @@ -34,15 +35,26 @@ public abstract class ExceptionWithContext extends RuntimeException { private static final long serialVersionUID = 4327413456580409224L; private final List context; + private final List additionalMessages; public ExceptionWithContext(List context, String message) { + this(context, null, message); + } + + public ExceptionWithContext(List context, List additionalMessages, String message) { super(message); this.context = context; + this.additionalMessages = additionalMessages; } public ExceptionWithContext(List context, String message, Exception cause) { + this(context, null, message, cause); + } + + public ExceptionWithContext(List context, List additionalMessages, String message, Exception cause) { super(message, cause); this.context = context; + this.additionalMessages = additionalMessages; } public List getContext() { @@ -61,4 +73,26 @@ public abstract class ExceptionWithContext extends RuntimeException { public Optional getUrl() { return Optional.empty(); } + + public List getAdditionalMessages() { + return additionalMessages; + } + + public static class AdditionalMessage implements Serializable { + private final String key; + private final String message; + + public AdditionalMessage(String key, String message) { + this.key = key; + this.message = message; + } + + public String getKey() { + return key; + } + + public String getMessage() { + return message; + } + } } diff --git a/scm-core/src/main/java/sonia/scm/api/v2/resources/ErrorDto.java b/scm-core/src/main/java/sonia/scm/api/v2/resources/ErrorDto.java index 5199446a4f..737d4b1fc2 100644 --- a/scm-core/src/main/java/sonia/scm/api/v2/resources/ErrorDto.java +++ b/scm-core/src/main/java/sonia/scm/api/v2/resources/ErrorDto.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.api.v2.resources; import com.fasterxml.jackson.annotation.JsonInclude; @@ -40,7 +40,10 @@ public class ErrorDto { private List context; private String message; - @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List additionalMessages; + + @JsonInclude(JsonInclude.Include.NON_EMPTY) @XmlElementWrapper(name = "violations") private List violations; @@ -53,4 +56,10 @@ public class ErrorDto { private String path; private String message; } + + @Getter @Setter + public static class AdditionalMessageDto { + private String key; + private String message; + } } diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirException.java b/scm-core/src/main/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirException.java index 3259cc2094..d0dcb28e65 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirException.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirException.java @@ -21,27 +21,57 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository.spi; -import sonia.scm.ContextEntry; import sonia.scm.ExceptionWithContext; import sonia.scm.repository.Repository; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static java.util.Arrays.stream; +import static sonia.scm.ContextEntry.ContextBuilder.entity; + public class IntegrateChangesFromWorkdirException extends ExceptionWithContext { private static final String CODE = "CHRM7IQzo1"; - public IntegrateChangesFromWorkdirException(Repository repository, String message) { - super(ContextEntry.ContextBuilder.entity(repository).build(), message); + private static final Pattern SCM_MESSAGE_PATTERN = Pattern.compile(".*\\[SCM\\] (.*)"); + + public static MessageExtractor withPattern(Pattern pattern) { + return new MessageExtractor(pattern); } - public IntegrateChangesFromWorkdirException(Repository repository, String message, Exception cause) { - super(ContextEntry.ContextBuilder.entity(repository).build(), message, cause); + public static IntegrateChangesFromWorkdirException forMessage(Repository repository, String message) { + return new MessageExtractor(SCM_MESSAGE_PATTERN).forMessage(repository, message); + } + + private IntegrateChangesFromWorkdirException(Repository repository, List additionalMessages) { + super(entity(repository).build(), additionalMessages, "errors from hook"); } @Override public String getCode() { return CODE; } + + public static class MessageExtractor { + + private final Pattern extractorPattern; + + public MessageExtractor(Pattern extractorPattern) { + this.extractorPattern = extractorPattern; + } + + public IntegrateChangesFromWorkdirException forMessage(Repository repository, String message) { + return new IntegrateChangesFromWorkdirException(repository, stream(message.split("\\n")) + .map(extractorPattern::matcher) + .filter(Matcher::matches) + .map(matcher -> new AdditionalMessage(null, matcher.group(1))) + .collect(Collectors.toList())); + } + } } diff --git a/scm-core/src/test/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirExceptionTest.java b/scm-core/src/test/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirExceptionTest.java new file mode 100644 index 0000000000..6a4580361e --- /dev/null +++ b/scm-core/src/test/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirExceptionTest.java @@ -0,0 +1,59 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package sonia.scm.repository.spi; + +import org.junit.jupiter.api.Test; +import sonia.scm.repository.Repository; + +import java.util.regex.Pattern; + +import static org.assertj.core.api.Assertions.assertThat; +import static sonia.scm.repository.spi.IntegrateChangesFromWorkdirException.forMessage; +import static sonia.scm.repository.spi.IntegrateChangesFromWorkdirException.withPattern; + +class IntegrateChangesFromWorkdirExceptionTest { + + private static final Repository REPOSITORY = new Repository("1", "git", "hitchhiker", "hog"); + + @Test + void shouldExtractMessagesWithDefaultPrefix() { + IntegrateChangesFromWorkdirException exception = forMessage(REPOSITORY, "prefix [SCM] line 1\nprefix [SCM] line 2\nirrelevant line\n"); + + assertThat(exception.getAdditionalMessages()) + .extracting("message") + .containsExactly("line 1", "line 2"); + } + + @Test + void shouldExtractMessagesWithCustomPattern() { + IntegrateChangesFromWorkdirException exception = + withPattern(Pattern.compile("-custom- (.*)")) + .forMessage(REPOSITORY, "to be ignored\n-custom- line\n"); + + assertThat(exception.getAdditionalMessages()) + .extracting("message") + .containsExactly("line"); + } +} diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitCommand.java index c083123242..8ad6e3ddf4 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitCommand.java @@ -59,6 +59,7 @@ import static java.util.Optional.of; import static sonia.scm.ContextEntry.ContextBuilder.entity; import static sonia.scm.NotFoundException.notFound; import static sonia.scm.repository.GitUtil.getBranchIdOrCurrentHead; +import static sonia.scm.repository.spi.IntegrateChangesFromWorkdirException.forMessage; //~--- JDK imports ------------------------------------------------------------ @@ -255,7 +256,7 @@ class AbstractGitCommand { .findAny() .ifPresent(remoteRefUpdate -> { logger.info("message for failed push: {}", pushResult.getMessages()); - throw new IntegrateChangesFromWorkdirException(repository, "could not push changes into central repository: " + remoteRefUpdate.getStatus()); + throw forMessage(repository, pushResult.getMessages()); }); } catch (GitAPIException e) { throw new InternalRepositoryException(repository, "could not push changes into central repository", e); diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchCommand.java index 3a291b4501..7319a312ff 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchCommand.java @@ -37,6 +37,8 @@ import sonia.scm.repository.api.BranchRequest; import sonia.scm.repository.work.WorkingCopy; import sonia.scm.user.User; +import java.io.IOException; + /** * Mercurial implementation of the {@link BranchCommand}. * Note that this creates an empty commit to "persist" the new branch. @@ -106,9 +108,8 @@ public class HgBranchCommand extends AbstractCommand implements BranchCommand { PullCommand pullCommand = PullCommand.on(workingCopy.getCentralRepository()); workingCopyFactory.configure(pullCommand); pullCommand.execute(workingCopy.getDirectory().getAbsolutePath()); - } catch (Exception e) { - // TODO handle failed update - throw new IntegrateChangesFromWorkdirException(getRepository(), + } catch (IOException e) { + throw new InternalRepositoryException(getRepository(), String.format("Could not pull changes '%s' into central repository", branch), e); } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java index 012592c7a4..4b1ce27d38 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java @@ -114,8 +114,10 @@ public class HgModifyCommand implements ModifyCommand { com.aragost.javahg.commands.PullCommand pullCommand = PullCommand.on(workingCopy.getCentralRepository()); workingCopyFactory.configure(pullCommand); return pullCommand.execute(workingCopy.getDirectory().getAbsolutePath()); - } catch (Exception e) { - throw new IntegrateChangesFromWorkdirException(context.getScmRepository(), + } catch (ExecutionException e) { + throw IntegrateChangesFromWorkdirException.forMessage(context.getScmRepository(), e.getMessage()); + } catch (IOException e) { + throw new InternalRepositoryException(context.getScmRepository(), String.format("Could not pull modify changes from working copy to central repository for branch %s", request.getBranch()), e); } diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnModifyCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnModifyCommand.java index 849d5619a5..756170453a 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnModifyCommand.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnModifyCommand.java @@ -27,6 +27,7 @@ package sonia.scm.repository.spi; import org.apache.shiro.SecurityUtils; import org.tmatesoft.svn.core.SVNCommitInfo; import org.tmatesoft.svn.core.SVNDepth; +import org.tmatesoft.svn.core.SVNErrorCode; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.wc.SVNClientManager; import org.tmatesoft.svn.core.wc.SVNWCClient; @@ -40,9 +41,14 @@ import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.regex.Pattern; + +import static sonia.scm.repository.spi.IntegrateChangesFromWorkdirException.withPattern; public class SvnModifyCommand implements ModifyCommand { + public static final Pattern SVN_ERROR_PATTERN = Pattern.compile(".*E" + SVNErrorCode.CANCELLED.getCode() + ": (.*)"); + private final SvnContext context; private final SvnWorkingCopyFactory workingCopyFactory; private final Repository repository; @@ -81,7 +87,7 @@ public class SvnModifyCommand implements ModifyCommand { ); return String.valueOf(svnCommitInfo.getNewRevision()); } catch (SVNException e) { - throw new InternalRepositoryException(repository, "could not commit changes on repository"); + throw withPattern(SVN_ERROR_PATTERN).forMessage(repository, e.getMessage()); } } diff --git a/scm-ui/ui-components/src/BackendErrorNotification.tsx b/scm-ui/ui-components/src/BackendErrorNotification.tsx index b61e25d777..01386a917a 100644 --- a/scm-ui/ui-components/src/BackendErrorNotification.tsx +++ b/scm-ui/ui-components/src/BackendErrorNotification.tsx @@ -42,6 +42,7 @@ class BackendErrorNotification extends React.Component {

{this.renderErrorName()}

{this.renderErrorDescription()}

+ {this.renderAdditionalMessages()}

{this.renderViolations()}

{this.renderMetadata()}
@@ -51,7 +52,7 @@ class BackendErrorNotification extends React.Component { renderErrorName = () => { const { error, t } = this.props; - const translation = t("errors." + error.errorCode + ".displayName"); + const translation = t(`errors.${error.errorCode}.displayName`); if (translation === error.errorCode) { return error.message; } @@ -60,13 +61,20 @@ class BackendErrorNotification extends React.Component { renderErrorDescription = () => { const { error, t } = this.props; - const translation = t("errors." + error.errorCode + ".description"); + const translation = t(`errors.${error.errorCode}.description`); if (translation === error.errorCode) { return ""; } return translation; }; + renderAdditionalMessages = () => { + const { error, t } = this.props; + if (error.additionalMessages) { + return error.additionalMessages.map(a => a.key ? t(`errors.${a.key}.description`) : a.message).map(m =>

{m}

); + } + }; + renderViolations = () => { const { error, t } = this.props; if (error.violations) { diff --git a/scm-ui/ui-components/src/errors.ts b/scm-ui/ui-components/src/errors.ts index d1f7aef226..41e44f0702 100644 --- a/scm-ui/ui-components/src/errors.ts +++ b/scm-ui/ui-components/src/errors.ts @@ -31,6 +31,10 @@ export type Violation = { message: string; key?: string; }; +export type AdditionalMessage = { + key?: string; + message?: string; +}; export type BackendErrorContent = { transactionId: string; @@ -39,6 +43,7 @@ export type BackendErrorContent = { url?: string; context: Context; violations: Violation[]; + additionalMessages?: AdditionalMessage[]; }; export class BackendError extends Error { @@ -48,6 +53,7 @@ export class BackendError extends Error { context: Context = []; statusCode: number; violations: Violation[]; + additionalMessages?: AdditionalMessage[]; constructor(content: BackendErrorContent, name: string, statusCode: number) { super(content.message); @@ -58,6 +64,7 @@ export class BackendError extends Error { this.context = content.context; this.statusCode = statusCode; this.violations = content.violations; + this.additionalMessages = content.additionalMessages; } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ExceptionWithContextToErrorDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ExceptionWithContextToErrorDtoMapper.java index bdf14e5bd5..767a37522a 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ExceptionWithContextToErrorDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ExceptionWithContextToErrorDtoMapper.java @@ -34,20 +34,22 @@ import sonia.scm.ExceptionWithContext; import java.util.Optional; @Mapper -public abstract class ExceptionWithContextToErrorDtoMapper { +public interface ExceptionWithContextToErrorDtoMapper { @Mapping(target = "errorCode", source = "code") @Mapping(target = "transactionId", ignore = true) @Mapping(target = "violations", ignore = true) - public abstract ErrorDto map(ExceptionWithContext exception); + ErrorDto map(ExceptionWithContext exception); @SuppressWarnings("OptionalUsedAsFieldOrParameterType") // is ok for mapping - public String mapOptional(Optional optionalString) { + default String mapOptional(Optional optionalString) { return optionalString.orElse(null); } @AfterMapping - void setTransactionId(@MappingTarget ErrorDto dto) { + default void setTransactionId(@MappingTarget ErrorDto dto) { dto.setTransactionId(MDC.get("transaction_id")); } + + ErrorDto.AdditionalMessageDto map(ExceptionWithContext.AdditionalMessage message); } diff --git a/scm-webapp/src/main/resources/locales/de/plugins.json b/scm-webapp/src/main/resources/locales/de/plugins.json index cf2c29f21f..2226986629 100644 --- a/scm-webapp/src/main/resources/locales/de/plugins.json +++ b/scm-webapp/src/main/resources/locales/de/plugins.json @@ -197,7 +197,7 @@ }, "CHRM7IQzo1": { "displayName": "Änderung des Repositories nicht möglich", - "description": "Die gewünschte Änderung am Repository konnte nicht durchgeführt werden. Höchst wahrscheinlich liegt dieses an installierten Plugins mit Hooks oder nativen Hooks." + "description": "Die gewünschte Änderung am Repository konnte nicht durchgeführt werden. Höchst wahrscheinlich liegt dieses an installierten Plugins mit Hooks oder nativen Hooks. Folgend sind eventuelle weitere Meldungen." }, "thbsUFokjk": { "displayName": "Unerlaubte Änderung eines Schlüsselwerts", diff --git a/scm-webapp/src/main/resources/locales/en/plugins.json b/scm-webapp/src/main/resources/locales/en/plugins.json index 4de2202976..246f667e7b 100644 --- a/scm-webapp/src/main/resources/locales/en/plugins.json +++ b/scm-webapp/src/main/resources/locales/en/plugins.json @@ -197,7 +197,7 @@ }, "CHRM7IQzo1": { "displayName": "Could not modify repository", - "description": "The requested modification to the repository was rejected. Most probably this was due to plugins with repository hooks or native hooks." + "description": "The requested modification to the repository was rejected. Most probably this was due to plugins with repository hooks or native hooks. Following are potential additional messages." }, "thbsUFokjk": { "displayName": "Illegal change of an identifier", diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ExceptionWithContextToErrorDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ExceptionWithContextToErrorDtoMapperTest.java index 649493b7e8..e7d764f0ae 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ExceptionWithContextToErrorDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ExceptionWithContextToErrorDtoMapperTest.java @@ -31,6 +31,7 @@ import sonia.scm.ExceptionWithContext; import java.util.Optional; +import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; class ExceptionWithContextToErrorDtoMapperTest { @@ -51,9 +52,27 @@ class ExceptionWithContextToErrorDtoMapperTest { assertThat(dto.getUrl()).isNull(); } + @Test + void shouldMapAdditionalMessages() { + ExceptionWithUrl exception = new ExceptionWithUrl(); + ErrorDto dto = mapper.map(exception); + assertThat(dto.getAdditionalMessages()) + .extracting("message") + .containsExactly("line 1", "line 2", null); + assertThat(dto.getAdditionalMessages()) + .extracting("key") + .containsExactly(null, null, "KEY"); + } + private static class ExceptionWithUrl extends ExceptionWithContext { public ExceptionWithUrl() { - super(ContextEntry.ContextBuilder.noContext(), "With Url"); + super( + ContextEntry.ContextBuilder.noContext(), + asList( + new AdditionalMessage(null, "line 1"), + new AdditionalMessage(null, "line 2"), + new AdditionalMessage("KEY", null)), + "With Url"); } @Override From 5b44be5e5bf8df2c095fa86bca6e4d328599811c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 11 Nov 2020 11:04:14 +0100 Subject: [PATCH 18/22] Show error message once only --- .../main/java/sonia/scm/repository/spi/SvnModifyCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnModifyCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnModifyCommand.java index 756170453a..326b710874 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnModifyCommand.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnModifyCommand.java @@ -87,7 +87,7 @@ public class SvnModifyCommand implements ModifyCommand { ); return String.valueOf(svnCommitInfo.getNewRevision()); } catch (SVNException e) { - throw withPattern(SVN_ERROR_PATTERN).forMessage(repository, e.getMessage()); + throw withPattern(SVN_ERROR_PATTERN).forMessage(repository, e.getErrorMessage().getRootErrorMessage().getFullMessage()); } } From 8cfbc60feac36daa939e8598f645946f0dfdaa56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 11 Nov 2020 11:37:24 +0100 Subject: [PATCH 19/22] Distinguish between errors with and without details --- .../IntegrateChangesFromWorkdirException.java | 5 +++-- ...IntegrateChangesFromWorkdirExceptionTest.java | 16 +++++++++++++++- .../src/BackendErrorNotification.tsx | 12 +++++++++++- .../src/main/resources/locales/de/plugins.json | 6 +++++- .../src/main/resources/locales/en/plugins.json | 10 +++++++--- 5 files changed, 41 insertions(+), 8 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirException.java b/scm-core/src/main/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirException.java index d0dcb28e65..f8dc0ba2d0 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirException.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirException.java @@ -37,7 +37,8 @@ import static sonia.scm.ContextEntry.ContextBuilder.entity; public class IntegrateChangesFromWorkdirException extends ExceptionWithContext { - private static final String CODE = "CHRM7IQzo1"; + static final String CODE_WITH_ADDITIONAL_MESSAGES = "CHRM7IQzo1"; + static final String CODE_WITHOUT_ADDITIONAL_MESSAGES = "ASSG1ehZ01"; private static final Pattern SCM_MESSAGE_PATTERN = Pattern.compile(".*\\[SCM\\] (.*)"); @@ -55,7 +56,7 @@ public class IntegrateChangesFromWorkdirException extends ExceptionWithContext { @Override public String getCode() { - return CODE; + return getAdditionalMessages().isEmpty()? CODE_WITHOUT_ADDITIONAL_MESSAGES : CODE_WITH_ADDITIONAL_MESSAGES; } public static class MessageExtractor { diff --git a/scm-core/src/test/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirExceptionTest.java b/scm-core/src/test/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirExceptionTest.java index 6a4580361e..d990a64ef7 100644 --- a/scm-core/src/test/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirExceptionTest.java +++ b/scm-core/src/test/java/sonia/scm/repository/spi/IntegrateChangesFromWorkdirExceptionTest.java @@ -30,6 +30,8 @@ import sonia.scm.repository.Repository; import java.util.regex.Pattern; import static org.assertj.core.api.Assertions.assertThat; +import static sonia.scm.repository.spi.IntegrateChangesFromWorkdirException.CODE_WITHOUT_ADDITIONAL_MESSAGES; +import static sonia.scm.repository.spi.IntegrateChangesFromWorkdirException.CODE_WITH_ADDITIONAL_MESSAGES; import static sonia.scm.repository.spi.IntegrateChangesFromWorkdirException.forMessage; import static sonia.scm.repository.spi.IntegrateChangesFromWorkdirException.withPattern; @@ -39,11 +41,13 @@ class IntegrateChangesFromWorkdirExceptionTest { @Test void shouldExtractMessagesWithDefaultPrefix() { - IntegrateChangesFromWorkdirException exception = forMessage(REPOSITORY, "prefix [SCM] line 1\nprefix [SCM] line 2\nirrelevant line\n"); + IntegrateChangesFromWorkdirException exception = + forMessage(REPOSITORY, "prefix [SCM] line 1\nprefix [SCM] line 2\nirrelevant line\n"); assertThat(exception.getAdditionalMessages()) .extracting("message") .containsExactly("line 1", "line 2"); + assertThat(exception.getCode()).isEqualTo(CODE_WITH_ADDITIONAL_MESSAGES); } @Test @@ -55,5 +59,15 @@ class IntegrateChangesFromWorkdirExceptionTest { assertThat(exception.getAdditionalMessages()) .extracting("message") .containsExactly("line"); + assertThat(exception.getCode()).isEqualTo(CODE_WITH_ADDITIONAL_MESSAGES); + } + + @Test + void shouldCreateSpecialMessageForMissingAdditionalMessages() { + IntegrateChangesFromWorkdirException exception = + forMessage(REPOSITORY, "There is no message"); + + assertThat(exception.getAdditionalMessages()).isEmpty(); + assertThat(exception.getCode()).isEqualTo(CODE_WITHOUT_ADDITIONAL_MESSAGES); } } diff --git a/scm-ui/ui-components/src/BackendErrorNotification.tsx b/scm-ui/ui-components/src/BackendErrorNotification.tsx index 01386a917a..5b0aac0d9b 100644 --- a/scm-ui/ui-components/src/BackendErrorNotification.tsx +++ b/scm-ui/ui-components/src/BackendErrorNotification.tsx @@ -71,7 +71,17 @@ class BackendErrorNotification extends React.Component { renderAdditionalMessages = () => { const { error, t } = this.props; if (error.additionalMessages) { - return error.additionalMessages.map(a => a.key ? t(`errors.${a.key}.description`) : a.message).map(m =>

{m}

); + return ( + <> +
+ {error.additionalMessages + .map(a => (a.key ? t(`errors.${a.key}.description`) : a.message)) + .map(m => ( +

{m}

+ ))} +
+ + ); } }; diff --git a/scm-webapp/src/main/resources/locales/de/plugins.json b/scm-webapp/src/main/resources/locales/de/plugins.json index 2226986629..300fa3d17a 100644 --- a/scm-webapp/src/main/resources/locales/de/plugins.json +++ b/scm-webapp/src/main/resources/locales/de/plugins.json @@ -197,7 +197,11 @@ }, "CHRM7IQzo1": { "displayName": "Änderung des Repositories nicht möglich", - "description": "Die gewünschte Änderung am Repository konnte nicht durchgeführt werden. Höchst wahrscheinlich liegt dieses an installierten Plugins mit Hooks oder nativen Hooks. Folgend sind eventuelle weitere Meldungen." + "description": "Die gewünschte Änderung am Repository konnte nicht durchgeführt werden. Höchst wahrscheinlich liegt dieses an Prüfungen von Plugins. Bitte prüfen Sie die Einstellungen. Im Folgenden finden Sie weitere Meldungen zu dem Fehler:" + }, + "ASSG1ehZ01": { + "displayName": "Änderung des Repositories nicht möglich", + "description": "Die gewünschte Änderung am Repository konnte nicht durchgeführt werden. Es gab keine weiteren Meldungen." }, "thbsUFokjk": { "displayName": "Unerlaubte Änderung eines Schlüsselwerts", diff --git a/scm-webapp/src/main/resources/locales/en/plugins.json b/scm-webapp/src/main/resources/locales/en/plugins.json index 246f667e7b..8d6086ac19 100644 --- a/scm-webapp/src/main/resources/locales/en/plugins.json +++ b/scm-webapp/src/main/resources/locales/en/plugins.json @@ -197,7 +197,11 @@ }, "CHRM7IQzo1": { "displayName": "Could not modify repository", - "description": "The requested modification to the repository was rejected. Most probably this was due to plugins with repository hooks or native hooks. Following are potential additional messages." + "description": "The requested modification to the repository was rejected. The most likely reason for this are checks from plugins. Please check your settings. See the following messages for more details:" + }, + "ASSG1ehZ01": { + "displayName": "Could not modify repository", + "description": "The requested modification to the repository was rejected. There were no more messages." }, "thbsUFokjk": { "displayName": "Illegal change of an identifier", @@ -205,7 +209,7 @@ }, "40RaYIeeR1": { "displayName": "No changes were made", - "description": "No changes were made to the files of the repository. Therefor no new commit could be created. Possibly changes cannot be applied due to an .ignore-File definition." + "description": "No changes were made to the files of the repository. Therefore no new commit could be created. Possibly changes cannot be applied due to an .ignore-File definition." }, "ERS2vYb7U1": { "displayName": "Illegal change of namespace", @@ -213,7 +217,7 @@ }, "4iRct4avG1": { "displayName": "The revisions have unrelated histories", - "description": "The revisions have unrelated histories. Therefor there is no common commit to compare with." + "description": "The revisions have unrelated histories. Therefore there is no common commit to compare with." }, "65RdZ5atX1": { "displayName": "Error removing plugin files", From a479fcbfe13cc62538efaef5b5571e4a4d100395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 11 Nov 2020 13:50:55 +0100 Subject: [PATCH 20/22] Log change --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a74919a7e..59fddd12c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Added - Lookup command which provides further repository information ([#1415](https://github.com/scm-manager/scm-manager/pull/1415)) +- Include messages from scm protocol in modification or merge errors ([#1420](https://github.com/scm-manager/scm-manager/pull/1420)) ### Fixed - Error on repository initialization with least-privilege user ([#1414](https://github.com/scm-manager/scm-manager/pull/1414)) From f8219305a3cc42fb6b7191eebbe7c3e98cb4b7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Thu, 12 Nov 2020 13:46:36 +0100 Subject: [PATCH 21/22] Strip 'Error:' from hg error messages --- .../sonia/scm/repository/spi/HgModifyCommand.java | 7 ++++++- .../scm/repository/spi/HgModifyCommandTest.java | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java index 4b1ce27d38..302bea6d4f 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java @@ -39,9 +39,12 @@ import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.util.List; +import java.util.regex.Pattern; public class HgModifyCommand implements ModifyCommand { + static final Pattern HG_MESSAGE_PATTERN = Pattern.compile(".*\\[SCM\\](?: Error:)? (.*)"); + private HgCommandContext context; private final HgWorkingCopyFactory workingCopyFactory; @@ -115,7 +118,9 @@ public class HgModifyCommand implements ModifyCommand { workingCopyFactory.configure(pullCommand); return pullCommand.execute(workingCopy.getDirectory().getAbsolutePath()); } catch (ExecutionException e) { - throw IntegrateChangesFromWorkdirException.forMessage(context.getScmRepository(), e.getMessage()); + throw IntegrateChangesFromWorkdirException + .withPattern(HG_MESSAGE_PATTERN) + .forMessage(context.getScmRepository(), e.getMessage()); } catch (IOException e) { throw new InternalRepositoryException(context.getScmRepository(), String.format("Could not pull modify changes from working copy to central repository for branch %s", request.getBranch()), diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java index d55005f675..a2323f69e7 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java @@ -42,6 +42,7 @@ import sonia.scm.web.HgRepositoryEnvironmentBuilder; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.regex.Matcher; import static org.assertj.core.api.Assertions.assertThat; @@ -186,4 +187,18 @@ public class HgModifyCommandTest extends AbstractHgCommandTestBase { public void shouldThrowNoChangesMadeExceptionIfEmptyLocalChangesetAfterRequest() { hgModifyCommand.execute(new ModifyCommandRequest()); } + + @Test + public void shouldExtractSimpleMessage() { + Matcher matcher = HgModifyCommand.HG_MESSAGE_PATTERN.matcher("[SCM] This is a simple message"); + matcher.matches(); + assertThat(matcher.group(1)).isEqualTo("This is a simple message"); + } + + @Test + public void shouldExtractErrorMessage() { + Matcher matcher = HgModifyCommand.HG_MESSAGE_PATTERN.matcher("[SCM] Error: This is an error message"); + matcher.matches(); + assertThat(matcher.group(1)).isEqualTo("This is an error message"); + } } From 08a2cca06da588fedee9815f0aac0987cff7c06a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Thu, 12 Nov 2020 13:55:01 +0100 Subject: [PATCH 22/22] Heed review comments --- .../src/main/java/sonia/scm/ExceptionWithContext.java | 8 ++++---- scm-ui/ui-components/src/BackendErrorNotification.tsx | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/ExceptionWithContext.java b/scm-core/src/main/java/sonia/scm/ExceptionWithContext.java index a972c4e794..16c0f0218c 100644 --- a/scm-core/src/main/java/sonia/scm/ExceptionWithContext.java +++ b/scm-core/src/main/java/sonia/scm/ExceptionWithContext.java @@ -37,21 +37,21 @@ public abstract class ExceptionWithContext extends RuntimeException { private final List context; private final List additionalMessages; - public ExceptionWithContext(List context, String message) { + protected ExceptionWithContext(List context, String message) { this(context, null, message); } - public ExceptionWithContext(List context, List additionalMessages, String message) { + protected ExceptionWithContext(List context, List additionalMessages, String message) { super(message); this.context = context; this.additionalMessages = additionalMessages; } - public ExceptionWithContext(List context, String message, Exception cause) { + protected ExceptionWithContext(List context, String message, Exception cause) { this(context, null, message, cause); } - public ExceptionWithContext(List context, List additionalMessages, String message, Exception cause) { + protected ExceptionWithContext(List context, List additionalMessages, String message, Exception cause) { super(message, cause); this.context = context; this.additionalMessages = additionalMessages; diff --git a/scm-ui/ui-components/src/BackendErrorNotification.tsx b/scm-ui/ui-components/src/BackendErrorNotification.tsx index 5b0aac0d9b..a680304e73 100644 --- a/scm-ui/ui-components/src/BackendErrorNotification.tsx +++ b/scm-ui/ui-components/src/BackendErrorNotification.tsx @@ -75,9 +75,11 @@ class BackendErrorNotification extends React.Component { <>
{error.additionalMessages - .map(a => (a.key ? t(`errors.${a.key}.description`) : a.message)) - .map(m => ( -

{m}

+ .map(additionalMessage => + additionalMessage.key ? t(`errors.${additionalMessage.key}.description`) : additionalMessage.message + ) + .map(message => ( +

{message}

))}