Author: olamy Date: Sun Mar 15 22:26:37 2009 New Revision: 754778 URL: http://svn.apache.org/viewvc?rev=754778&view=rev Log: [SCM-262] scm:tag for subversion tagging from local version of code, not directly from repository add some options with ScmTagParameters to acivate a remote remota svn tagging
Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java (with props) Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTag.java (props changed) maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmVersion.java (props changed) maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/tag/AbstractTagCommand.java maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java (props changed) maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java (props changed) maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java (props changed) maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java (props changed) maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepositoryWithHost.java (props changed) maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/tag/ClearCaseTagCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/tag/HgTagCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/tag/StarteamTagCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/tag/SynergyTagCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/tag/AbstractCvsTagCommand.java maven/scm/trunk/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 maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/SvnCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java (original) +++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java Sun Mar 15 22:26:37 2009 @@ -61,6 +61,9 @@ public static final CommandParameter RUN_CHANGELOG_WITH_UPDATE = new CommandParameter( "run_changelog_with_update" ); + + public static final CommandParameter SCM_TAG_PARAMETERS = new CommandParameter( "ScmTagParameters" ); + /** * Parameter name Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java (original) +++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java Sun Mar 15 22:26:37 2009 @@ -274,6 +274,19 @@ return (File[]) getObject( File[].class, parameter, defaultValue ); } + + public ScmTagParameters getScmTagParameters( CommandParameter parameter ) + throws ScmException + { + return (ScmTagParameters) getObject( ScmTagParameters.class, parameter, new ScmTagParameters() ); + } + + public void setScmTagParameters( CommandParameter parameter, ScmTagParameters scmTagParameters ) + throws ScmException + { + setObject( parameter, scmTagParameters ); + } + // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTag.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Sun Mar 15 22:26:37 2009 @@ -1 +1 @@ -"Author Date Id Revision" +Author Date Id Revision Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java?rev=754778&view=auto ============================================================================== --- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java (added) +++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java Sun Mar 15 22:26:37 2009 @@ -0,0 +1,74 @@ +package org.apache.maven.scm; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * @author <a href="mailto:ol...@apache.org">olamy</a> + */ +public class ScmTagParameters +{ + + private String message; + + private boolean remoteTagging = false; + + private String scmRevision; + + public ScmTagParameters() + { + this.remoteTagging = false; + } + + public ScmTagParameters( String message ) + { + this.message = message; + } + + public String getMessage() + { + return message; + } + + public void setMessage( String message ) + { + this.message = message; + } + + public boolean isRemoteTagging() + { + return remoteTagging; + } + + public void setRemoteTagging( boolean remoteTagging ) + { + this.remoteTagging = remoteTagging; + } + + public String getScmRevision() + { + return scmRevision; + } + + public void setScmRevision( String scmRevision ) + { + this.scmRevision = scmRevision; + } + +} Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmTagParameters.java ------------------------------------------------------------------------------ svn:keywords = Author Date Revision Id Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmVersion.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Sun Mar 15 22:26:37 2009 @@ -1 +1 @@ -"Author Date Id Revision" +Author Date Id Revision Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/tag/AbstractTagCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/tag/AbstractTagCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/tag/AbstractTagCommand.java (original) +++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/tag/AbstractTagCommand.java Sun Mar 15 22:26:37 2009 @@ -24,6 +24,7 @@ import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.AbstractCommand; import org.apache.maven.scm.provider.ScmProviderRepository; @@ -35,10 +36,26 @@ public abstract class AbstractTagCommand extends AbstractCommand { - protected abstract ScmResult executeTagCommand( ScmProviderRepository repository, ScmFileSet fileSet, - String tagName, String message ) - throws ScmException; + /** + * @deprecated use method {...@link #executeTagCommand(ScmProviderRepository, ScmFileSet, String, ScmTagParameters)} + * @param repository + * @param fileSet + * @param tagName + * @param message + * @return + * @throws ScmException + */ + protected ScmResult executeTagCommand( ScmProviderRepository repository, ScmFileSet fileSet, String tagName, + String message ) + throws ScmException + { + return executeTagCommand( repository, fileSet, tagName, new ScmTagParameters( message ) ); + } + protected abstract ScmResult executeTagCommand( ScmProviderRepository repository, ScmFileSet fileSet, + String tagName, ScmTagParameters scmTagParameters ) + throws ScmException; + /** {...@inheritdoc} */ public ScmResult executeCommand( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) @@ -48,6 +65,13 @@ String message = parameters.getString( CommandParameter.MESSAGE, "[maven-scm] copy for tag " + tagName ); - return executeTagCommand( repository, fileSet, tagName, message ); + ScmTagParameters scmTagParameters = parameters.getScmTagParameters( CommandParameter.SCM_TAG_PARAMETERS ); + if (message != null) + { + scmTagParameters.setMessage( message ); + } + + return executeTagCommand( repository, fileSet, tagName, scmTagParameters ); } + } Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Sun Mar 15 22:26:37 2009 @@ -1 +1 @@ -"Author Date Id Revision" +Author Date Id Revision Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Sun Mar 15 22:26:37 2009 @@ -1 +1 @@ -"Author Date Id Revision" +Author Date Id Revision Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Sun Mar 15 22:26:37 2009 @@ -1 +1 @@ -"Author Date Id Revision" +Author Date Id Revision Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Sun Mar 15 22:26:37 2009 @@ -1 +1 @@ -"Author Date Id Revision" +Author Date Id Revision Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java (original) +++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java Sun Mar 15 22:26:37 2009 @@ -26,6 +26,7 @@ import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmRevision; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.ScmVersion; import org.apache.maven.scm.command.add.AddScmResult; import org.apache.maven.scm.command.branch.BranchScmResult; @@ -653,7 +654,7 @@ public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName ) throws ScmException { - return tag( repository, fileSet, tagName, null ); + return tag( repository, fileSet, tagName, new ScmTagParameters() ); } /** {...@inheritdoc} */ @@ -671,8 +672,27 @@ parameters.setString( CommandParameter.MESSAGE, message ); } - return tag( repository.getProviderRepository(), fileSet, parameters ); + ScmTagParameters scmTagParameters = new ScmTagParameters(message); + + parameters.setScmTagParameters( CommandParameter.SCM_TAG_PARAMETERS, scmTagParameters ); + + return tag( repository.getProviderRepository(), fileSet, parameters); } + + /** {...@inheritdoc} */ + public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters ) + throws ScmException + { + login( repository, fileSet ); + + CommandParameters parameters = new CommandParameters(); + + parameters.setString( CommandParameter.TAG_NAME, tagName ); + + parameters.setScmTagParameters( CommandParameter.SCM_TAG_PARAMETERS, scmTagParameters ); + + return tag( repository.getProviderRepository(), fileSet, parameters ); + } protected TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java (original) +++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java Sun Mar 15 22:26:37 2009 @@ -22,6 +22,7 @@ import org.apache.maven.scm.ScmBranch; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.ScmVersion; import org.apache.maven.scm.command.add.AddScmResult; import org.apache.maven.scm.command.branch.BranchScmResult; @@ -573,11 +574,26 @@ * from the {...@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. * @param tagName the tag name to apply to the files * @param message the commit message used for the tag creation + * @deprecated use {...@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)} * @return * @throws ScmException if any */ TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message ) throws ScmException; + + /** + * Tag (or label in some systems) will tag the source file with a certain tag + * + * @param repository the source control system + * @param fileSet the files to tag. Implementations can also give the changes + * from the {...@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. + * @param tagName the tag name to apply to the files + * @param scmTagParameters bean to pass some paramters for tagging {...@link ScmTagParameters} + * @return + * @throws ScmException if any + */ + TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters ) + throws ScmException; /** * Updates the copy on the local machine with the changes in the repository Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepositoryWithHost.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Sun Mar 15 22:26:37 2009 @@ -1 +1 @@ -"Author Date Id Revision" +Author Date Id Revision Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/tag/ClearCaseTagCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/tag/ClearCaseTagCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/tag/ClearCaseTagCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/tag/ClearCaseTagCommand.java Sun Mar 15 22:26:37 2009 @@ -22,6 +22,7 @@ import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.tag.AbstractTagCommand; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.provider.ScmProviderRepository; @@ -41,11 +42,19 @@ extends AbstractTagCommand implements ClearCaseCommand { - /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository scmProviderRepository, ScmFileSet fileSet, String tag, String message ) throws ScmException { + return executeTagCommand( scmProviderRepository, fileSet, tag, new ScmTagParameters( message ) ); + } + + /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository scmProviderRepository, ScmFileSet fileSet, String tag, + ScmTagParameters scmTagParameters ) + throws ScmException + { if ( getLogger().isDebugEnabled() ) { getLogger().debug( "executing tag command..." ); Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/tag/HgTagCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/tag/HgTagCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/tag/HgTagCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/tag/HgTagCommand.java Sun Mar 15 22:26:37 2009 @@ -29,6 +29,7 @@ import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmFileStatus; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.Command; import org.apache.maven.scm.command.tag.AbstractTagCommand; import org.apache.maven.scm.command.tag.TagScmResult; @@ -50,11 +51,19 @@ extends AbstractTagCommand implements Command { - /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository scmProviderRepository, ScmFileSet fileSet, String tag, String message ) throws ScmException { + return executeTagCommand( scmProviderRepository, fileSet, tag, new ScmTagParameters( message ) ); + } + + /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository scmProviderRepository, ScmFileSet fileSet, String tag, + ScmTagParameters scmTagParameters ) + throws ScmException + { if ( tag == null || StringUtils.isEmpty( tag.trim() ) ) { @@ -69,7 +78,11 @@ File workingDir = fileSet.getBasedir(); // build the command - String[] tagCmd = new String[] { HgCommandConstants.TAG_CMD, HgCommandConstants.MESSAGE_OPTION, message, tag }; + String[] tagCmd = new String[] { + HgCommandConstants.TAG_CMD, + HgCommandConstants.MESSAGE_OPTION, + scmTagParameters.getMessage(), + tag }; // keep the command about in string form for reporting StringBuffer cmd = joinCmd( tagCmd ); Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java Sun Mar 15 22:26:37 2009 @@ -22,6 +22,7 @@ import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.tag.AbstractTagCommand; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.provider.ScmProviderRepository; @@ -51,10 +52,18 @@ { private String actualRepoLocation = null; - /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet files, String tag, String message ) throws ScmException { + return executeTagCommand( repo, files, tag, new ScmTagParameters( message ) ); + } + + /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet files, String tag, + ScmTagParameters scmTagParameters ) + throws ScmException + { PerforceScmProviderRepository prepo = (PerforceScmProviderRepository) repo; actualRepoLocation = PerforceScmProvider.getRepoPath( getLogger(), prepo, files.getBasedir() ); Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/tag/StarteamTagCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/tag/StarteamTagCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/tag/StarteamTagCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/tag/StarteamTagCommand.java Sun Mar 15 22:26:37 2009 @@ -22,6 +22,7 @@ import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.tag.AbstractTagCommand; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.provider.ScmProviderRepository; @@ -45,10 +46,17 @@ // AbstractTagCommand Implementation // ---------------------------------------------------------------------- - /** {...@inheritdoc} */ protected ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag, String message ) throws ScmException { + return executeTagCommand( repo, fileSet, tag, new ScmTagParameters( message ) ); + } + + /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag, + ScmTagParameters scmTagParameters ) + throws ScmException + { if ( fileSet.getFiles().length != 0 ) { throw new ScmException( "This provider doesn't support tagging subsets of a directory" ); Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/tag/SynergyTagCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/tag/SynergyTagCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/tag/SynergyTagCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/tag/SynergyTagCommand.java Sun Mar 15 22:26:37 2009 @@ -22,6 +22,7 @@ import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.tag.AbstractTagCommand; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.provider.ScmProviderRepository; @@ -38,11 +39,19 @@ extends AbstractTagCommand implements SynergyCommand { - /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository repository, ScmFileSet fileSet, String tag, String message ) throws ScmException { + return executeTagCommand( repository, fileSet, tag, new ScmTagParameters( message ) ); + } + + /** {...@inheritdoc} */ + protected ScmResult executeTagCommand( ScmProviderRepository repository, ScmFileSet fileSet, String tag, + ScmTagParameters scmTagParameters ) + throws ScmException + { if ( getLogger().isDebugEnabled() ) { getLogger().debug( "executing tag command..." ); Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/AbstractCvsScmProvider.java Sun Mar 15 22:26:37 2009 @@ -19,10 +19,17 @@ * under the License. */ +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.Command; import org.apache.maven.scm.command.add.AddScmResult; import org.apache.maven.scm.command.branch.BranchScmResult; @@ -39,18 +46,13 @@ import org.apache.maven.scm.command.update.UpdateScmResult; import org.apache.maven.scm.provider.AbstractScmProvider; import org.apache.maven.scm.provider.ScmProviderRepository; +import org.apache.maven.scm.provider.cvslib.command.tag.AbstractCvsTagCommand; import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository; import org.apache.maven.scm.repository.ScmRepositoryException; import org.apache.maven.scm.repository.UnknownRepositoryStructure; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.StringUtils; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - /** * @author <a href="mailto:eveni...@apache.org">Emmanuel Venisse </a> * @author <a href="mailto:tryg...@inamo.no">Trygve Laugstøl</a> @@ -331,6 +333,14 @@ { return (TagScmResult) executeCommand( getTagCommand(), repository, fileSet, parameters ); } + + protected TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters, + ScmTagParameters scmParameters ) + throws ScmException + { + return (TagScmResult) getTagCommand().execute( repository, fileSet, parameters ); + } + /** {...@inheritdoc} */ public UpdateScmResult update( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/tag/AbstractCvsTagCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/tag/AbstractCvsTagCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/tag/AbstractCvsTagCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/tag/AbstractCvsTagCommand.java Sun Mar 15 22:26:37 2009 @@ -25,6 +25,7 @@ import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.tag.AbstractTagCommand; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.provider.ScmProviderRepository; @@ -44,10 +45,18 @@ extends AbstractTagCommand implements CvsCommand { - /** {...@inheritdoc} */ + public ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag, String message ) throws ScmException { + return executeTagCommand( repo, fileSet, tag, new ScmTagParameters( message ) ); + } + + /** {...@inheritdoc} */ + public ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag, + ScmTagParameters scmTagParameters ) + throws ScmException + { CvsScmProviderRepository repository = (CvsScmProviderRepository) repo; Commandline cl = CvsCommandUtils.getBaseCommand( "tag", repository, fileSet, false ); Modified: maven/scm/trunk/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 URL: http://svn.apache.org/viewvc/maven/scm/trunk/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?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/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 (original) +++ maven/scm/trunk/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 Sun Mar 15 22:26:37 2009 @@ -19,27 +19,28 @@ * under the License. */ +import java.io.File; +import java.io.IOException; + import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmFileStatus; import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.checkout.CheckOutScmResult; import org.apache.maven.scm.command.tag.AbstractTagCommand; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.provider.ScmProviderRepository; import org.apache.maven.scm.provider.git.command.GitCommand; -import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository; import org.apache.maven.scm.provider.git.gitexe.command.GitCommandLineUtils; import org.apache.maven.scm.provider.git.gitexe.command.list.GitListCommand; import org.apache.maven.scm.provider.git.gitexe.command.list.GitListConsumer; +import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.cli.CommandLineUtils; import org.codehaus.plexus.util.cli.Commandline; -import java.io.File; -import java.io.IOException; - /** * @author <a href="mailto:strub...@yahoo.de">Mark Struberg</a> * @version $Id$ @@ -48,10 +49,17 @@ extends AbstractTagCommand implements GitCommand { - /** {...@inheritdoc} */ + public ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag, String message ) throws ScmException { + return executeTagCommand( repo, fileSet, tag, new ScmTagParameters( message ) ); + } + + /** {...@inheritdoc} */ + public ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag, ScmTagParameters scmTagParameters ) + throws ScmException + { if ( tag == null || StringUtils.isEmpty( tag.trim() ) ) { throw new ScmException( "tag name must be specified" ); @@ -68,7 +76,7 @@ try { - FileUtils.fileWrite( messageFile.getAbsolutePath(), message ); + FileUtils.fileWrite( messageFile.getAbsolutePath(), scmTagParameters.getMessage() ); } catch ( IOException ex ) { Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/SvnCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/SvnCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/SvnCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/SvnCommand.java Sun Mar 15 22:26:37 2009 @@ -28,4 +28,5 @@ public interface SvnCommand extends Command { + // no-op } Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java Sun Mar 15 22:26:37 2009 @@ -19,32 +19,36 @@ * under the License. */ +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFile; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmFileStatus; import org.apache.maven.scm.ScmResult; import org.apache.maven.scm.ScmTag; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.tag.AbstractTagCommand; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.provider.ScmProviderRepository; import org.apache.maven.scm.provider.svn.SvnCommandUtils; import org.apache.maven.scm.provider.svn.SvnTagBranchUtils; import org.apache.maven.scm.provider.svn.command.SvnCommand; +import org.apache.maven.scm.provider.svn.command.info.SvnInfoItem; +import org.apache.maven.scm.provider.svn.command.info.SvnInfoScmResult; import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository; import org.apache.maven.scm.provider.svn.svnexe.command.SvnCommandLineUtils; +import org.apache.maven.scm.provider.svn.svnexe.command.info.SvnInfoCommand; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.cli.CommandLineException; import org.codehaus.plexus.util.cli.CommandLineUtils; import org.codehaus.plexus.util.cli.Commandline; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - /** * @author <a href="mailto:br...@apache.org">Brett Porter</a> * @version $Id$ @@ -54,10 +58,28 @@ extends AbstractTagCommand implements SvnCommand { - /** {...@inheritdoc} */ + public ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag, String message ) throws ScmException { + ScmTagParameters scmTagParameters = new ScmTagParameters( message ); + // force false to preserve backward comp + scmTagParameters.setRemoteTagging( false ); + return executeTagCommand( repo, fileSet, tag, scmTagParameters ); + } + + /** {...@inheritdoc} */ + public ScmResult executeTagCommand( ScmProviderRepository repo, ScmFileSet fileSet, String tag, + ScmTagParameters scmTagParameters ) + throws ScmException + { + // NPE free + if (scmTagParameters == null) + { + scmTagParameters = new ScmTagParameters(); + scmTagParameters.setRemoteTagging( false ); + + } if ( tag == null || StringUtils.isEmpty( tag.trim() ) ) { throw new ScmException( "tag must be specified" ); @@ -74,17 +96,24 @@ try { - FileUtils.fileWrite( messageFile.getAbsolutePath(), message ); + FileUtils.fileWrite( messageFile.getAbsolutePath(), scmTagParameters == null ? "" : scmTagParameters + .getMessage() ); } catch ( IOException ex ) { - return new TagScmResult( null, - "Error while making a temporary file for the commit message: " + ex.getMessage(), - null, false ); + return new TagScmResult( null, "Error while making a temporary file for the commit message: " + + ex.getMessage(), null, false ); } - - Commandline cl = createCommandLine( repository, fileSet.getBasedir(), tag, messageFile ); - + + // do we need a svn rev ? yes if remote tagging and scmTag.parameters.scmRevision == null + if (scmTagParameters.isRemoteTagging() && scmTagParameters.getScmRevision() == null) + { + String currentSvnRev = getCurrentSvnRev( fileSet ); + scmTagParameters.setScmRevision( currentSvnRev ); + } + + Commandline cl = createCommandLine( repository, fileSet.getBasedir(), tag, messageFile, scmTagParameters ); + CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); @@ -164,6 +193,14 @@ // // ---------------------------------------------------------------------- + /** + * @deprecated + * @param repository + * @param workingDirectory + * @param tag + * @param messageFile + * @return + */ public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory, String tag, File messageFile ) { @@ -183,4 +220,55 @@ return cl; } + + + public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory, + String tag, File messageFile, ScmTagParameters scmTagParameters ) + { + Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine( workingDirectory, repository ); + + cl.createArg().setValue( "copy" ); + + cl.createArg().setValue( "--file" ); + + cl.createArg().setValue( messageFile.getAbsolutePath() ); + + String svnRev = null; + + if ( scmTagParameters != null && scmTagParameters.getScmRevision() != null ) + { + cl.createArg().setValue( "--revision " + svnRev ); + } + + if ( scmTagParameters != null && scmTagParameters.isRemoteTagging() ) + { + cl.createArg().setValue( repository.getUrl() ); + } + else + { + cl.createArg().setValue( "." ); + } + + // Note: this currently assumes you have the tag base checked out too + String tagUrl = SvnTagBranchUtils.resolveTagUrl( repository, new ScmTag( tag ) ); + cl.createArg().setValue( SvnCommandUtils.fixUrl( tagUrl, repository.getUser() ) ); + + return cl; + } + + private String getCurrentSvnRev( ScmFileSet fileSet ) + throws ScmException + { + // Determine the revision of the working directory. + SvnInfoCommand infoCmd = new SvnInfoCommand(); + infoCmd.setLogger( getLogger() ); + ScmFileSet infoFileSet = new ScmFileSet( fileSet.getBasedir(), fileSet.getBasedir() ); + SvnInfoScmResult ret = infoCmd.executeInfoCommand( null, infoFileSet, null, false, null ); + if ( ret.isSuccess() ) + { + SvnInfoItem item = (SvnInfoItem) ret.getInfoItems().iterator().next(); + return item.getRevision(); + } + return null; + } } Modified: maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java?rev=754778&r1=754777&r2=754778&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java (original) +++ maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java Sun Mar 15 22:26:37 2009 @@ -22,6 +22,7 @@ import org.apache.maven.scm.ScmBranch; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.ScmVersion; import org.apache.maven.scm.command.add.AddScmResult; import org.apache.maven.scm.command.branch.BranchScmResult; @@ -585,6 +586,13 @@ return getTagScmResult(); } + public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, + ScmTagParameters scmTagParameters ) + throws ScmException + { + return getTagScmResult(); + } + /** {...@inheritdoc} */ public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag ) throws ScmException