You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2012/06/22 10:33:40 UTC
svn commit: r1352801 - in /maven/scm/trunk:
maven-scm-api/src/main/java/org/apache/maven/scm/
maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/
maven-scm-api/src/main/java/org/apache/maven/scm/manager/
maven-scm-api/src/main/java/org/...
Author: olamy
Date: Fri Jun 22 08:33:37 2012
New Revision: 1352801
URL: http://svn.apache.org/viewvc?rev=1352801&view=rev
Log:
[SCM-679] enhance scm api to support limited number of returned changesets by changelog command.
Submitted by Petr Kozelka.
Added:
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmRequest.java (with props)
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogScmRequest.java (with props)
Modified:
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/AbstractChangeLogCommand.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConstants.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommandTest.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/changelog/GitChangeLogCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/changelog/GitChangeLogCommandTest.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommandTest.java
maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java
maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java Fri Jun 22 08:33:37 2012
@@ -44,6 +44,8 @@ public class CommandParameter
public static final CommandParameter NUM_DAYS = new CommandParameter( "numDays" );
+ public static final CommandParameter LIMIT = new CommandParameter( "limit" );
+
public static final CommandParameter BRANCH = new CommandParameter( "branch" );
public static final CommandParameter START_SCM_VERSION = new CommandParameter( "startScmVersion" );
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameters.java Fri Jun 22 08:33:37 2012
@@ -390,4 +390,14 @@ public class CommandParameters
parameters.put( parameter.getName(), value );
}
+
+ /**
+ * Removes a parameter, silent if it didn't exist.
+ *
+ * @param parameter name of the parameter to remove
+ */
+ public void remove( CommandParameter parameter )
+ {
+ parameters.remove( parameter );
+ }
}
Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmRequest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmRequest.java?rev=1352801&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmRequest.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmRequest.java Fri Jun 22 08:33:37 2012
@@ -0,0 +1,96 @@
+package org.apache.maven.scm;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.repository.ScmRepository;
+
+import java.io.Serializable;
+
+/**
+ * Base class for SCM wrapped parameters.
+ * Unlike {@link ScmResult}, this is mutable, as its use requires more flexibility when configuring the call.
+ * <p>Most parameters should be stored in {@link #getCommandParameters() parameters} field, as it makes them easy to pass
+ * down to the implementation side.</p>
+ * <p>
+ * Methods in descendant classes should perform all neccessary (un)marshalling so that user can work with nice
+ * semantic typesafe properties.</p>
+ *
+ * @author Petr Kozelka
+ * @since 1.8
+ */
+public class ScmRequest
+ implements Serializable
+{
+ private static final long serialVersionUID = 20120620L;
+
+ private ScmRepository scmRepository;
+
+ private ScmFileSet scmFileSet;
+
+ protected final CommandParameters parameters = new CommandParameters();
+
+ public ScmRequest()
+ {
+ }
+
+ public ScmRequest( ScmRepository scmRepository, ScmFileSet scmFileSet )
+ {
+ this.scmRepository = scmRepository;
+ this.scmFileSet = scmFileSet;
+ }
+
+ public ScmRepository getScmRepository()
+ {
+ return scmRepository;
+ }
+
+ /**
+ * @param scmRepository the source control system
+ */
+ public void setScmRepository( ScmRepository scmRepository )
+ {
+ this.scmRepository = scmRepository;
+ }
+
+ public ScmFileSet getScmFileSet()
+ {
+ return scmFileSet;
+ }
+
+ /**
+ * The files being processed. Implementations can also work with all files from the
+ * {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
+ * @param scmFileSet working copy and its selected files
+ */
+ public void setScmFileSet( ScmFileSet scmFileSet )
+ {
+ this.scmFileSet = scmFileSet;
+ }
+
+ /**
+ * Holds all parameter values passed to the implementing part.
+ * These parameters are usually translated to commandline options or arguments.
+ * @return command parameters
+ */
+ public CommandParameters getCommandParameters()
+ {
+ return parameters;
+ }
+}
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmRequest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmRequest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/AbstractChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/AbstractChangeLogCommand.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/AbstractChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/AbstractChangeLogCommand.java Fri Jun 22 08:33:37 2012
@@ -40,11 +40,13 @@ public abstract class AbstractChangeLogC
extends AbstractCommand
implements ChangeLogCommand
{
+ @Deprecated
protected abstract ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repository, ScmFileSet fileSet,
Date startDate, Date endDate, ScmBranch branch,
String datePattern )
throws ScmException;
+ @Deprecated
protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repository, ScmFileSet fileSet,
ScmVersion startVersion, ScmVersion endVersion,
String datePattern )
@@ -66,6 +68,11 @@ public abstract class AbstractChangeLogC
int numDays = parameters.getInt( CommandParameter.NUM_DAYS, 0 );
+ Integer limit = parameters.getInt( CommandParameter.LIMIT, -1 );
+ if ( limit < 1 ) {
+ limit = null;
+ }
+
ScmBranch branch = (ScmBranch) parameters.getScmVersion( CommandParameter.BRANCH, null );
ScmVersion startVersion = parameters.getScmVersion( CommandParameter.START_SCM_VERSION, null );
@@ -105,4 +112,10 @@ public abstract class AbstractChangeLogC
return executeChangeLogCommand( repository, fileSet, startDate, endDate, branch, datePattern );
}
}
+
+ protected ChangeLogScmResult executeChangeLogCommand( ChangeLogScmRequest request )
+ throws ScmException
+ {
+ throw new ScmException( "Unsupported method for this provider." );
+ }
}
Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogScmRequest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogScmRequest.java?rev=1352801&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogScmRequest.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogScmRequest.java Fri Jun 22 08:33:37 2012
@@ -0,0 +1,176 @@
+package org.apache.maven.scm.command.changelog;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.ScmBranch;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmRequest;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import java.util.Date;
+
+/**
+ * @author Petr Kozelka
+ * @since 1.8
+ */
+public class ChangeLogScmRequest
+ extends ScmRequest
+{
+ private static final long serialVersionUID = 20120620L;
+
+ public ChangeLogScmRequest( ScmRepository scmRepository, ScmFileSet scmFileSet )
+ {
+ super( scmRepository, scmFileSet );
+ }
+
+ public ScmBranch getScmBranch()
+ throws ScmException
+ {
+ return (ScmBranch) parameters.getScmVersion( CommandParameter.BRANCH, null );
+ }
+
+ public void setScmBranch( ScmBranch scmBranch )
+ throws ScmException
+ {
+ parameters.setScmVersion( CommandParameter.BRANCH, scmBranch );
+ }
+
+ public Date getStartDate()
+ throws ScmException
+ {
+ return parameters.getDate( CommandParameter.START_DATE );
+ }
+
+ /**
+ * @param startDate the start date of the period
+ */
+ public void setStartDate( Date startDate )
+ throws ScmException
+ {
+ parameters.setDate( CommandParameter.START_DATE, startDate );
+ }
+
+ public Date getEndDate()
+ throws ScmException
+ {
+ return parameters.getDate( CommandParameter.END_DATE );
+ }
+
+ /**
+ * @param endDate the end date of the period
+ */
+ public void setEndDate( Date endDate )
+ throws ScmException
+ {
+ parameters.setDate( CommandParameter.END_DATE, endDate );
+ }
+
+ public int getNumDays()
+ throws ScmException
+ {
+ return parameters.getInt( CommandParameter.START_DATE );
+ }
+
+ /**
+ * @param numDays the number days before the current time if startdate and enddate are null
+ */
+ public void setNumDays( int numDays )
+ throws ScmException
+ {
+ parameters.setInt( CommandParameter.NUM_DAYS, numDays );
+ }
+
+ public ScmVersion getStartRevision()
+ throws ScmException
+ {
+ return parameters.getScmVersion( CommandParameter.START_SCM_VERSION, null );
+ }
+
+ /**
+ * @param startRevision the start branch/tag/revision
+ */
+ public void setStartRevision( ScmVersion startRevision )
+ throws ScmException
+ {
+ parameters.setScmVersion( CommandParameter.START_SCM_VERSION, startRevision );
+ }
+
+ public ScmVersion getEndRevision()
+ throws ScmException
+ {
+ return parameters.getScmVersion( CommandParameter.END_SCM_VERSION, null );
+ }
+
+ /**
+ * @param endRevision the end branch/tag/revision
+ */
+ public void setEndRevision( ScmVersion endRevision )
+ throws ScmException
+ {
+ parameters.setScmVersion( CommandParameter.END_SCM_VERSION, endRevision );
+ }
+
+ public String getDatePattern()
+ throws ScmException
+ {
+ return parameters.getString( CommandParameter.CHANGELOG_DATE_PATTERN, null );
+ }
+
+ /**
+ * @param datePattern the date pattern used in changelog output returned by scm tool
+ */
+ public void setDatePattern( String datePattern )
+ throws ScmException
+ {
+ parameters.setString( CommandParameter.CHANGELOG_DATE_PATTERN, datePattern );
+ }
+
+ public Integer getLimit()
+ throws ScmException
+ {
+ final int limit = parameters.getInt( CommandParameter.LIMIT, -1 );
+ return limit > 0 ? limit : null;
+ }
+
+ /**
+ * @param limit the maximal count of returned changesets
+ */
+ public void setLimit( Integer limit )
+ throws ScmException
+ {
+ if ( limit != null ) {
+ parameters.setInt( CommandParameter.LIMIT, limit );
+ } else {
+ parameters.remove( CommandParameter.LIMIT );
+ }
+
+ }
+
+ public void setDateRange( Date startDate, Date endDate )
+ throws ScmException
+ {
+ setStartDate( startDate );
+ setEndDate( endDate );
+ }
+
+}
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogScmRequest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogScmRequest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java Fri Jun 22 08:33:37 2012
@@ -36,6 +36,7 @@ import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.add.AddScmResult;
import org.apache.maven.scm.command.blame.BlameScmResult;
import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
@@ -190,7 +191,7 @@ public abstract class AbstractScmManager
ScmProvider provider = getProviderByType( providerType );
String scmSpecificUrl = cleanScmUrl( scmUrl.substring( providerType.length() + 5 ) );
-
+
ScmProviderRepository providerRepository = provider.makeProviderScmRepository( scmSpecificUrl, delimiter );
return new ScmRepository( providerType, providerRepository );
@@ -355,6 +356,13 @@ public abstract class AbstractScmManager
}
/** {@inheritDoc} */
+ public ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest )
+ throws ScmException
+ {
+ return this.getProviderByRepository( scmRequest.getScmRepository() ).changeLog( scmRequest );
+ }
+
+ /** {@inheritDoc} */
public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
ScmVersion endVersion )
throws ScmException
@@ -472,7 +480,7 @@ public abstract class AbstractScmManager
{
return this.getProviderByRepository( repository ).mkdir( repository, fileSet, message, createInLocal );
}
-
+
/** {@inheritDoc} */
public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message )
throws ScmException
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java Fri Jun 22 08:33:37 2012
@@ -26,6 +26,7 @@ import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.add.AddScmResult;
import org.apache.maven.scm.command.blame.BlameScmResult;
import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
@@ -184,7 +185,9 @@ public interface ScmManager
* @param branch the branch/tag
* @return The SCM result of the changelog command
* @throws ScmException if any
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
int numDays, ScmBranch branch )
throws ScmException;
@@ -203,12 +206,26 @@ public interface ScmManager
* @param datePattern the date pattern use in changelog output returned by scm tool
* @return The SCM result of the changelog command
* @throws ScmException if any
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
int numDays, ScmBranch branch, String datePattern )
throws ScmException;
/**
+ * Returns the changes that have happend in the source control system in a certain period of time. This can be
+ * adding, removing, updating, ... of files
+ *
+ * @param scmRequest request wrapping detailed parameters for the changelog command
+ * @return The SCM result of the changelog command
+ * @throws ScmException if any
+ * @since 1.8
+ */
+ ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest )
+ throws ScmException;
+
+ /**
* Returns the changes that have happend in the source control system between two tags. This can be adding,
* removing, updating, ... of files
*
@@ -219,7 +236,9 @@ public interface ScmManager
* @param endVersion the end branch/tag/revision
* @return The SCM result of the changelog command
* @throws ScmException if any
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
ScmVersion endVersion )
throws ScmException;
@@ -236,7 +255,9 @@ public interface ScmManager
* @param datePattern the date pattern use in changelog output returned by scm tool
* @return
* @throws ScmException if any
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision,
ScmVersion endRevision, String datePattern )
throws ScmException;
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java Fri Jun 22 08:33:37 2012
@@ -32,6 +32,7 @@ import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.add.AddScmResult;
import org.apache.maven.scm.command.blame.BlameScmResult;
import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
@@ -273,21 +274,24 @@ public abstract class AbstractScmProvide
int numDays, ScmBranch branch, String datePattern )
throws ScmException
{
- login( repository, fileSet );
-
- CommandParameters parameters = new CommandParameters();
-
- parameters.setDate( CommandParameter.START_DATE, startDate );
-
- parameters.setDate( CommandParameter.END_DATE, endDate );
-
- parameters.setInt( CommandParameter.NUM_DAYS, numDays );
-
- parameters.setScmVersion( CommandParameter.BRANCH, branch );
-
- parameters.setString( CommandParameter.CHANGELOG_DATE_PATTERN, datePattern );
+ final ChangeLogScmRequest request = new ChangeLogScmRequest( repository, fileSet );
+ request.setDateRange( startDate, endDate );
+ request.setNumDays( numDays );
+ request.setScmBranch( branch );
+ request.setDatePattern( datePattern );
+ return changeLog( request );
+ }
- return changelog( repository.getProviderRepository(), fileSet, parameters );
+ /**
+ * {@inheritDoc}
+ */
+ public ChangeLogScmResult changeLog( ChangeLogScmRequest request )
+ throws ScmException
+ {
+ final ScmRepository scmRepository = request.getScmRepository();
+ final ScmFileSet scmFileSet = request.getScmFileSet();
+ login( scmRepository, scmFileSet );
+ return changelog( scmRepository.getProviderRepository(), scmFileSet, request.getCommandParameters() );
}
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java Fri Jun 22 08:33:37 2012
@@ -29,6 +29,7 @@ import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.add.AddScmResult;
import org.apache.maven.scm.command.blame.BlameScmResult;
import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
@@ -182,7 +183,6 @@ public interface ScmProvider
* @param fileSet the files to branch. Implementations can also give the changes from the
* {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
* @param branchName the branch name to apply to the files
- * @param message the commit message used for the tag creation
* @return
* @throws ScmException if any
* @since 1.3
@@ -224,7 +224,9 @@ public interface ScmProvider
* @param branch the branch/tag
* @return The SCM result of the changelog command
* @throws ScmException if any
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
int numDays, ScmBranch branch )
throws ScmException;
@@ -243,9 +245,9 @@ public interface ScmProvider
* @param datePattern the date pattern use in changelog output returned by scm tool
* @return The SCM result of the changelog command
* @throws ScmException if any
- * @deprecated you must use {@link ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository,
- * org.apache.maven.scm.ScmFileSet, java.util.Date, java.util.Date, int, org.apache.maven.scm.ScmBranch, String)}
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
int numDays, String branch, String datePattern )
throws ScmException;
@@ -264,12 +266,25 @@ public interface ScmProvider
* @param datePattern the date pattern use in changelog output returned by scm tool
* @return The SCM result of the changelog command
* @throws ScmException if any
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
int numDays, ScmBranch branch, String datePattern )
throws ScmException;
/**
+ * Returns the changes that have happend in the source control system in a certain period of time.
+ * This can be adding, removing, updating, ... of files
+ *
+ * @param scmRequest request wrapping detailed parameters for the changelog command
+ * @return The SCM result of the changelog command
+ * @throws ScmException if any
+ * @since 1.8
+ */
+ ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest )
+ throws ScmException;
+
+ /**
* Returns the changes that have happend in the source control system between two tags.
* This can be adding, removing, updating, ... of files
*
@@ -280,9 +295,9 @@ public interface ScmProvider
* @param endTag the end tag
* @return The SCM result of the changelog command
* @throws ScmException if any
- * @deprecated you must use {@link ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository,
- * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion)}
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
throws ScmException;
@@ -297,7 +312,9 @@ public interface ScmProvider
* @param endVersion the end branch/tag/revision
* @return The SCM result of the changelog command
* @throws ScmException if any
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
ScmVersion endVersion )
throws ScmException;
@@ -314,9 +331,9 @@ public interface ScmProvider
* @param datePattern the date pattern use in changelog output returned by scm tool
* @return
* @throws ScmException if any
- * @deprecated you must use {@link ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository,
- * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion, String)}
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag,
String datePattern )
throws ScmException;
@@ -333,7 +350,9 @@ public interface ScmProvider
* @param datePattern the date pattern use in changelog output returned by scm tool
* @return
* @throws ScmException if any
+ * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead
*/
+ @Deprecated
ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision,
ScmVersion endRevision, String datePattern )
throws ScmException;
@@ -871,7 +890,7 @@ public interface ScmProvider
* @param repository
* @param fileSet
* @param createInLocal
- * @param messageFile
+ * @param message
* @return
* @throws ScmException
*/
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConstants.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConstants.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConstants.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConstants.java Fri Jun 22 08:33:37 2012
@@ -128,4 +128,9 @@ public class BazaarConstants
public static final String VERSION = "version";
public static final String CHECK = "check";
+
+ /**
+ * Limit the output to the first N revisions.
+ */
+ public static final String LIMIT_OPTION = "--limit";
}
\ No newline at end of file
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java Fri Jun 22 08:33:37 2012
@@ -20,6 +20,7 @@ package org.apache.maven.scm.provider.ba
*/
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -28,8 +29,10 @@ import org.apache.maven.scm.ScmBranch;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.Command;
import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.changelog.ChangeLogSet;
import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -45,15 +48,49 @@ public class BazaarChangeLogCommand
extends AbstractChangeLogCommand
implements Command
{
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected ChangeLogScmResult executeChangeLogCommand( ChangeLogScmRequest request )
+ throws ScmException
+ {
+ final ScmVersion startVersion = request.getStartRevision();
+ final ScmVersion endVersion = request.getEndRevision();
+ final ScmFileSet fileSet = request.getScmFileSet();
+ final String datePattern = request.getDatePattern();
+ if ( startVersion != null || endVersion != null ) {
+ final ScmProviderRepository scmProviderRepository = request.getScmRepository().getProviderRepository();
+ return executeChangeLogCommand( scmProviderRepository, fileSet, startVersion, endVersion, datePattern );
+ }
+ return executeChangeLogCommand( fileSet, request.getStartDate(), request.getEndDate(),
+ datePattern, request.getLimit() );
+ }
+
/** {@inheritDoc} */
protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet,
Date startDate, Date endDate, ScmBranch branch,
String datePattern )
throws ScmException
{
- String[] cmd = new String[]{BazaarConstants.LOG_CMD, BazaarConstants.VERBOSE_OPTION};
+ return executeChangeLogCommand( fileSet, startDate, endDate, datePattern, null );
+ }
+
+ private ChangeLogScmResult executeChangeLogCommand( ScmFileSet fileSet,
+ Date startDate, Date endDate,
+ String datePattern, Integer limit )
+ throws ScmException
+ {
+ List<String> cmd = new ArrayList<String>();
+ cmd.addAll( Arrays.asList( BazaarConstants.LOG_CMD, BazaarConstants.VERBOSE_OPTION ) );
+ if ( limit != null && limit > 0 ) {
+ cmd.add( BazaarConstants.LIMIT_OPTION );
+ cmd.add( Integer.toString( limit ) );
+ }
+
BazaarChangeLogConsumer consumer = new BazaarChangeLogConsumer( getLogger(), datePattern );
- ScmResult result = BazaarUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
+ ScmResult result = BazaarUtils.execute( consumer, getLogger(), fileSet.getBasedir(),
+ cmd.toArray( new String[cmd.size()] ) );
List<ChangeSet> logEntries = consumer.getModifications();
List<ChangeSet> inRangeAndValid = new ArrayList<ChangeSet>();
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java Fri Jun 22 08:33:37 2012
@@ -152,4 +152,9 @@ public final class HgCommandConstants
public static final String CLEAN_OPTION = "-c";
+ /**
+ * limit number of changes displayed
+ */
+ public static final String LIMIT_OPTION = "--limit";
+
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogCommand.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogCommand.java Fri Jun 22 08:33:37 2012
@@ -27,6 +27,7 @@ import org.apache.maven.scm.ScmResult;
import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.Command;
import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.changelog.ChangeLogSet;
import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -34,6 +35,8 @@ import org.apache.maven.scm.provider.hg.
import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -49,11 +52,37 @@ public class HgChangeLogCommand
/**
* {@inheritDoc}
*/
+ @Override
+ protected ChangeLogScmResult executeChangeLogCommand( ChangeLogScmRequest request )
+ throws ScmException
+ {
+ final ScmVersion startVersion = request.getStartRevision();
+ final ScmVersion endVersion = request.getEndRevision();
+ final ScmFileSet fileSet = request.getScmFileSet();
+ final String datePattern = request.getDatePattern();
+ if ( startVersion != null || endVersion != null ) {
+ final ScmProviderRepository scmProviderRepository = request.getScmRepository().getProviderRepository();
+ return executeChangeLogCommand( scmProviderRepository, fileSet, startVersion, endVersion, datePattern );
+ }
+ return executeChangeLogCommand( fileSet, request.getStartDate(), request.getEndDate(),
+ datePattern, request.getLimit() );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository scmProviderRepository,
ScmFileSet fileSet, Date startDate, Date endDate,
ScmBranch branch, String datePattern )
throws ScmException
{
+ return executeChangeLogCommand( fileSet, startDate, endDate, datePattern, null );
+ }
+
+ private ChangeLogScmResult executeChangeLogCommand( ScmFileSet fileSet, Date startDate, Date endDate,
+ String datePattern, Integer limit )
+ throws ScmException
+ {
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
StringBuilder dateInterval = new StringBuilder();
// TRICK: Mercurial 1.9.3 don't accept 1970-01-01
@@ -62,10 +91,17 @@ public class HgChangeLogCommand
dateInterval.append( " to " );
dateInterval.append( dateFormat.format( endDate == null ? new Date() : endDate ) ); // Upto now
- String[] cmd = new String[]{ HgCommandConstants.LOG_CMD, HgCommandConstants.VERBOSE_OPTION,
- HgCommandConstants.NO_MERGES_OPTION, HgCommandConstants.DATE_OPTION, dateInterval.toString() };
+ List<String> cmd = new ArrayList<String>();
+ cmd.addAll( Arrays.asList( HgCommandConstants.LOG_CMD, HgCommandConstants.VERBOSE_OPTION,
+ HgCommandConstants.NO_MERGES_OPTION, HgCommandConstants.DATE_OPTION, dateInterval.toString() ));
+
+ if ( limit != null && limit > 0 ) {
+ cmd.add( HgCommandConstants.LIMIT_OPTION );
+ cmd.add( Integer.toString( limit ) );
+ }
+
HgChangeLogConsumer consumer = new HgChangeLogConsumer( getLogger(), datePattern );
- ScmResult result = HgUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
+ ScmResult result = HgUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd.toArray( new String[ cmd.size() ] ) );
List<ChangeSet> logEntries = consumer.getModifications();
ChangeLogSet changeLogSet = new ChangeLogSet( logEntries, startDate, endDate );
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommand.java Fri Jun 22 08:33:37 2012
@@ -92,6 +92,7 @@ public class PerforceEditCommand
public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
ScmFileSet files )
+ throws ScmException
{
Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
@@ -100,17 +101,17 @@ public class PerforceEditCommand
try
{
String candir = workingDirectory.getCanonicalPath();
- List<File> fs = files.getFileList();
- for ( int i = 0; i < fs.size(); i++ )
+
+ for ( File f : files.getFileList() )
{
File file = null;
- if ( fs.get( i ).isAbsolute() )
+ if ( f.isAbsolute() )
{
- file = new File( fs.get( i ).getPath() );
+ file = new File( f.getPath() );
}
else
{
- file = new File( workingDirectory, fs.get( i ).getPath() );
+ file = new File( workingDirectory, f.getPath() );
}
// I want to use relative paths to add files to make testing
// simpler.
@@ -127,7 +128,7 @@ public class PerforceEditCommand
}
catch ( IOException e )
{
- e.printStackTrace();
+ throw new ScmException( e.getMessage(), e );
}
return command;
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommandTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommandTest.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/edit/PerforceEditCommandTest.java Fri Jun 22 08:33:37 2012
@@ -19,19 +19,19 @@ package org.apache.maven.scm.provider.pe
* under the License.
*/
-import java.io.File;
-import java.util.Arrays;
-
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmTestCase;
import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
import org.apache.maven.scm.repository.ScmRepository;
import org.codehaus.plexus.util.cli.Commandline;
+import java.io.File;
+import java.util.Arrays;
+
/**
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
- * @version $Id$
+ * @version $Id$
*/
public class PerforceEditCommandTest
extends ScmTestCase
@@ -42,49 +42,49 @@ public class PerforceEditCommandTest
throws Exception
{
File workingDir = new File( "." );
- ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
- new File[]{ new File( "foo.xml" ), new File( "bar.xml" ) } ) );
- String commandLineString = cmdPrefix + workingDir.getAbsolutePath() + " edit";
- for(File file : files.getFileList()) {
- commandLineString += " " + file.getPath();
- }
- testCommandLine( "scm:perforce://depot/projects/pathname",
- commandLineString, workingDir, files );
+ ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
+ new File[]{ new File( "foo.xml" ), new File( "bar.xml" ) } ) );
+ String commandLineString = cmdPrefix + workingDir.getAbsolutePath() + " edit";
+ for ( File file : files.getFileList() )
+ {
+ commandLineString += " " + file.getPath();
+ }
+ testCommandLine( "scm:perforce://depot/projects/pathname", commandLineString, workingDir, files );
}
public void testRelativeCommandLine()
throws Exception
{
File workingDir = new File( "baz/qux" );
- ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
- new File[]{ new File( "foo.xml" ), new File( "bar.xml" ) } ) );
- String commandLineString = cmdPrefix + workingDir.getAbsolutePath() + " edit";
- for(File file : files.getFileList()) {
- commandLineString += " " + file.getPath();
- }
- testCommandLine( "scm:perforce://depot/projects/pathname",
- commandLineString, workingDir, files );
+ ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
+ new File[]{ new File( "foo.xml" ), new File( "bar.xml" ) } ) );
+ String commandLineString = cmdPrefix + workingDir.getAbsolutePath() + " edit";
+ for ( File file : files.getFileList() )
+ {
+ commandLineString += " " + file.getPath();
+ }
+ testCommandLine( "scm:perforce://depot/projects/pathname", commandLineString, workingDir, files );
+ }
+
+ public void testAbsoluteCommandLine()
+ throws Exception
+ {
+ File workingDir = new File( "." ).getAbsoluteFile();
+ ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
+ new File[]{ new File( "foo.xml" ), new File( "bar.xml" ) } ) );
+ String commandLineString = cmdPrefix + workingDir.getAbsolutePath() + " edit";
+ for ( File file : files.getFileList() )
+ {
+ commandLineString += " " + file.getPath();
+ }
+ testCommandLine( "scm:perforce://depot/projects/pathname", commandLineString, workingDir, files );
}
- public void testAbsoluteCommandLine()
- throws Exception
- {
- File workingDir = new File( "." ).getAbsoluteFile();
- ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
- new File[]{ new File( "foo.xml" ).getAbsoluteFile(), new File( "bar.xml" ).getAbsoluteFile() } ) );
- String commandLineString = cmdPrefix + workingDir.getAbsolutePath() + " edit";
- for(File file : files.getFileList()) {
- commandLineString += " " + file.getPath();
- }
- testCommandLine( "scm:perforce://depot/projects/pathname",
- commandLineString, workingDir, files );
- }
-
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
- private void testCommandLine( String scmUrl, String commandLine, File workingDir, ScmFileSet files )
+ private void testCommandLine( String scmUrl, String commandLine, File workingDir, ScmFileSet files )
throws Exception
{
ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
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/changelog/GitChangeLogCommand.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/changelog/GitChangeLogCommand.java?rev=1352801&r1=1352800&r2=1352801&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/changelog/GitChangeLogCommand.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/changelog/GitChangeLogCommand.java Fri Jun 22 08:33:37 2012
@@ -24,6 +24,7 @@ import org.apache.maven.scm.ScmException
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.changelog.ChangeLogSet;
import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -74,8 +75,30 @@ public class GitChangeLogCommand
ScmVersion endVersion )
throws ScmException
{
+ return executeChangeLogCommand( repo, fileSet, startDate, endDate, branch, datePattern, startVersion, endVersion, null );
+ }
+
+ @Override
+ protected ChangeLogScmResult executeChangeLogCommand( ChangeLogScmRequest request )
+ throws ScmException
+ {
+ final ScmVersion startVersion = request.getStartRevision();
+ final ScmVersion endVersion = request.getEndRevision();
+ final ScmFileSet fileSet = request.getScmFileSet();
+ final String datePattern = request.getDatePattern();
+ return executeChangeLogCommand( request.getScmRepository().getProviderRepository(), fileSet,
+ request.getStartDate(), request.getEndDate(), request.getScmBranch(), datePattern, startVersion,
+ endVersion, request.getLimit() );
+ }
+
+ protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet,
+ Date startDate, Date endDate, ScmBranch branch,
+ String datePattern, ScmVersion startVersion,
+ ScmVersion endVersion, Integer limit )
+ throws ScmException
+ {
Commandline cl = createCommandLine( (GitScmProviderRepository) repo, fileSet.getBasedir(), branch, startDate,
- endDate, startVersion, endVersion );
+ endDate, startVersion, endVersion, limit );
GitChangeLogConsumer consumer = new GitChangeLogConsumer( getLogger(), datePattern );
@@ -108,6 +131,13 @@ public class GitChangeLogCommand
ScmBranch branch, Date startDate, Date endDate,
ScmVersion startVersion, ScmVersion endVersion )
{
+ return createCommandLine( repository, workingDirectory, branch, startDate, endDate, startVersion, endVersion, null );
+ }
+
+ static Commandline createCommandLine( GitScmProviderRepository repository, File workingDirectory,
+ ScmBranch branch, Date startDate, Date endDate,
+ ScmVersion startVersion, ScmVersion endVersion, Integer limit )
+ {
SimpleDateFormat dateFormat = new SimpleDateFormat( DATE_FORMAT );
dateFormat.setTimeZone( TimeZone.getTimeZone( "GMT" ) );
@@ -150,6 +180,11 @@ public class GitChangeLogCommand
}
+ if (limit != null && limit > 0)
+ {
+ cl.createArg().setValue( "--max-count=" + limit );
+ }
+
if ( branch != null && branch.getName() != null && branch.getName().length() > 0 )
{
cl.createArg().setValue( branch.getName() );
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/changelog/GitChangeLogCommandTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/changelog/GitChangeLogCommandTest.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/changelog/GitChangeLogCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/changelog/GitChangeLogCommandTest.java Fri Jun 22 08:33:37 2012
@@ -51,8 +51,16 @@ public class GitChangeLogCommandTest
public void testCommandLineNoDates()
throws Exception
{
- testCommandLine( "scm:git:http://foo.com/git", null, (Date) null, (Date) null,
- "git whatchanged --date=iso"
+ testCommandLine( "scm:git:http://foo.com/git", null, (Date) null, (Date) null, 40,
+ "git whatchanged --date=iso --max-count=40"
+ + " -- " + workingDirectory );
+ }
+
+ public void testCommandLineNoDatesLimitedCount()
+ throws Exception
+ {
+ testCommandLine( "scm:git:http://foo.com/git", null, (Date) null, (Date) null,
+ "git whatchanged --date=iso"
+ " -- " + workingDirectory );
}
@@ -158,12 +166,18 @@ public class GitChangeLogCommandTest
private void testCommandLine( String scmUrl, ScmBranch branch, Date startDate, Date endDate, String commandLine )
throws Exception
{
+ testCommandLine( scmUrl, branch, startDate, endDate, null, commandLine );
+ }
+
+ private void testCommandLine( String scmUrl, ScmBranch branch, Date startDate, Date endDate, Integer limit, String commandLine )
+ throws Exception
+ {
ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
GitScmProviderRepository gitRepository = (GitScmProviderRepository) repository.getProviderRepository();
Commandline cl = GitChangeLogCommand.createCommandLine( gitRepository, workingDirectory, branch, startDate,
- endDate, null, null );
+ endDate, null, null, limit );
assertCommandLine( commandLine, workingDirectory, cl );
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java Fri Jun 22 08:33:37 2012
@@ -25,6 +25,7 @@ import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmTag;
import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.changelog.ChangeLogSet;
import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -54,31 +55,46 @@ public class SvnChangeLogCommand
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss Z";
/** {@inheritDoc} */
+ @Deprecated
protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet,
ScmVersion startVersion, ScmVersion endVersion,
String datePattern )
throws ScmException
{
- return executeChangeLogCommand( repo, fileSet, null, null, null, datePattern, startVersion, endVersion );
+ return executeChangeLogCommand( repo, fileSet, null, null, null, datePattern, startVersion, endVersion, null );
}
/** {@inheritDoc} */
+ @Deprecated
protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet,
Date startDate, Date endDate, ScmBranch branch,
String datePattern )
throws ScmException
{
- return executeChangeLogCommand( repo, fileSet, startDate, endDate, branch, datePattern, null, null );
+ return executeChangeLogCommand( repo, fileSet, startDate, endDate, branch, datePattern, null, null, null );
}
- protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet,
+ @Override
+ protected ChangeLogScmResult executeChangeLogCommand( ChangeLogScmRequest request )
+ throws ScmException
+ {
+ final ScmVersion startVersion = request.getStartRevision();
+ final ScmVersion endVersion = request.getEndRevision();
+ final ScmFileSet fileSet = request.getScmFileSet();
+ final String datePattern = request.getDatePattern();
+ return executeChangeLogCommand( request.getScmRepository().getProviderRepository(), fileSet,
+ request.getStartDate(), request.getEndDate(), request.getScmBranch(), datePattern, startVersion,
+ endVersion, request.getLimit() );
+ }
+
+ private ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet,
Date startDate, Date endDate, ScmBranch branch,
String datePattern, ScmVersion startVersion,
- ScmVersion endVersion )
+ ScmVersion endVersion, Integer limit )
throws ScmException
{
Commandline cl = createCommandLine( (SvnScmProviderRepository) repo, fileSet.getBasedir(), branch, startDate,
- endDate, startVersion, endVersion );
+ endDate, startVersion, endVersion, limit );
SvnChangeLogConsumer consumer = new SvnChangeLogConsumer( getLogger(), datePattern );
@@ -120,6 +136,14 @@ public class SvnChangeLogCommand
ScmBranch branch, Date startDate, Date endDate,
ScmVersion startVersion, ScmVersion endVersion )
{
+ return createCommandLine(repository, workingDirectory, branch,
+ startDate, endDate, startVersion, endVersion, null);
+ }
+
+ public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory,
+ ScmBranch branch, Date startDate, Date endDate,
+ ScmVersion startVersion, ScmVersion endVersion, Integer limit )
+ {
SimpleDateFormat dateFormat = new SimpleDateFormat( DATE_FORMAT );
dateFormat.setTimeZone( TimeZone.getTimeZone( "GMT" ) );
@@ -132,6 +156,12 @@ public class SvnChangeLogCommand
// TODO: May want to add some kind of support for --stop-on-copy and --limit NUM
+ if (limit != null && limit > 0)
+ {
+ cl.createArg().setValue( "--limit" );
+ cl.createArg().setValue( Integer.toString( limit ) );
+ }
+
if ( startDate != null )
{
cl.createArg().setValue( "-r" );
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommandTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommandTest.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommandTest.java Fri Jun 22 08:33:37 2012
@@ -45,6 +45,13 @@ public class SvnChangeLogCommandTest
"svn --non-interactive log -v http://foo.com/svn/trunk" );
}
+ public void testCommandLineNoDatesLimitedCount()
+ throws Exception
+ {
+ testCommandLine( "scm:svn:http://foo.com/svn/trunk", null, null, null, 40,
+ "svn --non-interactive log -v --limit 40 http://foo.com/svn/trunk" );
+ }
+
public void testCommandLineWithDates()
throws Exception
{
@@ -155,6 +162,12 @@ public class SvnChangeLogCommandTest
private void testCommandLine( String scmUrl, ScmBranch branch, Date startDate, Date endDate, String commandLine )
throws Exception
{
+ testCommandLine( scmUrl, branch, startDate, endDate, null, commandLine);
+ }
+
+ private void testCommandLine( String scmUrl, ScmBranch branch, Date startDate, Date endDate, Integer limit, String commandLine )
+ throws Exception
+ {
File workingDirectory = getTestFile( "target/svn-update-command-test" );
ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
@@ -162,7 +175,7 @@ public class SvnChangeLogCommandTest
SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) repository.getProviderRepository();
Commandline cl = SvnChangeLogCommand.createCommandLine( svnRepository, workingDirectory, branch, startDate,
- endDate, null, null );
+ endDate, null, null, limit );
assertCommandLine( commandLine, workingDirectory, cl );
}
Modified: maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java (original)
+++ maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/manager/ScmManagerStub.java Fri Jun 22 08:33:37 2012
@@ -26,6 +26,7 @@ import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.add.AddScmResult;
import org.apache.maven.scm.command.blame.BlameScmResult;
import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
@@ -226,6 +227,14 @@ public class ScmManagerStub
}
/** {@inheritDoc} */
+ public ChangeLogScmResult changeLog( ChangeLogScmRequest request )
+ throws ScmException
+ {
+ final ScmRepository repository = request.getScmRepository();
+ return this.getProviderByRepository( repository ).changeLog( request );
+ }
+
+ /** {@inheritDoc} */
public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
ScmVersion endVersion )
throws ScmException
Modified: maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java?rev=1352801&r1=1352800&r2=1352801&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java (original)
+++ maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java Fri Jun 22 08:33:37 2012
@@ -30,6 +30,7 @@ import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.add.AddScmResult;
import org.apache.maven.scm.command.blame.BlameScmResult;
import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
@@ -480,6 +481,12 @@ public class ScmProviderStub
return getChangeLogScmResult();
}
+ public ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest )
+ throws ScmException
+ {
+ return getChangeLogScmResult();
+ }
+
/**
* {@inheritDoc}
*/