diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java b/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java index 7fcc4621c..e35afad9a 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java @@ -93,6 +93,13 @@ public class CommandParameter implements Serializable { */ public static final CommandParameter IGNORE_WHITESPACE = new CommandParameter("ignoreWhitespace"); + /** + * Parameter to indicate whether the commit should be signed or not. + * if false (default true) this will be used by the Git provider to pass the --no-signoff option to the commit command. + * @since 2.1.1 + */ + public static final CommandParameter SCM_COMMIT_SIGN = new CommandParameter("gitCommitSign"); + /** * Parameter name */ diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java b/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java index 4f9cd187e..8711ab257 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java @@ -187,8 +187,7 @@ public boolean getBoolean(CommandParameter parameter) throws ScmException { * @throws ScmException if the parameter doesn't exist */ public boolean getBoolean(CommandParameter parameter, boolean defaultValue) throws ScmException { - return Boolean.valueOf(getString(parameter, Boolean.toString(defaultValue))) - .booleanValue(); + return Boolean.parseBoolean(getString(parameter, Boolean.toString(defaultValue))); } // ---------------------------------------------------------------------- diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java b/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java index c3f7dcf51..fb07ba3a7 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java @@ -35,6 +35,8 @@ public class ScmTagParameters implements Serializable { private boolean sign = false; + private boolean forceNoSign = false; + private String scmRevision; public ScmTagParameters() { @@ -87,7 +89,22 @@ public void setScmRevision(String scmRevision) { this.scmRevision = scmRevision; } + public boolean isForceNoSign() { + return forceNoSign; + } + + public void setForceNoSign(boolean forceNoSign) { + this.forceNoSign = forceNoSign; + } + + @Override public String toString() { - return "[" + scmRevision + "] " + message; + return "ScmTagParameters{" + "message='" + + message + '\'' + ", remoteTagging=" + + remoteTagging + ", pinExternals=" + + pinExternals + ", sign=" + + sign + ", forceNoSign=" + + forceNoSign + ", scmRevision='" + + scmRevision + '\'' + '}'; } } diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java index 5abd458a0..7df90d2c6 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmBranch; import org.apache.maven.scm.ScmBranchParameters; import org.apache.maven.scm.ScmException; @@ -388,6 +389,12 @@ public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, Sc return this.getProviderByRepository(repository).checkIn(repository, fileSet, revision, message); } + @Override + public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters commandParameters) + throws ScmException { + return this.getProviderByRepository(repository).checkIn(repository, fileSet, commandParameters); + } + /** * {@inheritDoc} */ diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java index 3e893a23a..abb7ea6e6 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java @@ -22,6 +22,7 @@ import java.util.Date; import java.util.List; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmBranch; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; @@ -280,6 +281,23 @@ ChangeLogScmResult changeLog( */ CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, String message) throws ScmException; + /** + * Save the changes you have done into the repository. This will create a new version of the file or directory in + * the repository. + *

+ * When the fileSet has no entries, the {@code fileSet.getBasedir()} is recursively committed. When the fileSet + * has entries, the commit is non-recursive and only the elements in the fileSet are committed. + * + * @param repository the source control system + * @param fileSet the files to check in (sometimes called commit) + * @param commandParameters parameters for the command, such as commit message and whether to sign the commit. {@link CommandParameters} + * @return a {@link CheckInScmResult} that contains the file paths (relative to {@code fileSet.getBasedir()}) that + * have been checked in. + * @throws ScmException if any + */ + CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters commandParameters) + throws ScmException; + /** * Save the changes you have done into the repository. This will create a new version of the file or directory in * the repository. diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java index 414156b28..ea310a0c1 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java @@ -416,6 +416,16 @@ public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, Sc return checkin(repository.getProviderRepository(), fileSet, parameters); } + @Override + public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters) + throws ScmException { + return checkIn( + repository, + fileSet, + parameters.getScmVersion(CommandParameter.SCM_VERSION, null), + parameters.getString(CommandParameter.MESSAGE)); + } + protected CheckInScmResult checkin( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException { throw new NoSuchCommandScmException("checkin"); 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..ed03de647 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 @@ -405,6 +405,23 @@ CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, String ta */ CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, String message) throws ScmException; + /** + * Save the changes you have done into the repository. This will create a new version of the file or + * directory in the repository. + *

+ * When the fileSet has no entries, the fileSet.getBaseDir() is recursively committed. + * When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet + * are committed. + * + * @param repository the source control system + * @param fileSet the files to check in (sometimes called commit) + * @param parameters {@link CommandParameters} + * @return TODO + * @throws ScmException if any + */ + CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters) + throws ScmException; + /** * Save the changes you have done into the repository. This will create a new version of the file or * directory in the repository. diff --git a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/TagMojo.java b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/TagMojo.java index 3c72777c5..3e3c2bf6f 100644 --- a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/TagMojo.java +++ b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/TagMojo.java @@ -107,6 +107,14 @@ public class TagMojo extends AbstractScmMojo { @Parameter(property = "sign", defaultValue = "false") private boolean sign; + /** + * Enable the "--no-sign" in Git + * + * @since 2.1.1 + */ + @Parameter(property = "forceNoSign", defaultValue = "false") + private boolean forceNoSign; + @Inject public TagMojo(ScmManager manager, SettingsDecrypter settingsDecrypter) { super(manager, settingsDecrypter); @@ -150,6 +158,7 @@ public void execute() throws MojoExecutionException { scmTagParameters.setRemoteTagging(remoteTagging); scmTagParameters.setPinExternals(pinExternals); scmTagParameters.setSign(sign); + scmTagParameters.setForceNoSign(forceNoSign); TagScmResult result = provider.tag(repository, getFileSet(), finalTag, scmTagParameters); @@ -158,4 +167,20 @@ public void execute() throws MojoExecutionException { throw new MojoExecutionException("Cannot run tag command : ", e); } } + + public boolean isSign() { + return sign; + } + + public void setSign(boolean sign) { + this.sign = sign; + } + + public boolean isForceNoSign() { + return forceNoSign; + } + + public void setForceNoSign(boolean forceNoSign) { + this.forceNoSign = forceNoSign; + } } diff --git a/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/UntagMojoTest.java b/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/UntagMojoTest.java index c47ab595d..4ed30b7e4 100644 --- a/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/UntagMojoTest.java +++ b/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/UntagMojoTest.java @@ -72,6 +72,8 @@ public void testUntag() throws Exception { TagMojo tagMojo = (TagMojo) lookupMojo("tag", getTestFile("src/test/resources/mojos/untag/tag.xml")); tagMojo.setWorkingDirectory(checkoutDir); + tagMojo.setSign(false); + tagMojo.setForceNoSign(true); tagMojo.setConnectionUrl(getConnectionLocalAddress(tagMojo)); tagMojo.execute(); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java index 38aecb42f..c4cc398bc 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java @@ -186,6 +186,12 @@ public CheckInScmResult checkin(ScmProviderRepository repository, ScmFileSet fil return (CheckInScmResult) executeCommand(getCheckInCommand(), repository, fileSet, parameters); } + @Override + public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters) + throws ScmException { + return (CheckInScmResult) getCheckInCommand().execute(repository.getProviderRepository(), fileSet, parameters); + } + protected abstract GitCommand getCheckOutCommand(); /** {@inheritDoc} */ diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java index 38ca106cc..9099156eb 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java @@ -82,9 +82,13 @@ public ScmResult executeTagCommand( int exitCode; - boolean sign = scmTagParameters.isSign(); - - Commandline clTag = createCommandLine(repository, fileSet.getBasedir(), tag, messageFile, sign); + Commandline clTag = createCommandLine( + repository, + fileSet.getBasedir(), + tag, + messageFile, + scmTagParameters.isSign(), + scmTagParameters.isForceNoSign()); exitCode = GitCommandLineUtils.execute(clTag, stdout, stderr); if (exitCode != 0) { @@ -127,13 +131,21 @@ public ScmResult executeTagCommand( // // ---------------------------------------------------------------------- - public static Commandline createCommandLine( - GitScmProviderRepository repository, File workingDirectory, String tag, File messageFile, boolean sign) { + static Commandline createCommandLine( + GitScmProviderRepository repository, + File workingDirectory, + String tag, + File messageFile, + boolean sign, + boolean forceNoSign) { Commandline cl = GitCommandLineUtils.getBaseGitCommandLine(workingDirectory, "tag"); if (sign) { cl.createArg().setValue("-s"); } + if (forceNoSign) { + cl.createArg().setValue("--no-sign"); + } cl.createArg().setValue("-F"); cl.createArg().setValue(messageFile.getAbsolutePath()); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommandTest.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommandTest.java index 7bafee418..e57008313 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommandTest.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommandTest.java @@ -52,7 +52,11 @@ public void setUp() throws Exception { @Test public void testCommandLineTag() throws Exception { testCommandLine( - "scm:git:http://foo.com/git/trunk", "my-tag-1", "git tag " + messageFileString + " my-tag-1", false); + "scm:git:http://foo.com/git/trunk", + "my-tag-1", + "git tag " + messageFileString + " my-tag-1", + false, + false); } @Test @@ -61,30 +65,44 @@ public void testCommandLineWithUsernameAndTag() throws Exception { "scm:git:http://anonymous@foo.com/git/trunk", "my-tag-1", "git tag " + messageFileString + " my-tag-1", + false, false); } + @Test + public void testCommandLineWithUsernameAndTagForceNoSign() throws Exception { + testCommandLine( + "scm:git:http://anonymous@foo.com/git/trunk", + "my-tag-1", + "git tag --no-sign " + messageFileString + " my-tag-1", + false, + true); + } + @Test public void testCommandLineWithUsernameAndTagAndSign() throws Exception { testCommandLine( "scm:git:http://anonymous@foo.com/git/trunk", "my-tag-1", "git tag -s " + messageFileString + " my-tag-1", - true); + true, + false); } // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- - private void testCommandLine(String scmUrl, String tag, String commandLine, boolean sign) throws Exception { + private void testCommandLine(String scmUrl, String tag, String commandLine, boolean sign, boolean forceNoSign) + throws Exception { File workingDirectory = getTestFile("target/git-checkin-command-test"); ScmRepository repository = getScmManager().makeScmRepository(scmUrl); GitScmProviderRepository gitRepository = (GitScmProviderRepository) repository.getProviderRepository(); - Commandline cl = GitTagCommand.createCommandLine(gitRepository, workingDirectory, tag, messageFile, sign); + Commandline cl = + GitTagCommand.createCommandLine(gitRepository, workingDirectory, tag, messageFile, sign, forceNoSign); assertCommandLine(commandLine, workingDirectory, cl); } diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/checkin/GitCheckInCommandTckTest.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/checkin/GitCheckInCommandTckTest.java index 009a877a1..db1aa3410 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/checkin/GitCheckInCommandTckTest.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/checkin/GitCheckInCommandTckTest.java @@ -21,6 +21,8 @@ import java.io.File; import java.io.IOException; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.PlexusJUnit4TestCase; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.command.checkin.CheckInScmResult; @@ -84,12 +86,20 @@ public void testRejectedNonFastForwardPush() throws Exception { ScmFileSet blockingFileSet = createWorkspaceChange(rejectedRepo); - CheckInScmResult blockingResult = getScmManager().checkIn(scmRepository, blockingFileSet, "Blocking commit"); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "Blocking commit"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + + CheckInScmResult blockingResult = getScmManager().checkIn(scmRepository, blockingFileSet, commandParameters); assertResultIsSuccess(blockingResult); ScmFileSet rejectedFileSet = createWorkspaceChange(blockingRepo); - CheckInScmResult checkInScmResult = getScmManager().checkIn(scmRepository, rejectedFileSet, "Rejected commit"); + commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "Rejected commit"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + + CheckInScmResult checkInScmResult = getScmManager().checkIn(scmRepository, rejectedFileSet, commandParameters); assertFalse( "check-in should have been rejected since fast forward was not possible", checkInScmResult.isSuccess()); } diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java index d248860e2..02c57c855 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java @@ -26,6 +26,8 @@ import java.util.Set; import org.apache.commons.lang3.StringUtils; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFile; import org.apache.maven.scm.ScmFileSet; @@ -72,11 +74,12 @@ public class JGitCheckInCommand extends AbstractCheckInCommand implements GitCom protected static final String GIT_FORCE = "forceUsername"; - /** - * {@inheritDoc} - */ - protected CheckInScmResult executeCheckInCommand( - ScmProviderRepository repo, ScmFileSet fileSet, String message, ScmVersion version) throws ScmException { + @Override + public CheckInScmResult executeCommand(ScmProviderRepository repo, ScmFileSet fileSet, CommandParameters parameters) + throws ScmException { + String message = parameters.getString(CommandParameter.MESSAGE); + + ScmVersion version = parameters.getScmVersion(CommandParameter.SCM_VERSION, null); Git git = null; try { @@ -124,8 +127,11 @@ protected CheckInScmResult executeCheckInCommand( UserInfo author = getAuthor(repo, git); UserInfo committer = getCommitter(repo, git); - CommitCommand command = git.commit().setMessage(message).setAuthor(author.name, author.email); - command.setCommitter(committer.name, committer.email); + CommitCommand command = git.commit() + .setMessage(message) + .setAuthor(author.name, author.email) + .setCommitter(committer.name, committer.email) + .setSign(parameters.getBoolean(CommandParameter.SCM_COMMIT_SIGN, true)); RevCommit commitRev = command.call(); logger.info("commit done: " + commitRev.getShortMessage()); @@ -169,6 +175,18 @@ protected CheckInScmResult executeCheckInCommand( } } + /** + * {@inheritDoc} + */ + protected CheckInScmResult executeCheckInCommand( + ScmProviderRepository repo, ScmFileSet fileSet, String message, ScmVersion version) throws ScmException { + + CommandParameters parameters = new CommandParameters(); + parameters.setString(CommandParameter.MESSAGE, message); + parameters.setScmVersion(CommandParameter.SCM_VERSION, version); + return executeCommand(repo, fileSet, parameters); + } + private boolean isSuccessStatus(RemoteRefUpdate.Status remoteRefUpdateStatus) { return remoteRefUpdateStatus == RemoteRefUpdate.Status.OK || remoteRefUpdateStatus == RemoteRefUpdate.Status.UP_TO_DATE; diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java index d288d6da4..997716478 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java @@ -76,6 +76,7 @@ public ScmResult executeTagCommand( // tag the revision String tagMessage = scmTagParameters.getMessage(); Ref tagRef = git.tag() + .setSigned(scmTagParameters.isSign()) .setName(escapedTagName) .setMessage(tagMessage) .setForceUpdate(false) diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommandTckTest.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommandTckTest.java index d65a2e8aa..5f65e68e8 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommandTckTest.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommandTckTest.java @@ -21,6 +21,7 @@ import java.io.File; import java.io.IOException; +import org.apache.maven.scm.manager.ScmManager; import org.apache.maven.scm.provider.git.GitScmTestUtils; import org.apache.maven.scm.provider.git.command.changelog.GitChangeLogCommandTckTest; import org.eclipse.jgit.util.FileUtils; @@ -36,6 +37,12 @@ public String getScmUrl() throws Exception { return GitScmTestUtils.getScmUrl(getRepositoryRoot(), "jgit"); } + @Override + protected ScmManager getScmManager() throws Exception { + ScmManager scmManager = super.getScmManager(); + return scmManager; + } + @Override protected void deleteDirectory(File directory) throws IOException { if (directory.exists()) { diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java index 145996cde..17cfce51e 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java @@ -23,6 +23,8 @@ import java.io.IOException; import java.io.PrintWriter; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.command.add.AddScmResult; @@ -254,8 +256,12 @@ private void createAndCommitFile(File file, String username) throws Exception, S assertResultIsSuccess(addResult); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "Commit message"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + CheckInScmResult result = getScmManager() - .checkIn(scmRepository, new ScmFileSet(getWorkingCopy(), "**/Foo.java"), "Commit message"); + .checkIn(scmRepository, new ScmFileSet(getWorkingCopy(), "**/Foo.java"), commandParameters); assertResultIsSuccess(result); } diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java b/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java index fc8c3b97d..1087f879b 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java @@ -23,6 +23,7 @@ import java.util.Date; import java.util.List; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmBranch; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; @@ -275,6 +276,12 @@ public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, Sc return this.getProviderByRepository(repository).checkIn(repository, fileSet, revision, message); } + @Override + public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters commandParameters) + throws ScmException { + return this.getProviderByRepository(repository).checkIn(repository, fileSet, commandParameters); + } + /** * {@inheritDoc} */ diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java b/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java index 529e13ab3..894b09b83 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java @@ -485,6 +485,12 @@ public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, Sc return getCheckInScmResult(); } + @Override + public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters) + throws ScmException { + return getCheckInScmResult(); + } + /** * {@inheritDoc} */ diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java index a54539356..894978288 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java @@ -23,6 +23,8 @@ import java.nio.file.Files; import java.nio.file.Path; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmBranch; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmTckTestCase; @@ -68,8 +70,12 @@ public void testBranchCommandTest() throws Exception { this.edit(getWorkingCopy(), "readme.txt", null, getScmRepository()); changeReadmeTxt(readmeTxt.toPath()); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "commit message"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + CheckInScmResult checkinResult = - getScmManager().checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy()), "commit message"); + getScmManager().checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy()), commandParameters); assertResultIsSuccess(checkinResult); diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java index cd0421b4f..ec40df28e 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java @@ -23,6 +23,8 @@ import java.util.List; import org.apache.maven.scm.ChangeSet; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmBranch; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmTagParameters; @@ -86,7 +88,10 @@ public void testChangeLogCommand() throws Exception { // Make a change to the readme.txt and commit the change this.edit(getWorkingCopy(), "readme.txt", null, getScmRepository()); ScmTestCase.makeFile(getWorkingCopy(), "/readme.txt", "changed readme.txt"); - CheckInScmResult checkInResult = provider.checkIn(getScmRepository(), fileSet, COMMIT_MSG); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, COMMIT_MSG); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + CheckInScmResult checkInResult = provider.checkIn(getScmRepository(), fileSet, commandParameters); assertTrue("Unable to checkin changes to the repository", checkInResult.isSuccess()); ScmTagParameters scmTagParameters = new ScmTagParameters(); diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/checkin/CheckInCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/checkin/CheckInCommandTckTest.java index 06c952400..409dbf2ba 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/checkin/CheckInCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/checkin/CheckInCommandTckTest.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.Map; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmFile; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmFileStatus; @@ -83,8 +85,12 @@ public void testCheckInCommandTest() throws Exception { "src/main/java/Foo.java", FilenameUtils.normalizeFilename(files.get(0).getPath())); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "Commit message"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + CheckInScmResult result = - getScmManager().checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy()), "Commit message"); + getScmManager().checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy()), commandParameters); assertResultIsSuccess(result); @@ -149,8 +155,12 @@ public void testCheckInCommandPartialFileset() throws Exception { assertResultIsSuccess(addResult); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "Commit message"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + CheckInScmResult result = getScmManager() - .checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy(), "**/Foo.java", null), "Commit message"); + .checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy(), "**/Foo.java", null), commandParameters); assertResultIsSuccess(result); @@ -210,11 +220,15 @@ public void testCheckInCommandFilesetWithBasedirOtherThanWorkingCopyRoot() throw "main/java/Foo.java", FilenameUtils.normalizeFilename(files.get(0).getPath())); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "Commit message"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + CheckInScmResult result = getScmManager() .checkIn( getScmRepository(), new ScmFileSet(new File(getWorkingCopy(), "src"), "**/Foo.java", null), - "Commit message"); + commandParameters); assertResultIsSuccess(result); diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remove/RemoveCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remove/RemoveCommandTckTest.java index 0c7f61c8e..f9a29f6a5 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remove/RemoveCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remove/RemoveCommandTckTest.java @@ -21,6 +21,8 @@ import java.io.File; import java.util.List; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmFile; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmFileStatus; @@ -64,9 +66,13 @@ public void testRemoveCommand() throws Exception { assertEquals(ScmFileStatus.DELETED, file1.getStatus()); assertPath("test/java/Test.java", file1.getPath()); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "Commit message"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + // checkin changes CheckInScmResult checkinResult = - getScmManager().checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy()), "Commit message"); + getScmManager().checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy()), commandParameters); assertResultIsSuccess(checkinResult); diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java index 220641f3d..36239cf12 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java @@ -23,6 +23,8 @@ import java.util.List; import java.util.TreeSet; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmFile; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmFileStatus; @@ -60,7 +62,11 @@ public abstract class StatusCommandTckTest extends ScmTckTestCase { protected void commit(File workingDirectory, ScmRepository repository) throws Exception { - CheckInScmResult result = getScmManager().checkIn(repository, new ScmFileSet(workingDirectory), "No msg"); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "No msg"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + CheckInScmResult result = + getScmManager().checkIn(repository, new ScmFileSet(workingDirectory), commandParameters); assertTrue("Check result was successful, output: " + result.getCommandOutput(), result.isSuccess()); @@ -145,7 +151,7 @@ public void testStatusCommand() throws Exception { // Assert the files in the updated files list // ---------------------------------------------------------------------- - Iterator files = new TreeSet(changedFiles).iterator(); + Iterator files = new TreeSet<>(changedFiles).iterator(); ScmFile file = files.next(); assertPath("src/main/java/org/Foo.java", file.getPath()); diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java index 206e553be..aa8f6ca5a 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java @@ -23,6 +23,8 @@ import java.nio.file.Files; import java.nio.file.Path; +import org.apache.maven.scm.CommandParameter; +import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmTag; import org.apache.maven.scm.ScmTckTestCase; @@ -68,8 +70,12 @@ public void testTagCommandTest() throws Exception { this.edit(getWorkingCopy(), "readme.txt", null, getScmRepository()); changeReadmeTxt(readmeTxt.toPath()); + CommandParameters commandParameters = new CommandParameters(); + commandParameters.setString(CommandParameter.MESSAGE, "Commit message"); + commandParameters.setString(CommandParameter.SCM_COMMIT_SIGN, "false"); + CheckInScmResult checkinResult = - getScmManager().checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy()), "commit message"); + getScmManager().checkIn(getScmRepository(), new ScmFileSet(getWorkingCopy()), commandParameters); assertResultIsSuccess(checkinResult);