You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2020/01/07 21:56:47 UTC
[maven-release] 01/02: Add support for the "--pin-externals" option
in SCM branch and tag operations. This feature was introducted in
Subversion 1.9 and is available in maven-scm-plugin since version 1.11.1
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MRELEASE-835
in repository https://gitbox.apache.org/repos/asf/maven-release.git
commit 95ec13f73dbe70f31eb318ed5584dbd833ce272f
Author: Thorsten Heit <th...@gmx.de>
AuthorDate: Fri Dec 20 12:27:02 2019 +0100
Add support for the "--pin-externals" option in SCM branch and tag operations. This feature was introducted in Subversion 1.9 and is available in maven-scm-plugin since version 1.11.1
---
.../maven/shared/release/config/ReleaseDescriptor.java | 8 ++++++++
.../release/config/PropertiesReleaseDescriptorStore.java | 2 ++
.../shared/release/config/ReleaseDescriptorBuilder.java | 6 ++++++
.../apache/maven/shared/release/config/ReleaseUtils.java | 5 +++++
.../apache/maven/shared/release/phase/ScmBranchPhase.java | 5 +++++
.../org/apache/maven/shared/release/phase/ScmTagPhase.java | 7 +++++++
maven-release-manager/src/main/mdo/release-descriptor.mdo | 14 ++++++++++++++
.../shared/release/phase/GenerateReleasePomsPhaseTest.java | 2 ++
.../shared/release/phase/IsScmBranchParametersEquals.java | 4 ++--
.../shared/release/phase/IsScmTagParametersEquals.java | 3 ++-
.../release/phase/ScmCommitDevelopmentPhaseTest.java | 1 +
.../release/phase/ScmCommitPreparationPhaseTest.java | 1 +
.../apache/maven/plugins/release/BranchReleaseMojo.java | 10 ++++++++++
.../apache/maven/plugins/release/PrepareReleaseMojo.java | 10 ++++++++++
14 files changed, 75 insertions(+), 3 deletions(-)
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
index a6d03c2..a45fd13 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
@@ -464,4 +464,12 @@ public interface ReleaseDescriptor
void setScmRelativePathProjectDirectory( String scmRelativePathProjectDirectory );
void setScmSourceUrl( String scmUrl );
+
+ /**
+ * Get whether the "--pin-externals" option in svn copy commands is enabled
+ * which is new in Subversion 1.9.
+ *
+ * @return boolean
+ */
+ boolean isPinExternals();
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
index 262b21d..9fd335c 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
@@ -249,6 +249,8 @@ public class PropertiesReleaseDescriptorStore
properties.setProperty( "remoteTagging", Boolean.toString( config.isRemoteTagging() ) );
+ properties.setProperty( "pinExternals", Boolean.toString( config.isPinExternals() ) );
+
properties.setProperty( "pushChanges", Boolean.toString( config.isPushChanges() ) );
if ( config.getWorkItem() != null )
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
index 745dc4d..8e71be9 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
@@ -440,6 +440,12 @@ public class ReleaseDescriptorBuilder
return this;
}
+ public ReleaseDescriptorBuilder setPinExternals( boolean pinExternals )
+ {
+ releaseDescriptor.setPinExternals( pinExternals );
+ return this;
+ }
+
BuilderReleaseDescriptor build()
{
return releaseDescriptor;
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
index bc48cc5..0da9629 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
@@ -161,6 +161,11 @@ public class ReleaseUtils
String remoteTaggingStr = properties.getProperty( "remoteTagging" );
builder.setRemoteTagging( Boolean.valueOf( remoteTaggingStr ) );
}
+ if ( properties.containsKey( "pinExternals" ) )
+ {
+ String pinExternals = properties.getProperty( "pinExternals" );
+ builder.setPinExternals( Boolean.valueOf( pinExternals ) );
+ }
if ( properties.containsKey( "pushChanges" ) )
{
String pushChanges = properties.getProperty( "pushChanges" );
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 d1d85b6..8bbde41 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
@@ -108,6 +108,7 @@ public class ScmBranchPhase
scmBranchParameters.setMessage( releaseDescriptor.getScmCommentPrefix() + "copy for branch " + branchName );
scmBranchParameters.setRemoteBranching( releaseDescriptor.isRemoteTagging() );
scmBranchParameters.setScmRevision( releaseDescriptor.getScmReleasedPomRevision() );
+ scmBranchParameters.setPinExternals( releaseDescriptor.isPinExternals() );
result = provider.branch( repository, fileSet, branchName, scmBranchParameters );
}
@@ -143,6 +144,10 @@ public class ScmBranchPhase
logInfo( result, " To SCM URL: " + releaseDescriptor.getScmBranchBase() );
}
logInfo( result, " with label: '" + releaseDescriptor.getScmReleaseLabel() + "'" );
+ if ( releaseDescriptor.isPinExternals() )
+ {
+ logInfo( result, " with pinned externals" );
+ }
result.setResultCode( ReleaseResult.SUCCESS );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
index 5f52d39..6f4f67d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
@@ -120,6 +120,7 @@ public class ScmTagPhase
new ScmTagParameters( releaseDescriptor.getScmCommentPrefix() + "copy for tag " + tagName );
scmTagParameters.setRemoteTagging( releaseDescriptor.isRemoteTagging() );
scmTagParameters.setScmRevision( releaseDescriptor.getScmReleasedPomRevision() );
+ scmTagParameters.setPinExternals( releaseDescriptor.isPinExternals() );
if ( getLogger().isDebugEnabled() )
{
getLogger().debug(
@@ -127,6 +128,8 @@ public class ScmTagPhase
getLogger().debug(
"ScmTagPhase :: scmTagParameters scmRevision " + releaseDescriptor.getScmReleasedPomRevision() );
getLogger().debug( "ScmTagPhase :: fileSet " + fileSet );
+ getLogger().debug(
+ "ScmTagPhase :: scmTagParameters pinExternals " + releaseDescriptor.isPinExternals() );
}
result = provider.tag( repository, fileSet, tagName, scmTagParameters );
}
@@ -168,6 +171,10 @@ public class ScmTagPhase
logInfo( result, "Full run would be tagging remotely " + basedirAlignedReleaseDescriptor.getScmSourceUrl()
+ " with label: '" + releaseDescriptor.getScmReleaseLabel() + "'" );
}
+ if ( releaseDescriptor.isPinExternals() )
+ {
+ logInfo( result, "Full run would pin externals" );
+ }
result.setResultCode( ReleaseResult.SUCCESS );
diff --git a/maven-release-manager/src/main/mdo/release-descriptor.mdo b/maven-release-manager/src/main/mdo/release-descriptor.mdo
index b63c4b4..d1d4996 100644
--- a/maven-release-manager/src/main/mdo/release-descriptor.mdo
+++ b/maven-release-manager/src/main/mdo/release-descriptor.mdo
@@ -563,6 +563,18 @@
</description>
</field>
+ <field>
+ <name>pinExternals</name>
+ <version>3.0.0+</version>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ <description>
+ Enable the "--pin-externals" option in svn copy commands which is new in Subversion 1.9.
+ NOTE : Currently only implemented with Subversion.
+ (https://issues.apache.org/jira/browse/SCM-805)
+ </description>
+ </field>
+
<!-- Announcement Information
Announcement related info, this can be a second part of the process.
@@ -785,6 +797,7 @@
updateVersionsToSnapshot != that.isUpdateVersionsToSnapshot() ||
allowTimestampedSnapshots != that.isAllowTimestampedSnapshots() ||
remoteTagging != that.isRemoteTagging() ||
+ pinExternals != that.isPinExternals() ||
localCheckout != that.isLocalCheckout() ||
pushChanges != that.isPushChanges()
)
@@ -1054,6 +1067,7 @@
result = 29 * result + java.util.Objects.hashCode( defaultReleaseVersion );
result = 29 * result + java.util.Objects.hashCode( scmReleasedPomRevision );
result = 29 * result + java.util.Objects.hashCode( workItem );
+ result = 29 * result + java.util.Objects.hashCode( pinExternals );
return result;
}
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
index c150589..ad381ee 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
@@ -117,6 +117,7 @@ public class GenerateReleasePomsPhaseTest
builder.setGenerateReleasePoms( true );
builder.setSuppressCommitBeforeTagOrBranch( true );
builder.setRemoteTagging( false );
+ builder.setPinExternals( false );
mapNextVersion( builder, "groupId:artifactId" );
phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new DefaultReleaseEnvironment(), reactorProjects );
@@ -135,6 +136,7 @@ public class GenerateReleasePomsPhaseTest
builder.setGenerateReleasePoms( true );
builder.setSuppressCommitBeforeTagOrBranch( true );
builder.setRemoteTagging( true );
+ builder.setPinExternals( false );
mapNextVersion( builder, "groupId:artifactId" );
phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new DefaultReleaseEnvironment(), reactorProjects );
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmBranchParametersEquals.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmBranchParametersEquals.java
index 9fb572f..8431b85 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmBranchParametersEquals.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmBranchParametersEquals.java
@@ -40,7 +40,7 @@ public class IsScmBranchParametersEquals extends ArgumentMatcher<ScmBranchParame
{
ScmBranchParameters sbp = (ScmBranchParameters) argument;
return sbp.getMessage().equals( this.scmBranchParameters.getMessage() )
- //&& stp.isRemoteTagging() == this.scmBranchParameters.isRemoteTagging()
- ;
+ && sbp.isRemoteBranching() == this.scmBranchParameters.isRemoteBranching()
+ && sbp.isPinExternals() == this.scmBranchParameters.isPinExternals();
}
}
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParametersEquals.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParametersEquals.java
index 0c3dc75..6196256 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParametersEquals.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParametersEquals.java
@@ -39,6 +39,7 @@ public class IsScmTagParametersEquals extends ArgumentMatcher<ScmTagParameters>
{
ScmTagParameters stp = (ScmTagParameters) argument;
return stp.getMessage().equals( this.scmTagParameters.getMessage() )
- && stp.isRemoteTagging() == this.scmTagParameters.isRemoteTagging();
+ && stp.isRemoteTagging() == this.scmTagParameters.isRemoteTagging()
+ && stp.isPinExternals() == this.scmTagParameters.isPinExternals();
}
}
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
index 50ba849..8378869 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
@@ -96,6 +96,7 @@ public class ScmCommitDevelopmentPhaseTest
List<MavenProject> reactorProjects = createReactorProjects();
builder.setRemoteTagging( false );
+ builder.setPinExternals( false );
builder.setSuppressCommitBeforeTagOrBranch( true );
builder.setUpdateWorkingCopyVersions( false );
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
index 863cdbd..954086c 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
@@ -488,6 +488,7 @@ public class ScmCommitPreparationPhaseTest
List<MavenProject> reactorProjects = createReactorProjects();
builder.setRemoteTagging( true );
+ builder.setPinExternals( false );
builder.setSuppressCommitBeforeTagOrBranch( true );
ScmProvider scmProviderMock = mock( ScmProvider.class );
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 1cbd467..05030f0 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
@@ -230,6 +230,15 @@ public class BranchReleaseMojo
@Parameter( defaultValue = "@{prefix} prepare branch @{releaseLabel}", property = "scmBranchCommitComment" )
private String scmBranchCommitComment = "@{prefix} prepare branch @{releaseLabel}";
+ /**
+ * Currently only implemented with svn scm. Enable the "--pin-externals" option in svn
+ * copy commands which is new in Subversion 1.9.
+ *
+ * @since 3.0.0
+ */
+ @Parameter( defaultValue = "false", property = "pinExternals" )
+ private boolean pinExternals;
+
@Override
public void execute()
throws MojoExecutionException, MojoFailureException
@@ -254,6 +263,7 @@ public class BranchReleaseMojo
config.setProjectVersionPolicyId( projectVersionPolicyId );
config.setProjectNamingPolicyId( projectBranchNamingPolicyId );
config.setScmBranchCommitComment( scmBranchCommitComment );
+ config.setPinExternals( pinExternals );
if ( checkModificationExcludeList != null )
{
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
index 1c3e057..f09a24d 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
@@ -280,6 +280,15 @@ public class PrepareReleaseMojo
property = "scmDevelopmentCommitComment" )
private String scmDevelopmentCommitComment = "@{prefix} prepare for next development iteration";
+ /**
+ * Currently only implemented with svn scm. Enable the "--pin-externals" option in svn
+ * copy commands which is new in Subversion 1.9.
+ *
+ * @since 3.0.0
+ */
+ @Parameter( defaultValue = "false", property = "pinExternals" )
+ private boolean pinExternals;
+
@Override
public void execute()
throws MojoExecutionException, MojoFailureException
@@ -321,6 +330,7 @@ public class PrepareReleaseMojo
config.setProjectNamingPolicyId( projectTagNamingPolicyId );
config.setScmDevelopmentCommitComment( scmDevelopmentCommitComment );
config.setScmReleaseCommitComment( scmReleaseCommitComment );
+ config.setPinExternals( pinExternals );
if ( checkModificationExcludeList != null )
{