You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2012/05/22 00:15:59 UTC

svn commit: r1341231 - in /maven/release/trunk/maven-release-manager/src: main/java/org/apache/maven/shared/release/phase/ main/java/org/apache/maven/shared/release/scm/ test/java/org/apache/maven/shared/release/scm/

Author: rfscholte
Date: Mon May 21 22:15:59 2012
New Revision: 1341231

URL: http://svn.apache.org/viewvc?rev=1341231&view=rev
Log:
Fix MRELEASE-759: Add ScmTranslator.toRelativePath()

Modified:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java Mon May 21 22:15:59 2012
@@ -36,6 +36,7 @@ import org.apache.maven.shared.release.e
 import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
 import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
 import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
+import org.apache.maven.shared.release.scm.ScmTranslator;
 import org.codehaus.plexus.util.SelectorUtils;
 import org.codehaus.plexus.util.StringUtils;
 
@@ -44,6 +45,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -61,6 +63,13 @@ public class ScmCheckModificationsPhase
      * @plexus.requirement
      */
     private ScmRepositoryConfigurator scmRepositoryConfigurator;
+    
+    /**
+     * SCM URL translators mapped by provider name.
+     *
+     * @plexus.requirement role="org.apache.maven.shared.release.scm.ScmTranslator"
+     */
+    private Map<String, ScmTranslator> scmTranslators;
 
     /**
      * The filepatterns to exclude from the status check.
@@ -130,20 +139,35 @@ public class ScmCheckModificationsPhase
 
         List<ScmFile> changedFiles = result.getChangedFiles();
 
-        // TODO: would be nice for SCM status command to do this for me.
-        for ( Iterator<ScmFile> i = changedFiles.iterator(); i.hasNext(); )
+        if ( !changedFiles.isEmpty() )
         {
-            ScmFile f = i.next();
+            ScmTranslator scmTranslator = scmTranslators.get( repository );
+            
+            // TODO: would be nice for SCM status command to do this for me.
+            for ( Iterator<ScmFile> i = changedFiles.iterator(); i.hasNext(); )
+            {
+                ScmFile f = i.next();
+
+                String path;
+                if ( scmTranslator != null )
+                {
+                    path = scmTranslator.toRelativePath( f.getPath() );
+                }
+                else
+                {
+                    path = f.getPath();
+                }
 
-            // SelectorUtils expects File.separator, don't standardize!
-            String fileName = f.getPath().replace( "\\", File.separator ).replace( "/", File.separator );
+                // SelectorUtils expects File.separator, don't standardize!
+                String fileName = path.replace( "\\", File.separator ).replace( "/", File.separator );
 
-            for ( String exclusionPattern : exclusionPatterns )
-            {
-                if ( SelectorUtils.matchPath( exclusionPattern, fileName ) )
+                for ( String exclusionPattern : exclusionPatterns )
                 {
-                    logDebug( relResult, "Ignoring changed file: " + fileName );
-                    i.remove();
+                    if ( SelectorUtils.matchPath( exclusionPattern, fileName ) )
+                    {
+                        logDebug( relResult, "Ignoring changed file: " + fileName );
+                        i.remove();
+                    }
                 }
             }
         }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java Mon May 21 22:15:59 2012
@@ -28,16 +28,25 @@ package org.apache.maven.shared.release.
 public class ClearCaseScmTranslator
     implements ScmTranslator
 {
+    /**
+     * {@inheritDoc}
+     */
     public String translateBranchUrl( String url, String branchName, String branchBase )
     {
         return url;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public String translateTagUrl( String url, String tag, String tagBase )
     {
         return url;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public String resolveTag( String tag )
     {
         if ( !"HEAD".equals( tag ) )
@@ -49,4 +58,12 @@ public class ClearCaseScmTranslator
             return null;
         }
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java Mon May 21 22:15:59 2012
@@ -28,16 +28,25 @@ package org.apache.maven.shared.release.
 public class CvsScmTranslator
     implements ScmTranslator
 {
+    /**
+     * {@inheritDoc}
+     */
     public String translateBranchUrl( String url, String branchName, String branchBase )
     {
         return url;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public String translateTagUrl( String url, String tag, String tagBase )
     {
         return url;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public String resolveTag( String tag )
     {
         if ( !"HEAD".equals( tag ) )
@@ -49,4 +58,12 @@ public class CvsScmTranslator
             return null;
         }
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java Mon May 21 22:15:59 2012
@@ -22,7 +22,8 @@ package org.apache.maven.shared.release.
 /**
  * @plexus.component role="org.apache.maven.shared.release.scm.ScmTranslator" role-hint="git"
  */
-public class GitScmTranslator implements ScmTranslator
+public class GitScmTranslator
+    implements ScmTranslator
 {
 
     /** {@inheritDoc} */
@@ -42,4 +43,10 @@ public class GitScmTranslator implements
     {
         return tag;
     }
+
+    /** {@inheritDoc} */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java Mon May 21 22:15:59 2012
@@ -22,7 +22,8 @@ package org.apache.maven.shared.release.
 /**
  * @plexus.component role="org.apache.maven.shared.release.scm.ScmTranslator" role-hint="hg"
  */
-public class HgScmTranslator implements ScmTranslator
+public class HgScmTranslator
+    implements ScmTranslator
 {
 
     /** {@inheritDoc} */
@@ -42,4 +43,10 @@ public class HgScmTranslator implements 
     {
         return tag;
     }
+    
+    /** {@inheritDoc} */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java Mon May 21 22:15:59 2012
@@ -1,5 +1,7 @@
 package org.apache.maven.shared.release.scm;
 
+import java.io.File;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -76,4 +78,21 @@ public class JazzScmTranslator
         // project.scm.tag is not required, so return null.
         return null;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toRelativePath( String path )
+    {
+        String relativePath;
+        if ( path.startsWith( "\\" ) || path.startsWith( "/" ) )
+        {
+            relativePath = path.substring( 1 );
+        }
+        else
+        {
+            relativePath = path;
+        }
+        return relativePath.replace( "\\", File.separator ).replace( "/", File.separator );
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java Mon May 21 22:15:59 2012
@@ -59,4 +59,13 @@ public interface ScmTranslator
      * @return the tag to use, or <code>null</code> if the provider does not use tags
      */
     String resolveTag( String tag );
+    
+    /**
+     * Translates an ScmFile path to a path relative to the working directory.
+     * 
+     * @param path
+     * @return the relative path with OS specific File separator
+     * @since 2.3.1
+     */
+    String toRelativePath( String path );
 }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java Mon May 21 22:15:59 2012
@@ -32,19 +32,36 @@ import org.apache.maven.scm.provider.svn
 public class SubversionScmTranslator
     implements ScmTranslator
 {
+    /**
+     * {@inheritDoc}
+     */
     public String translateBranchUrl( String url, String branchName, String branchBase )
     {
         return SvnTagBranchUtils.resolveUrl( url, branchBase, SvnTagBranchUtils.SVN_BRANCHES,
                                              new ScmBranch( branchName ) );
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public String translateTagUrl( String url, String tag, String tagBase )
     {
         return SvnTagBranchUtils.resolveUrl( url, tagBase, SvnTagBranchUtils.SVN_TAGS, new ScmTag( tag ) );
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public String resolveTag( String tag )
     {
         return null;
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java Mon May 21 22:15:59 2012
@@ -47,4 +47,9 @@ public class ClearCaseScmTranslatorTest
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+    
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java Mon May 21 22:15:59 2012
@@ -47,4 +47,9 @@ public class CvsScmTranslatorTest
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+    
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java Mon May 21 22:15:59 2012
@@ -47,4 +47,9 @@ public class GitScmTranslatorTest
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java Mon May 21 22:15:59 2012
@@ -46,4 +46,9 @@ public class HgScmTranslatorTest
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+    
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java Mon May 21 22:15:59 2012
@@ -19,6 +19,8 @@ package org.apache.maven.shared.release.
  * under the License.
  */
 
+import java.io.File;
+
 import junit.framework.TestCase;
 
 public class JazzScmTranslatorTest
@@ -47,4 +49,12 @@ public class JazzScmTranslatorTest
         assertEquals( "url:branchName", scmTranslator.translateBranchUrl( "url:module", "branchName", null ) );
         assertEquals( "url:branchName", scmTranslator.translateBranchUrl( "url:module", "branchName", "tagBase" ) );
     }
+    
+    public void testGetRelativePath()
+    {
+        assertEquals( "BogusTest" + File.separator + "release.properties", scmTranslator.toRelativePath( "BogusTest/release.properties" ) );
+        assertEquals( "BogusTest" + File.separator + "release.properties", scmTranslator.toRelativePath( "/BogusTest/release.properties" ) );
+        assertEquals( "BogusTest" + File.separator + "release.properties", scmTranslator.toRelativePath( "BogusTest\\release.properties" ) );
+        assertEquals( "BogusTest" + File.separator + "release.properties", scmTranslator.toRelativePath( "\\BogusTest\\release.properties" ) );
+    }
 }

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java?rev=1341231&r1=1341230&r2=1341231&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java Mon May 21 22:15:59 2012
@@ -48,4 +48,9 @@ public class SubversionScmTranslatorTest
         assertEquals( "url/branches/branchName", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "tagBase/branchName", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+    
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }