You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ol...@apache.org on 2010/03/11 23:30:56 UTC
svn commit: r922043 - in /maven/scm/trunk:
maven-scm-api/src/main/java/org/apache/maven/scm/provider/
maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/
maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/ap...
Author: olamy
Date: Thu Mar 11 22:30:56 2010
New Revision: 922043
URL: http://svn.apache.org/viewvc?rev=922043&view=rev
Log:
[SCM-444] Git provider does 'git push' during 'mvn release:prepare' which causes unwanted problems
Add a parameter to be able to disable push (parameter is true per default)
Submitted by Hiram Chirino
Modified:
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/branch/GitBranchCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java?rev=922043&r1=922042&r2=922043&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java Thu Mar 11 22:30:56 2010
@@ -33,6 +33,11 @@ public abstract class ScmProviderReposit
private boolean persistCheckout = false;
/**
+ * @since 1.4
+ */
+ private boolean pushChanges = true;
+
+ /**
* @return The user.
*/
public String getUser()
@@ -69,6 +74,27 @@ public abstract class ScmProviderReposit
}
/**
+ * Should distributed changes be pushed to the central repository?
+ * For many distributed SCMs like Git, a change like a commit
+ * is only stored in your local copy of the repository. Pushing
+ * the change allows your to more easily share it with other users.
+ * @since 1.4
+ */
+ public boolean isPushChanges()
+ {
+ return pushChanges;
+ }
+
+ /**
+ * @since 1.4
+ * @param pushChanges
+ */
+ public void setPushChanges(boolean pushChanges)
+ {
+ this.pushChanges = pushChanges;
+ }
+
+ /**
* Will checkouts using this repository be persisted so they can
* be refreshed in the future? This property is of concern to SCMs
* like Perforce and Clearcase where the server must track where a
Modified: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java?rev=922043&r1=922042&r2=922043&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java (original)
+++ maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java Thu Mar 11 22:30:56 2010
@@ -163,6 +163,16 @@ public abstract class AbstractScmMojo
* @parameter
*/
private Map providerImplementations;
+
+ /**
+ * Should distributed changes be pushed to the central repository?
+ * For many distributed SCMs like Git, a change like a commit
+ * is only stored in your local copy of the repository. Pushing
+ * the change allows your to more easily share it with other users.
+ *
+ * @parameter expression="${pushChanges}" default-value="true"
+ */
+ private boolean pushChanges;
/** {@inheritDoc} */
public void execute()
@@ -271,6 +281,8 @@ public abstract class AbstractScmMojo
repository = getScmManager().makeScmRepository( getConnectionUrl() );
ScmProviderRepository providerRepo = repository.getProviderRepository();
+
+ providerRepo.setPushChanges(pushChanges);
if ( !StringUtils.isEmpty( username ) )
{
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/branch/GitBranchCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/branch/GitBranchCommand.java?rev=922043&r1=922042&r2=922043&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/branch/GitBranchCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/branch/GitBranchCommand.java Thu Mar 11 22:30:56 2010
@@ -74,13 +74,16 @@ public class GitBranchCommand
return new BranchScmResult( cl.toString(), "The git-branch command failed.", stderr.getOutput(), false );
}
- // and now push the branch to the origin repository
- Commandline clPush = createPushCommandLine( repository, fileSet, branch );
-
- exitCode = GitCommandLineUtils.execute( clPush, stdout, stderr, getLogger() );
- if ( exitCode != 0 )
+ if( repo.isPushChanges() )
{
- return new BranchScmResult( clPush.toString(), "The git-push command failed.", stderr.getOutput(), false );
+ // and now push the branch to the origin repository
+ Commandline clPush = createPushCommandLine( repository, fileSet, branch );
+
+ exitCode = GitCommandLineUtils.execute( clPush, stdout, stderr, getLogger() );
+ if ( exitCode != 0 )
+ {
+ return new BranchScmResult( clPush.toString(), "The git-push command failed.", stderr.getOutput(), false );
+ }
}
// as last action we search for the branched files
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java?rev=922043&r1=922042&r2=922043&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java Thu Mar 11 22:30:56 2010
@@ -122,12 +122,15 @@ public class GitCheckInCommand
false );
}
- Commandline cl = createPushCommandLine( getLogger(), repository, fileSet, version );
-
- exitCode = GitCommandLineUtils.execute( cl, stdout, stderr, getLogger() );
- if ( exitCode != 0 )
+ if( repo.isPushChanges() )
{
- return new CheckInScmResult( cl.toString(), "The git-push command failed.", stderr.getOutput(), false );
+ Commandline cl = createPushCommandLine( getLogger(), repository, fileSet, version );
+
+ exitCode = GitCommandLineUtils.execute( cl, stdout, stderr, getLogger() );
+ if ( exitCode != 0 )
+ {
+ return new CheckInScmResult( cl.toString(), "The git-push command failed.", stderr.getOutput(), false );
+ }
}
List checkedInFiles = new ArrayList( statusConsumer.getChangedFiles().size() );
@@ -156,7 +159,7 @@ public class GitCheckInCommand
}
}
- return new CheckInScmResult( cl.toString(), checkedInFiles );
+ return new CheckInScmResult( clCommit.toString(), checkedInFiles );
}
finally
{
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java?rev=922043&r1=922042&r2=922043&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/tag/GitTagCommand.java Thu Mar 11 22:30:56 2010
@@ -99,15 +99,18 @@ public class GitTagCommand
return new TagScmResult( clTag.toString(), "The git-tag command failed.", stderr.getOutput(), false );
}
- // and now push the tag to the origin repository
- Commandline clPush = createPushCommandLine( repository, fileSet, tag );
-
- exitCode = GitCommandLineUtils.execute( clPush, stdout, stderr, getLogger() );
- if ( exitCode != 0 )
+ if( repo.isPushChanges() )
{
- return new TagScmResult( clPush.toString(), "The git-push command failed.", stderr.getOutput(), false );
+ // and now push the tag to the origin repository
+ Commandline clPush = createPushCommandLine( repository, fileSet, tag );
+
+ exitCode = GitCommandLineUtils.execute( clPush, stdout, stderr, getLogger() );
+ if ( exitCode != 0 )
+ {
+ return new TagScmResult( clPush.toString(), "The git-push command failed.", stderr.getOutput(), false );
+ }
}
-
+
// plus search for the tagged files
GitListConsumer listConsumer = new GitListConsumer( getLogger(), fileSet.getBasedir(), ScmFileStatus.TAGGED );