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:[email protected]">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