You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by st...@apache.org on 2009/11/15 20:05:40 UTC
svn commit: r836393 - in /maven/release/trunk:
maven-release-manager/src/main/java/org/apache/maven/shared/release/config/
maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/
maven-release-manager/src/main/mdo/ maven-release-plug...
Author: struberg
Date: Sun Nov 15 19:05:39 2009
New Revision: 836393
URL: http://svn.apache.org/viewvc?rev=836393&view=rev
Log:
[MRELEASE-501] add the localCheckout option to the release-plugin and the release-manager
This enables us to do a local checkout instead of cloning over the network for distributed SCMs.
usage: mvn release:perform -DlocalCheckout=true
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java?rev=836393&r1=836392&r2=836393&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java Sun Nov 15 19:05:39 2009
@@ -93,6 +93,7 @@
mergeInto.setDefaultDevelopmentVersion( mergeOverride( mergeInto.getDefaultDevelopmentVersion(),
toBeMerged.getDefaultDevelopmentVersion() ) );
mergeInto.setRemoteTagging( toBeMerged.isRemoteTagging() );
+ mergeInto.setLocalCheckout( toBeMerged.isLocalCheckout() );
// If the user specifies versions, these should be override the existing versions
if ( toBeMerged.getReleaseVersions() != null )
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java?rev=836393&r1=836392&r2=836393&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java Sun Nov 15 19:05:39 2009
@@ -68,6 +68,18 @@
ScmRepository repository;
ScmProvider provider;
+ if ( releaseDescriptor.isLocalCheckout() )
+ {
+ // in the release phase we have to change the checkout URL
+ // to do a local checkout instead of going over the network.
+
+ // the first step is a bit tricky, we need to know which provider! like e.g. "scm:jgit:http://"
+ // the offset of 4 is because 'scm:' has 4 characters...
+ String providerPart = releaseDescriptor.getScmSourceUrl().substring( 0, releaseDescriptor.getScmSourceUrl().indexOf( ':', 4 ) );
+ releaseDescriptor.setScmSourceUrl( providerPart + ":file://" + releaseDescriptor.getWorkingDirectory() );
+ getLogger().info( "Performing a LOCAL checkout from " + releaseDescriptor.getScmSourceUrl() );
+ }
+
try
{
repository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() );
Modified: maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?rev=836393&r1=836392&r2=836393&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo (original)
+++ maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo Sun Nov 15 19:05:39 2009
@@ -407,6 +407,17 @@
</description>
</field>
<field>
+ <name>localCheckout</name>
+ <version>2.0.0+</version>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ <description>
+ If the scm provider should use local checkouts via file://${basedir}
+ instead of doing a clean checkout over the network.
+ This is very helpful for releasing large projects!
+ </description>
+ </field>
+ <field>
<name>rootProjectPath</name>
<version>2.0.0+</version>
<type>String</type>
Modified: maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java?rev=836393&r1=836392&r2=836393&view=diff
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java (original)
+++ maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java Sun Nov 15 19:05:39 2009
@@ -166,11 +166,23 @@
protected String mavenExecutorId;
/**
+ * Use a local checkout instead of doing a checkout from the upstream repository.
+ * ATTENTION: This will only work with distributed SCMs which support the file:// protocol
+ * like e.g. git, jgit or hg!
+ *
+ * TODO: we should think about having the defaults for the various SCM providers provided via modello!
+ *
+ * @parameter expression="${localCheckout}" default-value="false"
+ */
+ private boolean localCheckout;
+
+ /**
* The SCM manager.
*
* @component
*/
private ScmManager scmManager;
+
/**
* Gets the enviroment settings configured for this release.
@@ -225,6 +237,8 @@
descriptor.setWorkingDirectory( basedir.getAbsolutePath() );
descriptor.setPomFileName( pomFileName );
+
+ descriptor.setLocalCheckout( localCheckout );
List profiles = project.getActiveProfiles();