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


Reply via email to