Index: src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
===================================================================
--- src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java (revision 720901)
+++ src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java (working copy)
@@ -61,8 +61,6 @@
validateConfiguration( releaseDescriptor );
- logInfo( relResult, "Tagging release with the label " + releaseDescriptor.getScmReleaseLabel() + "..." );
-
ScmRepository repository;
ScmProvider provider;
try
@@ -80,12 +78,35 @@
throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
}
+ + ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ) );
+
+ + + if ("svn".equals(provider.getScmType()))
+ {
+ UpdateScmResult result;
+ try
+ {
+ logInfo( relResult, "Due to a Subversion bug we have to update the working directory before tagging ..." );
+ result = provider.update( repository, fileSet );
+ }
+ catch ( ScmException e )
+ {
+ throw new ReleaseExecutionException( "An error is occurred while updating working directory: " + e.getMessage(), e );
+ }
+
+ if ( !result.isSuccess() )
+ {
+ throw new ReleaseScmCommandException( "Unable to update working directory", result );
+ }
+ }
+
TagScmResult result;
try
{
- - ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ) );
String tagName = releaseDescriptor.getScmReleaseLabel();
+ logInfo( relResult, "Tagging release with the label " + tagName + "..." );
result = provider.tag( repository, fileSet, tagName,
releaseDescriptor.getScmCommentPrefix() + " copy for tag " + tagName );
}
I'd like to also add that I've tested this on both Ubuntu linux and Mac OS X 10.5 using the CollabNet binaries.