Index: maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnExeTagCommandTckTest.java
===================================================================
--- maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnExeTagCommandTckTest.java	(revision 988383)
+++ maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnExeTagCommandTckTest.java	(working copy)
@@ -22,6 +22,7 @@
 import java.io.File;
 
 import org.apache.maven.scm.ScmTagParameters;
+import org.apache.maven.scm.provider.svn.SvnTagBranchUtils;
 import org.apache.maven.scm.provider.svn.command.tag.SvnTagCommandTckTest;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
 import org.apache.maven.scm.repository.ScmRepository;
@@ -47,6 +48,22 @@
                              " . svn+ssh://user@foo.com/svn/tags/svntag", null );
     }
     
+    public void testTagUserNameSvnSshWithParentsOption()
+        throws Exception
+    {
+        File messageFile = File.createTempFile( "maven-scm", "commit" );
+        messageFile.deleteOnExit();
+        System.setProperty(SvnTagBranchUtils.COPY_PARENTS_PROPERTY, "true");
+        testCommandLine( "scm:svn:svn+ssh://foo.com/svn/trunk", "svntag", messageFile, "user",
+                         "svn --username user --no-auth-cache --non-interactive copy --file " + messageFile.getAbsolutePath()
+                             + " . --parents svn+ssh://user@foo.com/svn/tags/svntag", null );
+        System.setProperty(SvnTagBranchUtils.COPY_PARENTS_PROPERTY, "false");
+        // verify that if not set to true that '--parents' flag isn't added
+        testCommandLine( "scm:svn:svn+ssh://foo.com/svn/trunk", "svntag", messageFile, "user",
+                         "svn --username user --no-auth-cache --non-interactive copy --file " + messageFile.getAbsolutePath()
+                             + " . svn+ssh://user@foo.com/svn/tags/svntag", null );
+    }
+
     public void testTagRemoteTagHttps()
         throws Exception
     {
Index: maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnExeBranchCommandTckTest.java
===================================================================
--- maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnExeBranchCommandTckTest.java	(revision 988383)
+++ maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnExeBranchCommandTckTest.java	(working copy)
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.scm.ScmBranchParameters;
+import org.apache.maven.scm.provider.svn.SvnTagBranchUtils;
 import org.apache.maven.scm.provider.svn.command.branch.SvnBranchCommandTckTest;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
 import org.apache.maven.scm.repository.ScmRepository;
@@ -89,6 +90,23 @@
                              + " . svn+ssh://user@foo.com/svn/branches/svnbranch" );
     }
 
+    public void testBranchUserNameSvnSshWithParentsFlag()
+        throws Exception
+    {
+        File messageFile = File.createTempFile( "maven-scm", "commit" );
+        messageFile.deleteOnExit();
+        System.setProperty(SvnTagBranchUtils.COPY_PARENTS_PROPERTY, "true");
+        testCommandLine( "scm:svn:svn+ssh://foo.com/svn/trunk", "svntag", messageFile, "user",
+                         "svn --username user --no-auth-cache --non-interactive copy --file " + messageFile.getAbsolutePath()
+                             + " . --parents svn+ssh://user@foo.com/svn/branches/svnbranch" );
+    
+        System.setProperty(SvnTagBranchUtils.COPY_PARENTS_PROPERTY, "false");
+        // verify that if not set to true that '--parents' flag isn't added
+        testCommandLine( "scm:svn:svn+ssh://foo.com/svn/trunk", "svntag", messageFile, "user",
+                         "svn --username user --no-auth-cache --non-interactive copy --file " + messageFile.getAbsolutePath()
+                             + " . svn+ssh://user@foo.com/svn/branches/svnbranch" );
+    }
+
     private void testCommandLine( String scmUrl, String branch, File messageFile, String user, String commandLine,
                                   ScmBranchParameters scmBranchParameters )
         throws Exception
Index: maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnBranchCommand.java
===================================================================
--- maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnBranchCommand.java	(revision 988383)
+++ maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/branch/SvnBranchCommand.java	(working copy)
@@ -177,6 +177,8 @@
 
         cl.createArg().setValue( messageFile.getAbsolutePath() );
 
+        SvnTagBranchUtils.addParentsArgToCL(cl);
+
         if ( scmBranchParameters != null && scmBranchParameters.isRemoteBranching() )
         {
             if (StringUtils.isNotBlank( scmBranchParameters.getScmRevision() ) )
Index: maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java
===================================================================
--- maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java	(revision 988383)
+++ maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/tag/SvnTagCommand.java	(working copy)
@@ -230,9 +230,8 @@
 
         cl.createArg().setValue( messageFile.getAbsolutePath() );
 
-        // SCM-487 olamy : this need a svn 1.5 cli 
-        //cl.createArg().setValue( "--parents" );
-        
+        SvnTagBranchUtils.addParentsArgToCL(cl);
+
         if ( scmTagParameters != null && scmTagParameters.getScmRevision() != null )
         {
             cl.createArg().setValue( "--revision" );
Index: maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/SvnTagBranchUtils.java
===================================================================
--- maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/SvnTagBranchUtils.java	(revision 988383)
+++ maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/SvnTagBranchUtils.java	(working copy)
@@ -24,6 +24,7 @@
 import org.apache.maven.scm.ScmVersion;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.Commandline;
 
 /**
  * @version $Id$
@@ -41,6 +42,8 @@
 
     public static final String[] SVN_BASE_DIRS = new String[]{SVN_TRUNK, SVN_BRANCHES, SVN_TAGS};
 
+    public static final String COPY_PARENTS_PROPERTY = "maven.scm.svn.copy.parents";
+
     /**
      * Simple helper function to concatenate two paths together with a "/".
      * Handles trailing / on basePath.
@@ -301,4 +304,13 @@
 
         return false;
     }
+
+    public static void addParentsArgToCL(Commandline cl) {
+        if ( !StringUtils.isEmpty( System.getProperty( COPY_PARENTS_PROPERTY ) )
+                && "true".equalsIgnoreCase( System.getProperty( COPY_PARENTS_PROPERTY ) ) )
+        {
+            // SCM-487 olamy : this need a svn 1.5 cli 
+            cl.createArg().setValue( "--parents" );
+        }
+    }    
 }

