You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kw...@apache.org on 2023/07/20 07:35:45 UTC
[maven-scm] branch feature/consider-interactive-for-svnexe created (now b621a7ec7)
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a change to branch feature/consider-interactive-for-svnexe
in repository https://gitbox.apache.org/repos/asf/maven-scm.git
at b621a7ec7 [SCM-1011] Consider interactive flag for SvnExeScmProvider
This branch includes the following new commits:
new b621a7ec7 [SCM-1011] Consider interactive flag for SvnExeScmProvider
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[maven-scm] 01/01: [SCM-1011] Consider interactive flag for SvnExeScmProvider
Posted by kw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch feature/consider-interactive-for-svnexe
in repository https://gitbox.apache.org/repos/asf/maven-scm.git
commit b621a7ec75172b25a78f680cab15c82b80d87a34
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Thu Jul 20 09:29:33 2023 +0200
[SCM-1011] Consider interactive flag for SvnExeScmProvider
---
.../org/apache/maven/scm/provider/ScmProvider.java | 4 +--
.../maven-scm-provider-svn-commons/pom.xml | 2 +-
.../src/main/mdo/svn-settings.mdo | 2 +-
.../scm/provider/svn/svnexe/SvnExeScmProvider.java | 13 +++++++--
.../svn/svnexe/command/SvnCommandLineUtils.java | 16 ++++++++++-
.../svnexe/command/checkin/SvnCheckInCommand.java | 14 +++++++++-
.../command/checkout/SvnCheckOutCommand.java | 32 ++++++++++++++++++++--
.../svnexe/command/update/SvnUpdateCommand.java | 14 ++++++++--
.../command/checkin/SvnCheckInCommandTest.java | 4 +--
.../command/checkout/SvnCheckOutCommandTest.java | 2 +-
.../command/update/SvnUpdateCommandTest.java | 2 +-
11 files changed, 88 insertions(+), 17 deletions(-)
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
index 72593d5ef..e9e26cff4 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
@@ -70,9 +70,9 @@ public interface ScmProvider {
throws ScmRepositoryException, UnknownRepositoryStructure;
/**
- * Sets the interactive mode.
+ * Sets the interactive mode, which by default (i.e. if not called) is assumed to be true by providers.
*
- * @param interactive either {@code true} in case user may be prompted for information, otherwise {@code false}
+ * @param interactive either {@code true} in case user may be prompted for information, otherwise {@code false}.
* @since 2.0.0-M2
*/
default void setInteractive(boolean interactive) {}
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
index 03a286027..c0ac39883 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
@@ -59,7 +59,7 @@
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
<configuration>
- <version>1.1.0</version>
+ <version>2.1.0</version>
<models>
<model>src/main/mdo/svn-settings.mdo</model>
</models>
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo
index 92f7e40cb..1ff2a151c 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/mdo/svn-settings.mdo
@@ -70,7 +70,7 @@
<type>boolean</type>
<defaultValue>true</defaultValue>
<description><![CDATA[
- Switch off if you do not like to use <code>--non-interactive</code> e.g. on Leopard (see SCM-402).
+ Switch off if you do not like to use <code>--non-interactive</code> e.g. on Leopard (see SCM-402) when used with non-interactive SVN provider.
]]></description>
</field>
<field>
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
index f2b6d120e..adb51e02e 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
@@ -56,6 +56,13 @@ import org.apache.maven.scm.repository.ScmRepositoryException;
@Singleton
@Named("svn")
public class SvnExeScmProvider extends AbstractSvnScmProvider {
+ private boolean interactive;
+
+ @Override
+ public void setInteractive(boolean interactive) {
+ this.interactive = interactive;
+ }
+
/**
* {@inheritDoc}
*/
@@ -85,7 +92,7 @@ public class SvnExeScmProvider extends AbstractSvnScmProvider {
*/
@Override
protected SvnCommand getCheckInCommand() {
- return new SvnCheckInCommand();
+ return new SvnCheckInCommand(interactive);
}
/**
@@ -93,7 +100,7 @@ public class SvnExeScmProvider extends AbstractSvnScmProvider {
*/
@Override
protected SvnCommand getCheckOutCommand() {
- return new SvnCheckOutCommand();
+ return new SvnCheckOutCommand(interactive);
}
/**
@@ -149,7 +156,7 @@ public class SvnExeScmProvider extends AbstractSvnScmProvider {
*/
@Override
protected SvnCommand getUpdateCommand() {
- return new SvnUpdateCommand();
+ return new SvnUpdateCommand(interactive);
}
/**
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/SvnCommandLineUtils.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/SvnCommandLineUtils.java
index cca583245..b8addc007 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/SvnCommandLineUtils.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/SvnCommandLineUtils.java
@@ -71,7 +71,21 @@ public final class SvnCommandLineUtils {
targets.deleteOnExit();
}
+ /**
+ * Shortcut for {@link #getBaseSvnCommandLine(File, SvnScmProviderRepository, boolean)} with the last argument being {@code false}.
+ * Although usually the interactive mode defaults to {@code true} the SVN provider always assumed non-interactive in the past.
+ * @param workingDirectory
+ * @param repository
+ * @return
+ * @deprecated Use {@link #getBaseSvnCommandLine(File, SvnScmProviderRepository, boolean)} instead
+ */
+ @Deprecated
public static Commandline getBaseSvnCommandLine(File workingDirectory, SvnScmProviderRepository repository) {
+ return getBaseSvnCommandLine(workingDirectory, repository, false);
+ }
+
+ public static Commandline getBaseSvnCommandLine(
+ File workingDirectory, SvnScmProviderRepository repository, boolean interactive) {
Commandline cl = new Commandline();
cl.setExecutable("svn");
@@ -112,7 +126,7 @@ public final class SvnCommandLineUtils {
cl.createArg().setValue("--no-auth-cache");
}
- if (SvnUtil.getSettings().isUseNonInteractive()) {
+ if (!interactive && SvnUtil.getSettings().isUseNonInteractive()) {
cl.createArg().setValue("--non-interactive");
}
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommand.java
index 7f8ecdc45..f177817a1 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommand.java
@@ -43,6 +43,12 @@ import org.codehaus.plexus.util.cli.Commandline;
*
*/
public class SvnCheckInCommand extends AbstractCheckInCommand implements SvnCommand {
+ private final boolean interactive;
+
+ public SvnCheckInCommand(boolean interactive) {
+ this.interactive = interactive;
+ }
+
/** {@inheritDoc} */
protected CheckInScmResult executeCheckInCommand(
ScmProviderRepository repo, ScmFileSet fileSet, String message, ScmVersion version) throws ScmException {
@@ -104,7 +110,13 @@ public class SvnCheckInCommand extends AbstractCheckInCommand implements SvnComm
public static Commandline createCommandLine(
SvnScmProviderRepository repository, ScmFileSet fileSet, File messageFile) throws ScmException {
- Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine(fileSet.getBasedir(), repository);
+ return createCommandLine(repository, fileSet, messageFile, true);
+ }
+
+ public static Commandline createCommandLine(
+ SvnScmProviderRepository repository, ScmFileSet fileSet, File messageFile, boolean interactive)
+ throws ScmException {
+ Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine(fileSet.getBasedir(), repository, interactive);
cl.createArg().setValue("commit");
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
index 6acd729ec..79b9c1c99 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
@@ -46,6 +46,12 @@ import org.codehaus.plexus.util.cli.Commandline;
*
*/
public class SvnCheckOutCommand extends AbstractCheckOutCommand implements SvnCommand {
+ private final boolean interactive;
+
+ public SvnCheckOutCommand(boolean interactive) {
+ this.interactive = interactive;
+ }
+
/**
* {@inheritDoc}
*/
@@ -66,7 +72,7 @@ public class SvnCheckOutCommand extends AbstractCheckOutCommand implements SvnCo
url = SvnCommandUtils.fixUrl(url, repository.getUser());
- Commandline cl = createCommandLine(repository, fileSet.getBasedir(), version, url, recursive);
+ Commandline cl = createCommandLine(repository, fileSet.getBasedir(), version, url, recursive, interactive);
SvnCheckOutConsumer consumer = new SvnCheckOutConsumer(fileSet.getBasedir());
@@ -132,7 +138,29 @@ public class SvnCheckOutCommand extends AbstractCheckOutCommand implements SvnCo
ScmVersion version,
String url,
boolean recursive) {
- Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine(workingDirectory.getParentFile(), repository);
+ return createCommandLine(repository, workingDirectory, version, url, recursive, true);
+ }
+ /**
+ * Create SVN check out command line.
+ *
+ * @param repository not null
+ * @param workingDirectory not null
+ * @param version not null
+ * @param url not null
+ * @param recursive <code>true</code> if recursive check out is wanted, <code>false</code> otherwise.
+ * @param interactive <code>true</code> if executed in interactive mode, <code>false</code> otherwise.
+ * @return the SVN command line for the SVN check out.
+ * @since 2.1.0
+ */
+ public static Commandline createCommandLine(
+ SvnScmProviderRepository repository,
+ File workingDirectory,
+ ScmVersion version,
+ String url,
+ boolean recursive,
+ boolean interactive) {
+ Commandline cl =
+ SvnCommandLineUtils.getBaseSvnCommandLine(workingDirectory.getParentFile(), repository, interactive);
cl.createArg().setValue("checkout");
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java
index 75286bd99..171a9cf8c 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommand.java
@@ -48,6 +48,12 @@ import org.codehaus.plexus.util.cli.Commandline;
*
*/
public class SvnUpdateCommand extends AbstractUpdateCommand implements SvnCommand {
+ private final boolean interactive;
+
+ public SvnUpdateCommand(boolean interactive) {
+ this.interactive = interactive;
+ }
+
/** {@inheritDoc} */
protected UpdateScmResult executeUpdateCommand(ScmProviderRepository repo, ScmFileSet fileSet, ScmVersion version)
throws ScmException {
@@ -92,9 +98,13 @@ public class SvnUpdateCommand extends AbstractUpdateCommand implements SvnComman
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
-
public static Commandline createCommandLine(
SvnScmProviderRepository repository, File workingDirectory, ScmVersion version) {
+ return createCommandLine(repository, workingDirectory, version, true);
+ }
+
+ public static Commandline createCommandLine(
+ SvnScmProviderRepository repository, File workingDirectory, ScmVersion version, boolean interactive) {
Settings settings = SvnUtil.getSettings();
String workingDir = workingDirectory.getAbsolutePath();
@@ -109,7 +119,7 @@ public class SvnUpdateCommand extends AbstractUpdateCommand implements SvnComman
version = null;
}
- Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine(workingDirectory, repository);
+ Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine(workingDirectory, repository, interactive);
if (version == null || SvnTagBranchUtils.isRevisionSpecifier(version)) {
cl.createArg().setValue("update");
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommandTest.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommandTest.java
index 7e8b02e6a..af3908406 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommandTest.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommandTest.java
@@ -100,8 +100,8 @@ public class SvnCheckInCommandTest extends ScmTestCase {
SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) repository.getProviderRepository();
- Commandline cl =
- SvnCheckInCommand.createCommandLine(svnRepository, new ScmFileSet(workingDirectory), messageFile);
+ Commandline cl = SvnCheckInCommand.createCommandLine(
+ svnRepository, new ScmFileSet(workingDirectory), messageFile, false);
assertCommandLine(commandLine, workingDirectory, cl);
}
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java
index 8b9d1d176..05600f4bc 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java
@@ -108,7 +108,7 @@ public class SvnCheckOutCommandTest extends ScmTestCase {
SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) repository.getProviderRepository();
Commandline cl = SvnCheckOutCommand.createCommandLine(
- svnRepository, workingDirectory, new ScmRevision(revision), svnRepository.getUrl(), recursive);
+ svnRepository, workingDirectory, new ScmRevision(revision), svnRepository.getUrl(), recursive, false);
assertCommandLine(commandLine, workingDirectory.getParentFile(), cl);
}
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java
index d9b87493b..3646f4ba6 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/update/SvnUpdateCommandTest.java
@@ -197,7 +197,7 @@ public class SvnUpdateCommandTest extends ScmTestCase {
private void testCommandLine(String scmUrl, ScmVersion version, String commandLine, File workingDirectory)
throws Exception {
- Commandline cl = SvnUpdateCommand.createCommandLine(getSvnRepository(scmUrl), workingDirectory, version);
+ Commandline cl = SvnUpdateCommand.createCommandLine(getSvnRepository(scmUrl), workingDirectory, version, false);
assertCommandLine(commandLine, workingDirectory, cl);
}