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 ev...@apache.org on 2006/02/01 21:53:30 UTC

svn commit: r374169 - in /maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm: CommandParameter.java command/changelog/AbstractChangeLogCommand.java provider/AbstractScmProvider.java provider/ScmProvider.java

Author: evenisse
Date: Wed Feb  1 12:53:24 2006
New Revision: 374169

URL: http://svn.apache.org/viewcvs?rev=374169&view=rev
Log:
Allow to run changelog between two tags

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/command/changelog/AbstractChangeLogCommand.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

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/CommandParameter.java?rev=374169&r1=374168&r2=374169&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 Wed Feb  1 12:53:24 2006
@@ -38,6 +38,10 @@
 
     public final static CommandParameter BRANCH = new CommandParameter( "branch" );
 
+    public final static CommandParameter START_TAG = new CommandParameter( "startTag" );
+
+    public final static CommandParameter END_TAG = new CommandParameter( "endTag" );
+
     public final static CommandParameter TAG = new CommandParameter( "tag" );
 
     public final static CommandParameter FILE = new CommandParameter( "file" );

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/AbstractChangeLogCommand.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/AbstractChangeLogCommand.java?rev=374169&r1=374168&r2=374169&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 Wed Feb  1 12:53:24 2006
@@ -23,6 +23,7 @@
 import org.apache.maven.scm.ScmResult;
 import org.apache.maven.scm.command.AbstractCommand;
 import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.codehaus.plexus.util.StringUtils;
 
 import java.util.Date;
 
@@ -38,6 +39,13 @@
                                                                    Date startDate, Date endDate, String branch )
         throws ScmException;
 
+    protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repository, ScmFileSet fileSet,
+                                                          String startTag, String endTag )
+        throws ScmException
+    {
+        throw new ScmException( "Unsupported method for this provider." );
+    }
+
     public ScmResult executeCommand( ScmProviderRepository repository, ScmFileSet fileSet,
                                      CommandParameters parameters )
         throws ScmException
@@ -50,23 +58,34 @@
 
         String branch = parameters.getString( CommandParameter.BRANCH, null );
 
-        if ( numDays != 0 && ( startDate != null || endDate != null ) )
-        {
-            throw new ScmException( "Start or end date cannot be set if num days is set." );
-        }
+        String startTag = parameters.getString( CommandParameter.START_TAG, null );
 
-        if ( endDate != null && startDate == null )
+        String endTag = parameters.getString( CommandParameter.END_TAG, null );
+
+        if ( !StringUtils.isEmpty( startTag ) )
         {
-            throw new ScmException( "The end date is set but the start date isn't." );
+            return executeChangeLogCommand( repository, fileSet, startTag, endTag );
         }
-
-        if ( numDays > 0 )
+        else
         {
-            startDate = new Date( System.currentTimeMillis() - (long) numDays * 24 * 60 * 60 * 1000 );
+            if ( numDays != 0 && ( startDate != null || endDate != null ) )
+            {
+                throw new ScmException( "Start or end date cannot be set if num days is set." );
+            }
+
+            if ( endDate != null && startDate == null )
+            {
+                throw new ScmException( "The end date is set but the start date isn't." );
+            }
+
+            if ( numDays > 0 )
+            {
+                startDate = new Date( System.currentTimeMillis() - (long) numDays * 24 * 60 * 60 * 1000 );
 
-            endDate = new Date( System.currentTimeMillis() + (long) 1 * 24 * 60 * 60 * 1000 );
-        }
+                endDate = new Date( System.currentTimeMillis() + (long) 1 * 24 * 60 * 60 * 1000 );
+            }
 
-        return executeChangeLogCommand( repository, fileSet, startDate, endDate, branch );
+            return executeChangeLogCommand( repository, fileSet, startDate, endDate, branch );
+        }
     }
 }

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java?rev=374169&r1=374168&r2=374169&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 Wed Feb  1 12:53:24 2006
@@ -131,6 +131,23 @@
         return changelog( repository, fileSet, parameters );
     }
 
+    /**
+     * @see org.apache.maven.scm.provider.ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, java.lang.String, java.lang.String)
+     */
+    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
+        throws ScmException
+    {
+        login( repository, fileSet );
+
+        CommandParameters parameters = new CommandParameters();
+
+        parameters.setString( CommandParameter.START_TAG, startTag );
+
+        parameters.setString( CommandParameter.END_TAG, endTag );
+
+        return changelog( repository, fileSet, parameters );
+    }
+
     protected ChangeLogScmResult changelog( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java?rev=374169&r1=374168&r2=374169&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 Wed Feb  1 12:53:24 2006
@@ -90,6 +90,21 @@
         throws ScmException;
 
     /**
+     * Returns the changes that have happend in the source control system between two tags.
+     * This can be adding, removing, updating, ... of files
+     *
+     * @param repository the source control system
+     * @param fileSet    the files to know the changes about. Implementations can also give the changes
+     *                   from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
+     * @param startTag   the start tag
+     * @param endTag     the end tag
+     * @return
+     * @throws ScmException
+     */
+    ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
+        throws ScmException;
+
+    /**
      * Save the changes you have done into the repository. This will create a new version of the file or
      * directory in the repository.
      *