Did you use the 'svn move ...' command to rename the directory or did
you do it directly on the file system for your working copy?

If you did the second your working copy will not have correct subversion
metadata.

Ken Tanaka wrote:
> Hi,
> 
> I had an error using mvn release:prepare after I had created a
> src/main/conf directory under SubVersion, then renamed it
> src/main/config to match the Maven 2 convention. I'm not sure if I'm not
> following a Maven or SubVersion convention, or if this is a bug.
> 
> The workaround, noted in the following perl script loses the revision
> history. The rest of this post is a perl script to replicate the problem
> for a unix-like system. The header comment provides a number of details.
> (I'm hoping line wrap doesn't mess this up ;-) Run this script in clean
> disposable directory.
> 
> If anyone has a suggestion on avoiding the error, please post.
> 
> Thanks,
> Ken
> 
> === start of testMvnRelease.pl ===
> #!/usr/bin/perl -w
> ##
> ##  File: testMvnRelease.pl
> ##
> ##  I had an error using mvn release:prepare after I had
> ##  created a src/main/conf directory under SubVersion,
> ##  then renamed it src/main/config to match the Maven 2
> ##  convention. I'm not sure if I'm not following a Maven
> ##  or SubVersion convention, or if this is a bug.
> ##
> ##  I'm seeing this error:
> ##
> ##  [INFO]
> ------------------------------------------------------------------------
> ##  [ERROR] BUILD FAILURE
> ##  [INFO]
> ------------------------------------------------------------------------
> ##  [INFO] Unable to tag SCM
> ##  Provider message:
> ##  The svn tag command failed.
> ##  Command output:
> ##  svn: Commit failed (details follow):
> ##  svn: Directory
> '/extra/data/src/java/testMvnRelease/myProject/trunk/target/.svn'
> ##  containing working copy admin area is missing
> ##
> ##  My workaround was to create a copy of the project,
> ##  wipe out all the revision history (.svn directories),
> ##  and enter it into SubVersion as a new project as if the
> ##  configuration directory had been named src/main/config
> ##  from the start. Is there a better way to correct this
> ##  category of error without losing the revision history?
> ##
> ##  This script is a self-contained way to explore reproducing
> ##  this behavior. There's a lot of setup, so I wanted to make
> ##  it easy for others to see what I'm doing.
> ##
> ##  Versions: Maven version: 2.0.9
> ##    Java version: 1.6.0_03
> ##    OS name: "linux" version: "2.6.18-92.1.10.el5" arch: "amd64"
> Family: "unix"
> ##    svn, version 1.4.2 (r22196)
> ##
> ##  For reference I'm going by:
> ##  http://maven.apache.org/plugins/maven-release-plugin/
> ##
> ##  Summary of the standard Maven directory layout:
> ##     myProject
> ##      +- trunk
> ##          +- src
> ##              +- main
> ##                  +- config    <-- area of concern
> ##                  +- java
> ##
> ##  If you don't have perl, but are using a unix-like system,
> ##  then the commands between backticks can be executed on the comand
> ##  line. For this reason I've mimmicked the command line, e.g. using
> ##  the system "rm" rather than the perl built-in "unlink" command.
> ##  The chdir commands are used in Perl since the 'cd' commands
> ##  would otherwise be transient. To excecute outside Perl, the "chdir"
> ##  commands should be converted as
> ##    chdir 'aProject' --> cd aProject
> 
> ##  Cleanup code for subsequent runs.
> ##  Not needed the first time through.
> if (-e 'aProject') {
>    ## existing directory is removed recursively (-r)
>    print `rm -r aProject`;
> }
> if (-e 'myProject') {
>    ## use force (-f) option to override any svn permissions
>    print `rm -rf myProject`;
> }
> if (-e '/tmp/repos') {
>    print `rm -rf /tmp/repos`;
> }
> 
> ## Create the standard maven project
> print "Create a maven project\n";
> print `mkdir aProject`;
> chdir 'aProject';
> print `mvn archetype:create -DgroupId=com.mycompany.app
> -DartifactId=my-app`;
> 
> ## There should be no errors. Compile and run to test.
> ## The following commands should work
> chdir 'my-app';
> print `mvn package`;
> print `java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App`;
> ## Standard project prints "Hello World!" Pause 3 seconds to see result
> print `sleep 3`;
> 
> ## create a directory with wrong name "conf", then correct it later
> print `mkdir src/main/conf`;
> ## create a config file
> open CONF, ">src/main/conf/myconf.xml"
>    or die "couldn't create config file\n";
> 
> print CONF '<?xml version="1.0" encoding="UTF-8"?>
> <myconf>
>    <element attr="a" />
> </myconf>  ';
> 
> close CONF;
> 
> ## Add project to SubVersion version control
> ## Go back up two directory levels
> chdir '../..';
> ## change my-app to trunk (a subversion convention)
> print `mv aProject/my-app aProject/trunk`;
> ## create a new (disposable) repository on local disk
> print `svnadmin create /tmp/repos`;
> ## Put aProject under version control as myProject
> print `svn import aProject file:///tmp/repos/myProject -m "initial
> import"`;
> 
> ## Now pull out a version-controlled copy of the project: myProject
> ## (aProject is not needed and ignored from now on)
> print `svn checkout file:///tmp/repos/myProject myProject`;
> 
> ## Change src/main/conf to src/main/config to match the standard
> ## maven directory naming convention
> chdir 'myProject/trunk';
> print `svn move src/main/conf src/main/config`;
> print `svn status`;
> print `svn commit -m "comply with mvn convention, conf renamed to config"`;
> 
> ## Add scm information to pom.xml -- required for release plugin
> open POM, "pom.xml" or die "Couldn't open pom.xml for reading";
> @pomlines = <POM>;  ## Read the whole file.
> close POM;
> 
> ## Write a new pom.xml
> open POM, ">pom.xml" or die "Couldn't open pom.xml for modification";
> foreach $line (@pomlines) {
>    print POM $line;
>    ## if this is the "url" line, add the scm info right after it
>    if ($line =~ m!</url>!) {
>    ## Without Perl you would add the following with a text editor
>    ## after the "<url>...</url>" section.
>    print POM '    <scm>
>        <connection>scm:svn:file:///tmp/repos/myProject/trunk</connection>
>       
> <developerConnection>scm:svn:file:///tmp/repos/myProject/trunk</developerConnection>
> 
>    </scm>
> ';
>    }
> }
> close POM;
> 
> ## commit change to pom.xml
> print `svn commit -m "added scm to pom.xml"`;
> 
> ## Now we are set up to see the mvn release:prepare error
> print "#####" x 10;
> print "\nChange directory to myProject/trunk and interactively issue
> the 'mvn release:prepare' command (press return to accept defaults).
> Use the following two commands:
> 
> cd myProject/trunk
> mvn release:prepare\n";
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


-- 
Dennis Lundberg

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to