diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java
index 9dfcae9..db85305 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java
@@ -36,6 +36,7 @@
 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.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -61,6 +63,13 @@
      * @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 @@
 
         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();
-
-            // SelectorUtils expects File.separator, don't standardize!
-            String fileName = f.getPath().replace( "\\", File.separator ).replace( "/", File.separator );
-
-            for ( String exclusionPattern : exclusionPatterns )
+            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(); )
             {
-                if ( SelectorUtils.matchPath( exclusionPattern, fileName ) )
+                ScmFile f = i.next();
+
+                String path;
+                if ( scmTranslator != null )
                 {
-                    logDebug( relResult, "Ignoring changed file: " + fileName );
-                    i.remove();
+                    path = scmTranslator.toRelativePath( f.getPath() );
+                }
+                else
+                {
+                    path = f.getPath();
+                }
+
+                // 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 ) )
+                    {
+                        logDebug( relResult, "Ignoring changed file: " + fileName );
+                        i.remove();
+                    }
                 }
             }
         }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java
index 8362058..7008cba 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslator.java
@@ -28,16 +28,25 @@
 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 @@
             return null;
         }
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java
index e1668f6..ab5544d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/CvsScmTranslator.java
@@ -28,16 +28,25 @@
 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 @@
             return null;
         }
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java
index 394aba3..1d4ca4d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/GitScmTranslator.java
@@ -22,7 +22,8 @@
 /**
  * @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 @@
     {
         return tag;
     }
+
+    /** {@inheritDoc} */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java
index b891194..96ff86b 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/HgScmTranslator.java
@@ -22,7 +22,8 @@
 /**
  * @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 @@
     {
         return tag;
     }
+    
+    /** {@inheritDoc} */
+    public String toRelativePath( String path )
+    {
+        return path;
+    }
 }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java
index c1effc8..88c13be 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/JazzScmTranslator.java
@@ -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 @@
         // 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 );
+    }
 }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java
index f7e8836..21b83e9 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmTranslator.java
@@ -59,4 +59,13 @@
      * @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 );
 }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java
index d81bea1..c74917d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/SubversionScmTranslator.java
@@ -32,19 +32,36 @@
 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;
+    }
 }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java
index 7dada88..9743a7d 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/ClearCaseScmTranslatorTest.java
@@ -47,4 +47,9 @@
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+    
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java
index 2848fa9..e2cf8b1 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/CvsScmTranslatorTest.java
@@ -47,4 +47,9 @@
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+    
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java
index db8e0cf..a9acd1c 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/GitScmTranslatorTest.java
@@ -47,4 +47,9 @@
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java
index 19080ed..e731b17 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/HgScmTranslatorTest.java
@@ -46,4 +46,9 @@
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", null )  );
         assertEquals( "url", scmTranslator.translateBranchUrl( "url", "branchName", "tagBase" )  );
     }
+    
+    public void testGetRelativePath()
+    {
+        assertEquals( "a/b/c", "a/b/c" );
+    }
 }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java
index 6e5aa6b..187606c 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/JazzScmTranslatorTest.java
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import java.io.File;
+
 import junit.framework.TestCase;
 
 public class JazzScmTranslatorTest
@@ -47,4 +49,12 @@
         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" ) );
+    }
 }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java
index 9b6943c..43c3766 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/scm/SubversionScmTranslatorTest.java
@@ -48,4 +48,9 @@
         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" );
+    }
 }
