I know this is not a new problem, I found several JIRA issues related to it (SCM-213 <http://jira.codehaus.org/browse/SCM-213>, for example), all reported "Resolved", but yet I am using Maven SCM 1.2 and the 2.0 Beta 9 release plug-in and , and I am still seeing it.

This is what happens in my case:

I am running mvn release:prepare for a multi-module project, (cygwin, Windows) and the operation fails with:

   [INFO] Checking in modified POMs...
   [INFO] Executing: cmd.exe /X /C "svn --non-interactive commit --file
   c:\Users\ovidiu\AppData\Local\Temp\maven-scm-1114844030.commit
   --targets c:\Users\ovidiu\AppData\Local\Temp\maven-scm-59263-targets"
   [INFO] Working directory:
   c:\work\playground\maven\release-plugin-experiments
   [INFO]
   ------------------------------------------------------------------------
   [ERROR] BUILD FAILURE
   [INFO]
   ------------------------------------------------------------------------
   [INFO] Unable to commit files
   Provider message:
   The svn command failed.
   Command output:
   svn:
   '/cygdrive/c/work/playground/maven/release-plugin-experiments/C:' is
   not a working copy
   svn: Can't open file
   
'/cygdrive/c/work/playground/maven/release-plugin-experiments/C:/.svn/entries':
   No such file or directory

The temporary file maven-scm-xxxxx-targets contains

   c:/work/playground/maven/release-plugin-experiments/pom.xml
   C:/work/playground/maven/release-plugin-experiments/sub-module-one/pom.xml


which confuses svn. C:/work/playground/maven/release-plugin-experiments is the correct project home, cygwin svn is bothered by the C:/ prefix. It seems quite obvious that this could be handled by cygwin svn, but I believe it could also be worked around from the Maven layer, with minimum of effort, especially that Maven SCM already has Cygwin-related configuration options. If Maven would generate maven-scm-xxxxx-targets to contain cygwin paths Windows paths, that would quell svn.

The file list in maven-scm-xxxxx-targets is generated by org.apache.maven.scm.provider.svn.svnexe.command.SvnCommandLineUtils.addTargets() (https://svn.apache.org/repos/asf/maven/scm/tags/maven-scm-1.2/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/SvnCommandLineUtils.java).

SvnCommandLineUtils.addTargets() could take into consideration Cygwin-related <svn-settings> (<useCygwinPath> and <cygwinMountPath>) and build the paths accordingly. <useCygwinPath> and <cygwinMountPath> are already there, and this was probably the hardest part (see http://maven.apache.org/scm/subversion.html).

If you think this is a sensible solution that'll make the life of the developers easier, and are willing to apply it, I'll submit the patch.

Or, it is also quite possible that I am totally missing something obvious here, and I will be happy to be guided to the right path.

Cheers,
Ovidiu

Reply via email to