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" ); + } }