[SCM-834] Commit encoding is platform-dependent instead of UTF-8
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java
index d970485..ba467f6 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java
@@ -73,7 +73,7 @@
         File messageFile = FileUtils.createTempFile( "maven-scm-", ".commit", null );
         try
         {
-            FileUtils.fileWrite( messageFile.getAbsolutePath(), message );
+            FileUtils.fileWrite( messageFile.getAbsolutePath(), "UTF-8", message );
         }
         catch ( IOException ex )
         {
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java
index 068ec3e..9609124 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java
@@ -77,7 +77,7 @@
 
         try
         {
-            FileUtils.fileWrite( messageFile.getAbsolutePath(), scmTagParameters.getMessage() );
+            FileUtils.fileWrite( messageFile.getAbsolutePath(), "UTF-8", scmTagParameters.getMessage() );
         }
         catch ( IOException ex )
         {
diff --git a/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 b/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
index 59f52d3..b5c78a4 100644
--- a/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
+++ b/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
@@ -77,7 +77,7 @@
 
         try
         {
-            FileUtils.fileWrite( messageFile.getAbsolutePath(), scmBranchParameters.getMessage() );
+            FileUtils.fileWrite( messageFile.getAbsolutePath(), "UTF-8", scmBranchParameters.getMessage() );
         }
         catch ( IOException ex )
         {
@@ -187,6 +187,10 @@
 
         cl.createArg().setValue( messageFile.getAbsolutePath() );
 
+        cl.createArg().setValue( "--encoding" );
+
+        cl.createArg().setValue( "UTF-8" );
+
         if ( scmBranchParameters != null && scmBranchParameters.isPinExternals() )
         {
             cl.createArg().setValue( "--pin-externals" );
@@ -210,5 +214,5 @@
         cl.createArg().setValue( SvnCommandUtils.fixUrl( branchUrl, repository.getUser() ) );
 
         return cl;
-    }    
+    }
 }
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommand.java
index 38ff8c2..3a0adce 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommand.java
@@ -61,7 +61,7 @@
 
         try
         {
-            FileUtils.fileWrite( messageFile.getAbsolutePath(), message );
+            FileUtils.fileWrite( messageFile.getAbsolutePath(), "UTF-8", message );
         }
         catch ( IOException ex )
         {
@@ -132,6 +132,10 @@
 
         cl.createArg().setValue( messageFile.getAbsolutePath() );
 
+        cl.createArg().setValue( "--encoding" );
+
+        cl.createArg().setValue( "UTF-8" );
+
         try
         {
             SvnCommandLineUtils.addTarget( cl, fileSet.getFileList() );
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java
index 6e6e313..0f10d26 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommand.java
@@ -57,7 +57,7 @@
 
         try
         {
-            FileUtils.fileWrite( messageFile.getAbsolutePath(), message );
+            FileUtils.fileWrite( messageFile.getAbsolutePath(), "UTF-8", message );
         }
         catch ( IOException ex )
         {
@@ -138,7 +138,7 @@
         Iterator<File> it = fileSet.getFileList().iterator();
         String dirPath = it.next().getPath();
         // replacing \ with / for windauze
-        if ( dirPath != null && Os.isFamily( Os.FAMILY_DOS ) )
+        if ( dirPath != null && Os.isFamily( Os.FAMILY_WINDOWS ) )
         {
             dirPath = StringUtils.replace( dirPath, "\\", "/" );
         }
@@ -151,6 +151,9 @@
             {
                 cl.createArg().setValue( "--file" );
                 cl.createArg().setValue( messageFile.getAbsolutePath() );
+
+                cl.createArg().setValue( "--encoding" );
+                cl.createArg().setValue( "UTF-8" );
             }
         }
         else
diff --git a/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 b/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
index b3f6005..0e96e97 100644
--- a/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
+++ b/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
@@ -103,7 +103,7 @@
 
         try
         {
-            FileUtils.fileWrite( messageFile.getAbsolutePath(), scmTagParameters.getMessage() );
+            FileUtils.fileWrite( messageFile.getAbsolutePath(), "UTF-8", scmTagParameters.getMessage() );
         }
         catch ( IOException ex )
         {
@@ -240,6 +240,10 @@
 
         cl.createArg().setValue( messageFile.getAbsolutePath() );
 
+        cl.createArg().setValue( "--encoding" );
+
+        cl.createArg().setValue( "UTF-8" );
+
         cl.createArg().setValue( "--parents" );
 
         if ( scmTagParameters != null && scmTagParameters.getScmRevision() != null )
diff --git a/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 b/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
index 0cc7dd4..5b73ef3 100644
--- a/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
+++ b/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
@@ -50,7 +50,7 @@
 
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svnbranch", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --parents --file " + messageFile.getAbsolutePath()
-                             + " --revision 2 https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch",
+                             + " --encoding UTF-8 --revision 2 https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch",
                          scmBranchParameters );
     }
 
@@ -67,7 +67,7 @@
 
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svnbranch", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --parents --file " + messageFile.getAbsolutePath()
-                             + " --pin-externals --revision 2 https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch",
+                             + " --encoding UTF-8 --pin-externals --revision 2 https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch",
                          scmBranchParameters );
     }
 
@@ -83,7 +83,7 @@
 
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svnbranch", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --parents --file " + messageFile.getAbsolutePath()
-                             + " https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch", scmBranchParameters );
+                             + " --encoding UTF-8 https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch", scmBranchParameters );
     }
 
     public void testBranchUserNameSvnHttpsRemoteBranchingNoRevWithPinExternals()
@@ -98,7 +98,7 @@
 
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svnbranch", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --parents --file " + messageFile.getAbsolutePath()
-                             + " --pin-externals https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch", scmBranchParameters );
+                             + " --encoding UTF-8 --pin-externals https://foo.com/svn/trunk https://foo.com/svn/branches/svnbranch", scmBranchParameters );
     }
 
     public void testBranchUserNameSvnHttps()
@@ -109,7 +109,7 @@
 
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svnbranch", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --parents --file " + messageFile.getAbsolutePath()
-                             + " . https://foo.com/svn/branches/svnbranch", null );
+                             + " --encoding UTF-8 . https://foo.com/svn/branches/svnbranch", null );
     }
 
     public void testBranchUserNameSvnSsh()
@@ -120,7 +120,7 @@
 
         testCommandLine( "scm:svn:svn+ssh://foo.com/svn/trunk", "svnbranch", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --parents --file " + messageFile.getAbsolutePath()
-                             + " . svn+ssh://user@foo.com/svn/branches/svnbranch" );
+                             + " --encoding UTF-8 . svn+ssh://user@foo.com/svn/branches/svnbranch" );
     }
 
     private void testCommandLine( String scmUrl, String branch, File messageFile, String user, String commandLine,
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommandTest.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommandTest.java
index bae43fa..30d1107 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommandTest.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkin/SvnCheckInCommandTest.java
@@ -51,7 +51,7 @@
         {
             path = "\"" + path + "\"";
         }
-        messageFileString = "--file " + path;
+        messageFileString = "--file " + path + " --encoding UTF-8";
     }
 
     public void testCommandLineWithEmptyTag()
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommandTest.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommandTest.java
index 85828c8..dd124ec 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommandTest.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirCommandTest.java
@@ -46,21 +46,21 @@
 
         messageFile = new File( "mkdir-message" );
 
-        String path = messageFile.getAbsolutePath();        
+        String path = messageFile.getAbsolutePath();
         FileUtils.fileWrite( path, "create missing directory" );
-        
+
         if ( path.indexOf( ' ' ) >= 0 )
         {
             path = "\"" + path + "\"";
         }
-        messageFileString = "--file " + path;
+        messageFileString = "--file " + path + " --encoding UTF-8";
     }
-    
+
     protected void tearDown()
         throws Exception
     {
         assertTrue( messageFile.delete() );
-        
+
         super.tearDown();
     }
 
diff --git a/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 b/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
index a05aea0..154e7de 100644
--- a/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
+++ b/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
@@ -44,7 +44,7 @@
 
         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 );
+                             " --encoding UTF-8 --parents . svn+ssh://user@foo.com/svn/tags/svntag", null );
     }
 
     public void testTagRemoteTagHttps()
@@ -58,7 +58,7 @@
         scmTagParameters.setPinExternals( false );
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svntag", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --file " + messageFile.getAbsolutePath()
-                             + " --parents https://foo.com/svn/trunk https://foo.com/svn/tags/svntag", scmTagParameters );
+                             + " --encoding UTF-8 --parents https://foo.com/svn/trunk https://foo.com/svn/tags/svntag", scmTagParameters );
     }
 
     public void testTagRemoteTagHttpsWithPinExternals()
@@ -72,7 +72,7 @@
         scmTagParameters.setPinExternals( true );
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svntag", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --file " + messageFile.getAbsolutePath()
-                             + " --parents --pin-externals https://foo.com/svn/trunk https://foo.com/svn/tags/svntag", scmTagParameters );
+                             + " --encoding UTF-8 --parents --pin-externals https://foo.com/svn/trunk https://foo.com/svn/tags/svntag", scmTagParameters );
     }
 
     public void testTagRemoteTagHttpsWithRevision()
@@ -87,7 +87,7 @@
         scmTagParameters.setScmRevision( "12" );
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svntag", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --file " + messageFile.getAbsolutePath()
-                             + " --parents --revision 12 https://foo.com/svn/trunk https://foo.com/svn/tags/svntag",
+                             + " --encoding UTF-8 --parents --revision 12 https://foo.com/svn/trunk https://foo.com/svn/tags/svntag",
                          scmTagParameters );
     }
 
@@ -103,7 +103,7 @@
         scmTagParameters.setScmRevision( "12" );
         testCommandLine( "scm:svn:https://foo.com/svn/trunk", "svntag", messageFile, "user",
                          "svn --username user --no-auth-cache --non-interactive copy --file " + messageFile.getAbsolutePath()
-                             + " --parents --revision 12 --pin-externals https://foo.com/svn/trunk https://foo.com/svn/tags/svntag",
+                             + " --encoding UTF-8 --parents --revision 12 --pin-externals https://foo.com/svn/trunk https://foo.com/svn/tags/svntag",
                          scmTagParameters );
     }