Author: olamy Date: Tue Mar 17 00:33:01 2009 New Revision: 755056 URL: http://svn.apache.org/viewvc?rev=755056&view=rev Log: [MRELEASE-427] Add a mojo parameter for using the new remote tagging for svn scm provider (to prevent issue with svn > 1.5.0)
Added: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParamtersEquals.java (with props) Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java?rev=755056&r1=755055&r2=755056&view=diff ============================================================================== --- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java (original) +++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java Tue Mar 17 00:33:01 2009 @@ -155,8 +155,10 @@ { properties.setProperty( "preparationGoals", config.getPreparationGoals() ); } + + properties.setProperty( "remoteTagging", Boolean.toString( config.isRemoteTagging() ) ); - // boolean properties are not written to the properties file because the value from the caller is always used + // others boolean properties are not written to the properties file because the value from the caller is always used for ( Iterator i = config.getReleaseVersions().entrySet().iterator(); i.hasNext(); ) { Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java?rev=755056&r1=755055&r2=755056&view=diff ============================================================================== --- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java (original) +++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java Tue Mar 17 00:33:01 2009 @@ -89,6 +89,7 @@ toBeMerged.getDefaultReleaseVersion() ) ); mergeInto.setDefaultDevelopmentVersion( mergeOverride( mergeInto.getDefaultDevelopmentVersion(), toBeMerged.getDefaultDevelopmentVersion() ) ); + mergeInto.setRemoteTagging( toBeMerged.isRemoteTagging() ); // If the user specifies versions, these should be override the existing versions if ( toBeMerged.getReleaseVersions() != null ) @@ -136,7 +137,10 @@ releaseDescriptor.setAdditionalArguments( properties.getProperty( "exec.additionalArguments" ) ); releaseDescriptor.setPomFileName( properties.getProperty( "exec.pomFileName" ) ); releaseDescriptor.setPreparationGoals( properties.getProperty( "preparationGoals" ) ); - + String remoteTaggingStr = properties.getProperty( "remoteTagging" ); + releaseDescriptor.setRemoteTagging( remoteTaggingStr == null ? false : Boolean.valueOf( remoteTaggingStr ).booleanValue() ); + + loadResolvedDependencies( properties, releaseDescriptor ); // boolean properties are not written to the properties file because the value from the caller is always used Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java?rev=755056&r1=755055&r2=755056&view=diff ============================================================================== --- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java (original) +++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java Tue Mar 17 00:33:01 2009 @@ -98,7 +98,7 @@ List pomFiles = createPomFiles( releaseDescriptor, project ); ScmFileSet fileSet = new ScmFileSet( project.getFile().getParentFile(), pomFiles ); - checkin( provider, repository, fileSet, createMessage( releaseDescriptor ) ); + checkin( provider, repository, fileSet, releaseDescriptor ); } } else @@ -106,7 +106,7 @@ List pomFiles = createPomFiles( releaseDescriptor, reactorProjects ); ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ), pomFiles ); - checkin( provider, repository, fileSet, createMessage( releaseDescriptor ) ); + checkin( provider, repository, fileSet, releaseDescriptor ); } relResult.setResultCode( ReleaseResult.SUCCESS ); @@ -114,11 +114,11 @@ return relResult; } - private void checkin( ScmProvider provider, ScmRepository repository, ScmFileSet fileSet, String message ) + private void checkin( ScmProvider provider, ScmRepository repository, ScmFileSet fileSet, ReleaseDescriptor releaseDescriptor ) throws ReleaseExecutionException, ReleaseScmCommandException { CheckInScmResult result; - + String message = createMessage( releaseDescriptor ); try { result = provider.checkIn( repository, fileSet, (ScmVersion) null, message ); @@ -132,6 +132,7 @@ { throw new ReleaseScmCommandException( "Unable to commit files", result ); } + releaseDescriptor.setScmReleasedPomRevision( result.getScmRevision() ); } public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List reactorProjects ) Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java?rev=755056&r1=755055&r2=755056&view=diff ============================================================================== --- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java (original) +++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java Tue Mar 17 00:33:01 2009 @@ -21,6 +21,7 @@ import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.manager.NoSuchScmProviderException; import org.apache.maven.scm.provider.ScmProvider; @@ -86,8 +87,16 @@ // TODO: want includes/excludes? ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ) ); String tagName = releaseDescriptor.getScmReleaseLabel(); - result = provider.tag( repository, fileSet, tagName, - releaseDescriptor.getScmCommentPrefix() + " copy for tag " + tagName ); + ScmTagParameters scmTagParameters = new ScmTagParameters( releaseDescriptor.getScmCommentPrefix() + + " copy for tag " + tagName ); + scmTagParameters.setRemoteTagging( releaseDescriptor.isRemoteTagging() ); + scmTagParameters.setScmRevision( releaseDescriptor.getScmReleasedPomRevision() ); + if (getLogger().isDebugEnabled()) + { + getLogger().debug( "ScmTagPhase :: scmTagParameters remotingTag " + releaseDescriptor.isRemoteTagging() ); + getLogger().debug( "ScmTagPhase :: scmTagParameters scmRevision " + releaseDescriptor.getScmReleasedPomRevision() ); + } + result = provider.tag( repository, fileSet, tagName, scmTagParameters ); } catch ( ScmException e ) { Modified: maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?rev=755056&r1=755055&r2=755056&view=diff ============================================================================== --- maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo (original) +++ maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo Tue Mar 17 00:33:01 2009 @@ -377,6 +377,26 @@ Default version to use for new working copy. </description> </field> + + <field> + <name>remoteTagging</name> + <version>1.0.0</version> + <type>boolean</type> + <defaultValue>false</defaultValue> + <description> + NOTE : currently only implemented with svn scm. Enable a workaround to prevent issue due to svn client > 1.5.0 + (http://jira.codehaus.org/browse/SCM-406) + </description> + </field> + <field> + <name>scmReleasedPomRevision</name> + <version>1.0.0</version> + <type>String</type> + <description> + NOTE : currently only implemented with svn scm. It contains the revision of the committed released pom to remotely tag + the source code with this revision. + </description> + </field> <!-- Announcement Information Added: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParamtersEquals.java URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParamtersEquals.java?rev=755056&view=auto ============================================================================== --- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParamtersEquals.java (added) +++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParamtersEquals.java Tue Mar 17 00:33:01 2009 @@ -0,0 +1,59 @@ +package org.apache.maven.shared.release.phase; + +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmTagParameters; +import org.jmock.core.Constraint; + +/* + * 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 IsScmTagParamtersEquals + implements Constraint +{ + private final ScmTagParameters scmTagParameters; + + public IsScmTagParamtersEquals( ScmTagParameters scmTagParameters ) + { + this.scmTagParameters = scmTagParameters; + } + + + /** + * @see org.jmock.core.Constraint#eval(java.lang.Object) + */ + public boolean eval( Object o ) + { + ScmTagParameters stp = (ScmTagParameters) o; + return stp.getMessage().equals( this.scmTagParameters.getMessage() ) + && stp.isRemoteTagging() == this.scmTagParameters.isRemoteTagging(); + } + + /** + * @see org.jmock.core.SelfDescribing#describeTo(java.lang.StringBuffer) + */ + public StringBuffer describeTo( StringBuffer buffer ) + { + // TODO Auto-generated method stub + return null; + } + +} Propchange: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParamtersEquals.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParamtersEquals.java ------------------------------------------------------------------------------ svn:keywords = Author Date Revision Id Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java?rev=755056&r1=755055&r2=755056&view=diff ============================================================================== --- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java (original) +++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java Tue Mar 17 00:33:01 2009 @@ -19,9 +19,13 @@ * under the License. */ +import java.util.Collections; +import java.util.List; + import org.apache.maven.project.MavenProject; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmTagParameters; import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.manager.NoSuchScmProviderException; import org.apache.maven.scm.manager.ScmManager; @@ -47,9 +51,6 @@ import org.jmock.core.stub.ReturnStub; import org.jmock.core.stub.ThrowStub; -import java.util.Collections; -import java.util.List; - /** * Test the SCM tag phase. * @@ -80,10 +81,13 @@ ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile() ); Mock scmProviderMock = new Mock( ScmProvider.class ); - Constraint[] arguments = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( fileSet ), - new IsEqual( "release-label" ), new IsEqual( "[my prefix] copy for tag release-label" )}; - scmProviderMock.expects( new InvokeOnceMatcher() ).method( "tag" ).with( arguments ).will( - new ReturnStub( new TagScmResult( "...", Collections.singletonList( rootProject.getFile() ) ) ) ); + Constraint[] arguments = new Constraint[] { + new IsAnything(), + new IsScmFileSetEquals( fileSet ), + new IsEqual( "release-label" ), + new IsScmTagParamtersEquals( new ScmTagParameters( "[my prefix] copy for tag release-label" ) ) }; + scmProviderMock.expects( new InvokeOnceMatcher() ).method( "tag" ).with( arguments ) + .will( new ReturnStub( new TagScmResult( "...", Collections.singletonList( rootProject.getFile() ) ) ) ); ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE ); stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() ); @@ -107,10 +111,13 @@ ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile() ); Mock scmProviderMock = new Mock( ScmProvider.class ); - Constraint[] arguments = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( fileSet ), - new IsEqual( "release-label" ), new IsEqual( "[my prefix] copy for tag release-label" )}; - scmProviderMock.expects( new InvokeOnceMatcher() ).method( "tag" ).with( arguments ).will( - new ReturnStub( new TagScmResult( "...", Collections.singletonList( rootProject.getFile() ) ) ) ); + Constraint[] arguments = new Constraint[] { + new IsAnything(), + new IsScmFileSetEquals( fileSet ), + new IsEqual( "release-label" ), + new IsScmTagParamtersEquals( new ScmTagParameters( "[my prefix] copy for tag release-label" ) ) }; + scmProviderMock.expects( new InvokeOnceMatcher() ).method( "tag" ).with( arguments ) + .will( new ReturnStub( new TagScmResult( "...", Collections.singletonList( rootProject.getFile() ) ) ) ); ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE ); stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() ); Modified: maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java?rev=755056&r1=755055&r2=755056&view=diff ============================================================================== --- maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java (original) +++ maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java Tue Mar 17 00:33:01 2009 @@ -139,7 +139,17 @@ * @parameter expression="${developmentVersion}" */ private String developmentVersion; - + + /** + * currently only implemented with svn scm. Enable a workaround to prevent issue + * due to svn client > 1.5.0 (http://jira.codehaus.org/browse/SCM-406) + * + * + * @parameter expression="${remoteTagging}" default-value="false" + * @since 2.0-beta-9 + */ + private boolean remoteTagging; + /** * {...@inheritdoc} */ @@ -160,6 +170,7 @@ config.setSnapshotReleasePluginAllowed( allowReleasePluginSnapshot ); config.setDefaultReleaseVersion( releaseVersion ); config.setDefaultDevelopmentVersion( developmentVersion ); + config.setRemoteTagging( remoteTagging ); // Create a config containing values from the system properties (command line properties). ReleaseDescriptor sysPropertiesConfig