« Return to Thread: SCM SVN Provider fails on Windows with cygwin/svn because of "C:/" prefix

SCM SVN Provider fails on Windows with cygwin/svn because of "C:/" prefix

by Ovidiu Feodorov-3 :: Rate this Message:

Reply to Author | View in Thread


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

 « Return to Thread: SCM SVN Provider fails on Windows with cygwin/svn because of "C:/" prefix