From 5a2725656f604dc45192535e913a5d98687cdd72 Mon Sep 17 00:00:00 2001 From: Lucien Weller Date: Wed, 6 Apr 2011 18:34:08 +0200 Subject: [PATCH] fixes for branching submodules --- .../shared/release/phase/ScmBranchPhase.java | 8 +++++-- .../plugins/release/BranchReleaseMojo.java | 23 ++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java index cb46cc9cf..46fa41384 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java @@ -39,6 +39,7 @@ import java.io.File; import java.util.List; +import org.apache.maven.shared.release.util.ReleaseUtil; /** * Branch the SCM repository. @@ -64,12 +65,15 @@ public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnviro validateConfiguration( releaseDescriptor ); logInfo( relResult, "Branching release with the label " + releaseDescriptor.getScmReleaseLabel() + "..." ); + + ReleaseDescriptor basedirAlignedReleaseDescriptor = + ReleaseUtil.createBasedirAlignedReleaseDescriptor( releaseDescriptor, reactorProjects ); ScmRepository repository; ScmProvider provider; try { - repository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() ); + repository = scmRepositoryConfigurator.getConfiguredRepository( basedirAlignedReleaseDescriptor.getScmSourceUrl(), releaseDescriptor, releaseEnvironment.getSettings() ); repository.getProviderRepository().setPushChanges( releaseDescriptor.isPushChanges() ); @@ -88,7 +92,7 @@ public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnviro BranchScmResult result; try { - ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ) ); + ScmFileSet fileSet = new ScmFileSet( new File( basedirAlignedReleaseDescriptor.getWorkingDirectory() ) ); String branchName = releaseDescriptor.getScmReleaseLabel(); ScmBranchParameters scmBranchParameters = new ScmBranchParameters(); diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java index febe68285..55bdda87b 100644 --- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java +++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java @@ -20,7 +20,11 @@ */ import java.util.Arrays; +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; +import org.apache.maven.project.MavenProject; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.shared.release.ReleaseExecutionException; @@ -28,6 +32,8 @@ import org.apache.maven.shared.release.config.ReleaseDescriptor; import org.apache.maven.shared.release.config.ReleaseUtils; +import org.codehaus.plexus.util.FileUtils; + /** * Branch a project in SCM, using the same steps as the release:prepare goal, creating a branch instead of a tag. * For more info see http://maven.apache.org/plugins/maven-release-plugin/examples/branch.html. @@ -231,7 +237,7 @@ public void execute() try { - releaseManager.branch( config, getReleaseEnvironment(), reactorProjects, dryRun ); + releaseManager.branch( config, getReleaseEnvironment(), filterReactorProjects(reactorProjects), dryRun ); } catch ( ReleaseExecutionException e ) { @@ -242,4 +248,19 @@ public void execute() throw new MojoFailureException( e.getMessage(), e ); } } + + public List filterReactorProjects(List reactorProjects) { + String currentDir = FileUtils.normalize( basedir.getAbsolutePath().replace( '\\', '/' ) ); + List filteredList = new ArrayList(); + for ( Iterator i = reactorProjects.iterator(); i.hasNext(); ) + { + MavenProject p = (MavenProject) i.next(); + String dir = FileUtils.normalize( p.getBasedir().getAbsolutePath().replace( '\\', '/' ) ); + if(dir.startsWith(currentDir)) + { + filteredList.add(p); + } + } + return filteredList; + } }