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 tr...@apache.org on 2004/11/09 17:07:18 UTC

cvs commit: maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck checkout.dump update.dump

trygvis     2004/11/09 08:07:17

  Modified:    maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog
                        SvnChangeLogCommand.java SvnChangeLogConsumer.java
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout
                        SvnCheckOutCommand.java
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/update
                        SvnUpdateCommand.java
               maven-scm-providers/maven-scm-provider-svn/src/main/resources/META-INF/plexus
                        components.xml
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog
                        SvnChangeLogCommandTest.java
                        SvnChangeLogConsumerTest.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkout
                        SvnCheckOutCommandTest.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update
                        SvnUpdateCommandTest.java
  Added:       maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn
                        SvnScmProvider.java
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command
                        SvnCommand.java
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout
                        SvnCheckOutConsumer.java
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/update
                        SvnUpdateConsumer.java
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository
                        SvnScmProviderRepository.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn
                        SvnScmProviderTest.java SvnScmTestUtils.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkout
                        SvnCheckOutCommandTckTest.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update
                        SvnUpdateCommandTckTest.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository
                        SvnScmProviderRepositoryTest.java
               maven-scm-providers/maven-scm-provider-svn/src/test/resources
                        checkout.dump
               maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck
                        checkout.dump update.dump
  Removed:     maven-scm-providers/maven-scm-provider-svn LICENSE.txt
                        NOTICE.txt checkstyle-license.txt
                        project.properties
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn
                        SvnScm.java
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command
                        AbstractSvnCommand.java SvnCommandWrapper.java
               maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository
                        SvnRepository.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn
                        SvnScmTest.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command
                        AbstractSvnCommandTest.java
                        SvnCommandWrapperTest.java
                        TestAbstractSvnCommand.java
               maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository
                        SvnRepositoryTest.java
  Log:
  o Adapting the SVN provider to the new API.
  
  Revision  Changes    Path
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java
  
  Index: SvnScmProvider.java
  ===================================================================
  package org.apache.maven.scm.provider.svn;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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 java.util.Map;
  
  import org.apache.maven.scm.provider.AbstractScmProvider;
  import org.apache.maven.scm.provider.ScmProviderRepository;
  import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
  import org.apache.maven.scm.repository.ScmRepositoryException;
  
  /**
   * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
   * @version $Id: SvnScmProvider.java,v 1.1 2004/11/09 16:07:16 trygvis Exp $
   */
  public class SvnScmProvider
      extends AbstractScmProvider
  {
      /** @requirement org.apache.maven.scm.CvsCommand */
      private Map commands;
  
      // ----------------------------------------------------------------------
      // ScmProvider Implementation
      // ----------------------------------------------------------------------
  
      public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, String delimiter )
      	throws ScmRepositoryException
      {
          int at = scmSpecificUrl.indexOf("@");
  
          String url;
          String user = null;
          String password = null;
  
          try
          {
              if (at >= 1)
              {
                  user = scmSpecificUrl.substring( 0, at );
                  url = scmSpecificUrl.substring( at + 1);
              }
              else
              {
                  url = scmSpecificUrl;
              }
          }
          catch ( Exception e )
          {
              throw new ScmRepositoryException( e.getMessage() );
          }
  
          return new SvnScmProviderRepository( url, user, password );
      }
  
      // ----------------------------------------------------------------------
      // AbstractScmProvider Implementation
      // ----------------------------------------------------------------------
  
      protected Map getCommands()
      {
          return commands;
      }
  
      public String getScmType()
      {
          return "svn";
      }
  }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/SvnCommand.java
  
  Index: SvnCommand.java
  ===================================================================
  package org.apache.maven.scm.provider.svn.command;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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.command.Command;
  
  /**
   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
   * @version $Id: SvnCommand.java,v 1.1 2004/11/09 16:07:16 trygvis Exp $
   */
  public interface SvnCommand
      extends Command
  {
  }
  
  
  
  1.3       +51 -138   maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommand.java
  
  Index: SvnChangeLogCommand.java
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommand.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SvnChangeLogCommand.java	2 Nov 2004 22:24:36 -0000	1.2
  +++ SvnChangeLogCommand.java	9 Nov 2004 16:07:16 -0000	1.3
  @@ -16,190 +16,103 @@
    * limitations under the License.
    */
   
  +import java.io.File;
   import java.text.SimpleDateFormat;
   import java.util.Date;
   import java.util.TimeZone;
   
   import org.apache.maven.scm.ScmException;
  -import org.apache.maven.scm.command.changelog.ChangeLogCommand;
  -import org.apache.maven.scm.command.changelog.ChangeLogConsumer;
  -import org.apache.maven.scm.provider.svn.command.AbstractSvnCommand;
  -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
  +import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
  +import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
  +import org.apache.maven.scm.provider.ScmProviderRepository;
  +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
  +import org.apache.maven.scm.provider.svn.command.SvnCommand;
  +
   import org.codehaus.plexus.util.cli.Commandline;
  -import org.codehaus.plexus.util.cli.StreamConsumer;
   
   /**
    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
    * @version $Id$
    */
   public class SvnChangeLogCommand
  -    extends AbstractSvnCommand
  -    implements ChangeLogCommand
  +    extends AbstractChangeLogCommand
  +    implements SvnCommand
   {
  -    public SvnChangeLogCommand() throws ScmException
  -    {
  -        setConsumer(new SvnChangeLogConsumer());
  -    }
  -
  -    /** Date format expected by Subversion */
  -    static final SimpleDateFormat SVN_DATE_FORMAT_IN =
  -        new SimpleDateFormat("yyyy/MM/dd 'GMT'");
  -
  -    /** Set the time zone of the formatters to GMT. */
  -    static {
  -        SVN_DATE_FORMAT_IN.setTimeZone(TimeZone.getTimeZone("GMT"));
  -    }
  +    private final static String DATE_FORMAT = "yyyy/MM/dd 'GMT'";
   
  -    private ChangeLogConsumer consumer;
  -    private Date startDate;
  -    private Date endDate;
  -
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.changelog.ChangeLogCommand#setStartDate(java.util.Date)
  -     */
  -    public void setStartDate(Date startDate)
  +    protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, File workingDirectory, Date startDate, Date endDate, int numDays, String branch )
  +        throws ScmException
       {
  -        this.startDate = startDate;
  -    }
  +        Commandline cl = createCommandLine( (SvnScmProviderRepository) repo, workingDirectory, branch, startDate, endDate );
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.changelog.ChangeLogCommand#getStartDate()
  -     */
  -    public Date getStartDate()
  -    {
  -        return startDate;
  -    }
  +        SvnChangeLogConsumer consumer = new SvnChangeLogConsumer();
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.changelog.ChangeLogCommand#setEndDate(java.util.Date)
  -     */
  -    public void setEndDate(Date endDate)
  -    {
  -        this.endDate = endDate;
  -    }
  +        // TODO: implement
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.changelog.ChangeLogCommand#getEndDate()
  -     */
  -    public Date getEndDate()
  -    {
  -        return endDate;
  +        return new ChangeLogScmResult( consumer.getModifications() );
       }
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.changelog.ChangeLogCommand#setRange(int)
  -     */
  -    public void setRange(int numDays)
  -    {
  -        setStartDate(
  -            new Date(
  -                System.currentTimeMillis()
  -                    - (long)numDays * 24 * 60 * 60 * 1000));
  -        setEndDate(
  -            new Date(
  -                System.currentTimeMillis() + (long)1 * 24 * 60 * 60 * 1000));
  -    }
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.Command#getName()
  -     */
  -    public String getName()
  +    public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory, String branch, Date startDate, Date endDate )
       {
  -        return NAME;
  -    }
  +        SimpleDateFormat dateFormat = new SimpleDateFormat( DATE_FORMAT );
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.Command#getDisplayName()
  -     */
  -    public String getDisplayName()
  -    {
  -        return "Changelog";
  -    }
  +        dateFormat.setTimeZone( TimeZone.getTimeZone( "GMT" ) );
   
  -    public Commandline getCommandLine() throws ScmException
  -    {
  -        Commandline command = new Commandline();
  +        Commandline cl = new Commandline();
   
  -        command.setExecutable("svn");
  +        cl.setExecutable( "svn" );
   
  -        if (getWorkingDirectory() != null)
  -        {
  -            command.setWorkingDirectory(getWorkingDirectory());
  -        }
  +        cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
  +
  +        cl.createArgument().setValue( "log" );
   
  -        SvnRepository repo = (SvnRepository)getRepository();
  +        cl.createArgument().setValue( "--non-interactive" );
   
  -        command.createArgument().setValue("log");
  -        command.createArgument().setValue("--non-interactive");
  -        command.createArgument().setValue("-v");
  +        cl.createArgument().setValue( "-v" );
   
  -        if (startDate != null)
  +        if ( startDate != null )
           {
  -            command.createArgument().setValue("-r");
  -            if (endDate != null)
  +            cl.createArgument().setValue( "-r" );
  +
  +            if ( endDate != null )
               {
  -                command.createArgument().setValue(
  -                    "{"
  -                        + SVN_DATE_FORMAT_IN.format(getStartDate())
  -                        + "}"
  -                        + ":{"
  -                        + SVN_DATE_FORMAT_IN.format(getEndDate())
  -                        + "}");
  +                cl.createArgument().setValue( "{" + dateFormat.format( startDate ) + "}" + ":" +
  +                                              "{" + dateFormat.format( endDate ) + "}" );
               }
               else
               {
  -                command.createArgument().setValue(
  -                    "{"
  -                        + SVN_DATE_FORMAT_IN.format(getStartDate())
  -                        + "}"
  -                        + ":HEAD");
  +                cl.createArgument().setValue( "{" + dateFormat.format( startDate ) + "}:HEAD" );
               }
           }
           else
           {
  -            if (getTag() != null)
  +            if ( branch != null )
               {
  -                command.createArgument().setValue("-r");
  -                command.createArgument().setValue(getTag());
  +                cl.createArgument().setValue( "-r" );
  +                cl.createArgument().setValue( branch );
               }
           }
   
  -        if (repo.getUser() != null)
  -        {
  -            command.createArgument().setValue("--username");
  -            command.createArgument().setValue(repo.getUser());
  -        }
  -        if (repo.getPassword() != null)
  +        if ( repository.getUser() != null )
           {
  -            command.createArgument().setValue("--password");
  -            command.createArgument().setValue(repo.getPassword());
  -        }
  -
  -        command.createArgument().setValue(repo.getUrl());
  -
  -        return command;
  -    }
  +            cl.createArgument().setValue( "--username" );
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.Command#setConsumer(org.codehaus.plexus.util.cli.StreamConsumer)
  -     */
  -    public void setConsumer(StreamConsumer consumer) throws ScmException
  -    {
  -        if (consumer instanceof ChangeLogConsumer)
  -        {
  -            this.consumer = (ChangeLogConsumer)consumer;
  +            cl.createArgument().setValue( repository.getUser() );
           }
  -        else
  +
  +        if ( repository.getPassword() != null )
           {
  -            throw new ScmException("Unsupported consumer for this command");
  +            cl.createArgument().setValue( "--password" );
  +
  +            cl.createArgument().setValue( repository.getPassword() );
           }
  -    }
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.Command#getConsumer()
  -     */
  -    public StreamConsumer getConsumer()
  -    {
  -        return consumer;
  +        cl.createArgument().setValue( repository.getUrl() );
  +
  +        return cl;
       }
   }
  
  
  
  1.3       +31 -27    maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogConsumer.java
  
  Index: SvnChangeLogConsumer.java
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogConsumer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SvnChangeLogConsumer.java	2 Nov 2004 22:24:36 -0000	1.2
  +++ SvnChangeLogConsumer.java	9 Nov 2004 16:07:16 -0000	1.3
  @@ -19,26 +19,25 @@
   import java.text.ParseException;
   import java.text.SimpleDateFormat;
   import java.util.ArrayList;
  -import java.util.Collection;
   import java.util.Date;
  +import java.util.List;
   
  -import org.apache.maven.scm.ScmException;
  -import org.apache.maven.scm.command.changelog.ChangeLogConsumer;
   import org.apache.maven.scm.command.changelog.ChangeLogEntry;
   import org.apache.maven.scm.command.changelog.ChangeLogFile;
  -
   import org.apache.regexp.RE;
   import org.apache.regexp.RESyntaxException;
   
  +import org.codehaus.plexus.util.cli.StreamConsumer;
  +
   /**
    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
    * @version $Id$
    */
  -public class SvnChangeLogConsumer implements ChangeLogConsumer
  +public class SvnChangeLogConsumer
  +    implements StreamConsumer
   {
       /** Date formatter for svn timestamp (after a little massaging) */
  -    private static final SimpleDateFormat SVN_TIMESTAMP =
  -        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzzzzzzzz");
  +    private static final SimpleDateFormat SVN_TIMESTAMP = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzzzzzzzz");
   
       /** State machine constant: expecting header */
       private static final int GET_HEADER = 1;
  @@ -60,22 +59,22 @@
   
       /** The comment section ends with a dashed line */
       private static final String COMMENT_END_TOKEN =
  -        "------------------------------------"
  -            + "------------------------------------";
  +        "------------------------------------" +
  +        "------------------------------------";
   
       /** The pattern used to match svn header lines */
  -        private static final String pattern =
  -            "^rev (\\d+):\\s+" + // revision number
  +    private static final String pattern =
  +        "^rev (\\d+):\\s+" + // revision number
           "(\\w+)\\s+\\|\\s+" + // author username
           "(\\d+-\\d+-\\d+ " + // date 2002-08-24
           "\\d+:\\d+:\\d+) " + // time 16:01:00
  -    "([\\-+])(\\d\\d)(\\d\\d)"; // gmt offset -0400
  +        "([\\-+])(\\d\\d)(\\d\\d)"; // gmt offset -0400
   
       /** Current status of the parser */
       private int status = GET_HEADER;
   
       /** List of change log entries */
  -    private Collection entries = new ArrayList();
  +    private List entries = new ArrayList();
   
       /** The current log entry being processed by the parser */
       private ChangeLogEntry currentLogEntry;
  @@ -92,29 +91,27 @@
       /**
        * Default constructor.
        */
  -    public SvnChangeLogConsumer() throws ScmException
  +    public SvnChangeLogConsumer()
       {
           try
           {
               headerRegexp = new RE(pattern);
           }
  -        catch (RESyntaxException ignored)
  +        catch ( RESyntaxException ex )
           {
  -            throw new ScmException("Could not create regexp to parse svn log file");
  +            throw new RuntimeException( "INTERNAL ERROR: Could not create regexp to parse svn log file. This shouldn't happen. Something is probably wrong with the oro installation.", ex );
           }
       }
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.changelog.ChangeLogConsumer#getModifications()
  -     */
  -    public Collection getModifications()
  +    public List getModifications()
       {
           return entries;
       }
   
  -    /* (non-Javadoc)
  -     * @see org.codehaus.plexus.util.cli.StreamConsumer#consumeLine(java.lang.String)
  -     */
  +    // ----------------------------------------------------------------------
  +    // StreamConsumer Implementation
  +    // ----------------------------------------------------------------------
  +
       public void consumeLine(String line)
       {
           switch (status)
  @@ -133,6 +130,10 @@
           }
       }
   
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
  +
       /**
        * Process the current input line in the GET_HEADER state.  The
        * author, date, and the revision of the entry are gathered.  Note,
  @@ -149,10 +150,13 @@
               return;
           }
   
  -        currentRevision = headerRegexp.getParen(1);
  +        currentRevision = headerRegexp.getParen( 1 );
  +
           currentLogEntry = new ChangeLogEntry();
  -        currentLogEntry.setAuthor(headerRegexp.getParen(2));
  -        currentLogEntry.setDate(parseDate());
  +
  +        currentLogEntry.setAuthor( headerRegexp.getParen( 2 ) );
  +
  +        currentLogEntry.setDate( parseDate() );
   
           status = GET_FILE;
       }
  
  
  
  1.3       +77 -54    maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommand.java
  
  Index: SvnCheckOutCommand.java
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommand.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SvnCheckOutCommand.java	2 Nov 2004 22:24:36 -0000	1.2
  +++ SvnCheckOutCommand.java	9 Nov 2004 16:07:17 -0000	1.3
  @@ -16,10 +16,17 @@
    * limitations under the License.
    */
   
  +import java.io.File;
  +
   import org.apache.maven.scm.ScmException;
  -import org.apache.maven.scm.command.checkout.CheckOutCommand;
  -import org.apache.maven.scm.provider.svn.command.AbstractSvnCommand;
  -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
  +import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand;
  +import org.apache.maven.scm.command.checkout.CheckOutScmResult;
  +import org.apache.maven.scm.provider.ScmProviderRepository;
  +import org.apache.maven.scm.provider.svn.command.SvnCommand;
  +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
  +
  +import org.codehaus.plexus.util.cli.CommandLineException;
  +import org.codehaus.plexus.util.cli.CommandLineUtils;
   import org.codehaus.plexus.util.cli.Commandline;
   
   /**
  @@ -27,65 +34,81 @@
    * @version $Id$
    */
   public class SvnCheckOutCommand
  -    extends AbstractSvnCommand
  -    implements CheckOutCommand
  +    extends AbstractCheckOutCommand
  +    implements SvnCommand
   {
  -
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.AbstractCommand#getCommandLine()
  -     */
  -    public Commandline getCommandLine() throws ScmException
  +    protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repo, File workingDirectory, String tag, File[] files )
  +        throws ScmException
       {
  -		Commandline command = new Commandline();
  +        Commandline cl = createCommandLine( (SvnScmProviderRepository)repo, workingDirectory, tag );
   
  -		command.setExecutable("svn");
  +        SvnCheckOutConsumer consumer = new SvnCheckOutConsumer( getLogger(), workingDirectory );
   
  -		if (getWorkingDirectory() != null)
  -		{
  -			command.setWorkingDirectory(getWorkingDirectory());
  -		}
  -
  -		SvnRepository repo = (SvnRepository)getRepository();
  -
  -		command.createArgument().setValue("checkout");
  -		command.createArgument().setValue("--non-interactive");
  -		command.createArgument().setValue("-v");
  -
  -		if (getTag() != null)
  -		{
  -			command.createArgument().setValue("-r");
  -			command.createArgument().setValue(getTag());
  -		}
  -
  -		if (repo.getUser() != null)
  -		{
  -			command.createArgument().setValue("--username");
  -			command.createArgument().setValue(repo.getUser());
  -		}
  -		if (repo.getPassword() != null)
  -		{
  -			command.createArgument().setValue("--password");
  -			command.createArgument().setValue(repo.getPassword());
  -		}
  +        CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
   
  -		command.createArgument().setValue(repo.getUrl());
  +        int exitCode;
   
  -		return command;
  -    }
  +        getLogger().info( "Working directory: " + workingDirectory.getAbsolutePath() );
  +        getLogger().info( "Command line: " + cl );
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.Command#getName()
  -     */
  -    public String getName()
  -    {
  -        return NAME;
  +        try
  +        {
  +            exitCode = CommandLineUtils.executeCommandLine( cl, consumer, stderr );
  +        }
  +        catch( CommandLineException ex )
  +        {
  +            throw new ScmException( "Error while executing command.", ex );
  +        }
  +
  +        if ( exitCode != 0 )
  +        {
  +            return new CheckOutScmResult( "The cvs command failed.", stderr.getOutput(), false );
  +        }
  +
  +        return new CheckOutScmResult( consumer.getCheckedOutFiles() );
       }
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.Command#getDisplayName()
  -     */
  -    public String getDisplayName()
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
  +
  +    public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory, String tag )
       {
  -        return "Check out";
  +        Commandline cl = new Commandline();
  +
  +        cl.setExecutable( "svn" );
  +
  +        cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
  +
  +        cl.createArgument().setValue( "checkout" );
  +
  +        cl.createArgument().setValue( "--non-interactive" );
  +
  +//        cl.createArgument().setValue( "-q" );
  +
  +        if ( tag != null)
  +        {
  +            cl.createArgument().setValue( "-r" );
  +
  +            cl.createArgument().setValue( tag );
  +        }
  +
  +        if ( repository.getUser() != null )
  +        {
  +            cl.createArgument().setValue( "--username" );
  +
  +            cl.createArgument().setValue( repository.getUser() );
  +        }
  +
  +        if ( repository.getPassword() != null )
  +        {
  +            cl.createArgument().setValue( "--password" );
  +
  +            cl.createArgument().setValue( repository.getPassword() );
  +        }
  +
  +        cl.createArgument().setValue( repository.getUrl() );
  +
  +        return cl;
       }
   }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutConsumer.java
  
  Index: SvnCheckOutConsumer.java
  ===================================================================
  package org.apache.maven.scm.provider.svn.command.checkout;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed 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 java.util.ArrayList;
  import java.util.List;
  import java.io.File;
  
  import org.apache.maven.scm.ScmFile;
  import org.apache.maven.scm.ScmFileStatus;
  
  import org.codehaus.plexus.logging.Logger;
  import org.codehaus.plexus.util.cli.StreamConsumer;
  
  /**
   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
   * @version $Id: SvnCheckOutConsumer.java,v 1.1 2004/11/09 16:07:17 trygvis Exp $
   */
  public class SvnCheckOutConsumer
      implements StreamConsumer
  {
      private final static String CHECKED_OUT_REVISION_TOKEN = "Checked out revision";
  
      private Logger logger;
  
      private File workingDirectory;
  
      private List checkedOutFiles = new ArrayList();
  
      private int revision;
  
      public SvnCheckOutConsumer( Logger logger, File workingDirectory )
      {
          this.logger = logger;
  
          this.workingDirectory = workingDirectory;
      }
  
      // ----------------------------------------------------------------------
      // StreamConsumer Implementation
      // ----------------------------------------------------------------------
  
      public void consumeLine( String line )
      {
          if ( line.length() <= 3 )
          {
              logger.warn( "Unexpected input, the line must be at least three characters long. Line: '" + line + "'." );
  
              return;
          }
  
          String statusString = line.substring( 0, 1 );
  
          String file = line.substring( 3 );
  
          ScmFileStatus status;
  
          if ( line.startsWith( CHECKED_OUT_REVISION_TOKEN ) )
          {
              String revisionString = line.substring( CHECKED_OUT_REVISION_TOKEN.length() + 1, line.length() - 1 );
  
              try
              {
                  revision = Integer.parseInt( revisionString );
              }
              catch( NumberFormatException ex )
              {
                  // ignored
              }
  
              return;
          }
          else if ( statusString.equals( "A" ) )
          {
              status = ScmFileStatus.ADDED;
          }
          else if ( statusString.equals( "U" ) )
          {
              status = ScmFileStatus.UPDATED;
          }
          else
          {
              logger.info( "Unknown file status: '" + statusString + "'." );
  
              return;
          }
  
          // If the file isn't a file; don't add it.
          if ( !new File( workingDirectory, file ).isFile() )
          {
              return;
          }
  
          checkedOutFiles.add( new ScmFile( file, status ) );
      }
  
      // ----------------------------------------------------------------------
      //
      // ----------------------------------------------------------------------
  
      public List getCheckedOutFiles()
      {
          return checkedOutFiles;
      }
  
      public int getRevision()
      {
          return revision;
      }
  }
  
  
  
  1.3       +73 -55    maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommand.java
  
  Index: SvnUpdateCommand.java
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommand.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SvnUpdateCommand.java	2 Nov 2004 22:24:36 -0000	1.2
  +++ SvnUpdateCommand.java	9 Nov 2004 16:07:17 -0000	1.3
  @@ -16,10 +16,17 @@
    * limitations under the License.
    */
   
  +import java.io.File;
  +
   import org.apache.maven.scm.ScmException;
  -import org.apache.maven.scm.command.update.UpdateCommand;
  -import org.apache.maven.scm.provider.svn.command.AbstractSvnCommand;
  -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
  +import org.apache.maven.scm.command.update.AbstractUpdateCommand;
  +import org.apache.maven.scm.command.update.UpdateScmResult;
  +import org.apache.maven.scm.provider.ScmProviderRepository;
  +import org.apache.maven.scm.provider.svn.command.SvnCommand;
  +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
  +
  +import org.codehaus.plexus.util.cli.CommandLineException;
  +import org.codehaus.plexus.util.cli.CommandLineUtils;
   import org.codehaus.plexus.util.cli.Commandline;
   
   /**
  @@ -27,66 +34,77 @@
    * @version $Id$
    */
   public class SvnUpdateCommand
  -    extends AbstractSvnCommand
  -    implements UpdateCommand
  +    extends AbstractUpdateCommand
  +    implements SvnCommand
   {
  -
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.AbstractCommand#getCommandLine()
  -     */
  -    public Commandline getCommandLine() throws ScmException
  +    protected UpdateScmResult executeUpdateCommand( ScmProviderRepository repo, File workingDirectory, String tag )
  +        throws ScmException
       {
  -		Commandline command = new Commandline();
  +        Commandline cl = createCommandLine( (SvnScmProviderRepository) repo, workingDirectory, tag );
   
  -		command.setExecutable("svn");
  +        SvnUpdateConsumer consumer = new SvnUpdateConsumer( getLogger(), workingDirectory );
   
  -		if (getWorkingDirectory() != null)
  -		{
  -			command.setWorkingDirectory(getWorkingDirectory());
  -		}
  -
  -		SvnRepository repo = (SvnRepository)getRepository();
  -
  -		command.createArgument().setValue("update");
  -		command.createArgument().setValue("--non-interactive");
  -		command.createArgument().setValue("-v");
  -
  -		if (getTag() != null)
  -		{
  -			command.createArgument().setValue("-r");
  -			command.createArgument().setValue(getTag());
  -		}
  -
  -		if (repo.getUser() != null)
  -		{
  -			command.createArgument().setValue("--username");
  -			command.createArgument().setValue(repo.getUser());
  -		}
  -		if (repo.getPassword() != null)
  -		{
  -			command.createArgument().setValue("--password");
  -			command.createArgument().setValue(repo.getPassword());
  -		}
  +        CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
   
  -		command.createArgument().setValue(repo.getUrl());
  +        getLogger().info( "Executing: " + cl );
  +        getLogger().info( "Working directory: " + cl.getWorkingDirectory().getAbsolutePath() );
   
  -		return command;
  -    }
  +        int exitCode;
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.Command#getName()
  -     */
  -    public String getName()
  -    {
  -        return NAME;
  +        try
  +        {
  +            exitCode = CommandLineUtils.executeCommandLine( cl, consumer, stderr );
  +        }
  +        catch ( CommandLineException ex )
  +        {
  +            throw new ScmException( "Error while executing command.", ex );
  +        }
  +
  +        if ( exitCode != 0 )
  +        {
  +            return new UpdateScmResult( "The cvs command failed.", stderr.getOutput(), false );
  +        }
  +
  +        return new UpdateScmResult( consumer.getUpdatedFiles() );
       }
   
  -    /* (non-Javadoc)
  -     * @see org.apache.maven.scm.command.Command#getDisplayName()
  -     */
  -    public String getDisplayName()
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
  +
  +    public static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory, String tag )
       {
  -        return "Update";
  -    }
  +        Commandline cl = new Commandline();
  +
  +        cl.setExecutable( "svn" );
   
  +        cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
  +
  +        cl.createArgument().setValue( "update" );
  +
  +        cl.createArgument().setValue( "--non-interactive" );
  +
  +        if ( tag != null )
  +        {
  +            cl.createArgument().setValue( "-r" );
  +
  +            cl.createArgument().setValue( tag );
  +        }
  +
  +        if ( repository.getUser() != null )
  +        {
  +            cl.createArgument().setValue( "--username" );
  +
  +            cl.createArgument().setValue( repository.getUser() );
  +        }
  +
  +        if ( repository.getPassword() != null )
  +        {
  +            cl.createArgument().setValue( "--password" );
  +
  +            cl.createArgument().setValue( repository.getPassword() );
  +        }
  +
  +        return cl;
  +    }
   }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateConsumer.java
  
  Index: SvnUpdateConsumer.java
  ===================================================================
  package org.apache.maven.scm.provider.svn.command.update;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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 java.util.List;
  import java.util.ArrayList;
  import java.io.File;
  
  import org.apache.maven.scm.ScmFileStatus;
  import org.apache.maven.scm.ScmFile;
  
  import org.codehaus.plexus.logging.Logger;
  import org.codehaus.plexus.util.cli.StreamConsumer;
  
  /**
   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
   * @version $Id: SvnUpdateConsumer.java,v 1.1 2004/11/09 16:07:17 trygvis Exp $
   */
  public class SvnUpdateConsumer
      implements StreamConsumer
  {
      private final static String UPDATED_TO_REVISION_TOKEN = "Updated to revision";
  
      private Logger logger;
  
      private File workingDirectory;
  
      private List updatedFiles = new ArrayList();
  
      private int revision;
  
      // ----------------------------------------------------------------------
      //
      // ----------------------------------------------------------------------
  
      public SvnUpdateConsumer( Logger logger, File workingDirectory )
      {
          this.logger = logger;
  
          this.workingDirectory = workingDirectory;
      }
  
      // ----------------------------------------------------------------------
      // StreamConsumer Implementation
      // ----------------------------------------------------------------------
  
      public void consumeLine( String line )
      {
          if ( line.length() <= 3 )
          {
              logger.warn( "Unexpected input, the line must be at least three characters long. Line: '" + line + "'." );
  
              return;
          }
  
          String statusString = line.substring( 0, 1 );
  
          String file = line.substring( 3 );
  
          ScmFileStatus status;
  
          if ( line.startsWith( UPDATED_TO_REVISION_TOKEN ) )
          {
              String revisionString = line.substring( UPDATED_TO_REVISION_TOKEN.length() + 1, line.length() - 1 );
  
              try
              {
                  revision = Integer.parseInt( revisionString );
              }
              catch( NumberFormatException ex )
              {
                  // ignored
              }
  
              return;
          }
          else if ( statusString.equals( "A" ) )
          {
              status = ScmFileStatus.ADDED;
          }
          else if ( statusString.equals( "U" ) )
          {
              status = ScmFileStatus.UPDATED;
          }
          else if ( statusString.equals( "D" ) )
          {
              status = ScmFileStatus.DELETED;
          }
          else
          {
              logger.info( "Unknown file status: '" + statusString + "'." );
  
              return;
          }
  
          // If the file isn't a file; don't add it.
          if ( !new File( workingDirectory, file ).isFile() )
          {
              return;
          }
  
          updatedFiles.add( new ScmFile( file, status ) );
      }
  
      public List getUpdatedFiles()
      {
          return updatedFiles;
      }
  
      public int getRevision()
      {
          return revision;
      }
  }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
  
  Index: SvnScmProviderRepository.java
  ===================================================================
  package org.apache.maven.scm.provider.svn.repository;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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.provider.ScmProviderRepository;
  
  /**
   * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
   * @version $Id: SvnScmProviderRepository.java,v 1.1 2004/11/09 16:07:17 trygvis Exp $
   */
  public class SvnScmProviderRepository
      extends ScmProviderRepository
  {
      /** */
      private String url;
  
      /** */
      private String user;
  
      /** */
      private String password;
  
      public SvnScmProviderRepository( String url, String user, String password )
      {
          this.url = url;
  
          this.user = user;
  
          this.password = password;
      }
  
      public String getUrl()
      {
          return url;
      }
  
      public String getPassword()
      {
          return password;
      }
  
      public String getUser()
      {
          return user;
      }
  }
  
  
  
  1.2       +22 -2     maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/resources/META-INF/plexus/components.xml
  
  Index: components.xml
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/resources/META-INF/plexus/components.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- components.xml	20 Oct 2004 18:03:43 -0000	1.1
  +++ components.xml	9 Nov 2004 16:07:17 -0000	1.2
  @@ -1,9 +1,29 @@
   <component-set>
     <components>
  +
       <component>
  -      <role>org.apache.maven.scm.Scm</role>
  +      <role>org.apache.maven.scm.provider.ScmProvider</role>
         <role-hint>svn</role-hint>
  -      <implementation>org.apache.maven.scm.provider.svn.SvnScm</implementation>
  +      <implementation>org.apache.maven.scm.provider.svn.SvnScmProvider</implementation>
  +      <requirements>
  +        <requirement>
  +          <role>org.apache.maven.scm.provider.svn.command.SvnCommand</role>
  +          <field-name>commands</field-name>
  +        </requirement>
  +      </requirements>
       </component>
  +
  +    <component>
  +      <role>org.apache.maven.scm.provider.svn.command.SvnCommand</role>
  +      <role-hint>check-out</role-hint>
  +      <implementation>org.apache.maven.scm.provider.svn.command.checkout.SvnCheckOutCommand</implementation>
  +    </component>
  +
  +    <component>
  +      <role>org.apache.maven.scm.provider.svn.command.SvnCommand</role>
  +      <role-hint>update</role-hint>
  +      <implementation>org.apache.maven.scm.provider.svn.command.update.SvnUpdateCommand</implementation>
  +    </component>
  +
     </components>
   </component-set>
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/SvnScmProviderTest.java
  
  Index: SvnScmProviderTest.java
  ===================================================================
  package org.apache.maven.scm.provider.svn;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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.ScmTestCase;
  
  /**
   * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
   * @version $Id: SvnScmProviderTest.java,v 1.1 2004/11/09 16:07:17 trygvis Exp $
   */
  public class SvnScmProviderTest
      extends ScmTestCase
  {
      public void testFoo()
      {
      }
  }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/SvnScmTestUtils.java
  
  Index: SvnScmTestUtils.java
  ===================================================================
  package org.apache.maven.scm.provider.svn;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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 java.io.File;
  import java.io.FileInputStream;
  
  import org.apache.maven.scm.ScmTestCase;
  
  import org.codehaus.plexus.util.FileUtils;
  import org.codehaus.plexus.util.cli.CommandLineUtils;
  import org.codehaus.plexus.util.cli.Commandline;
  import junit.framework.Assert;
  
  /**
   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
   * @version $Id: SvnScmTestUtils.java,v 1.1 2004/11/09 16:07:17 trygvis Exp $
   */
  public abstract class SvnScmTestUtils
  {
      public static void initializeRepository( File repositoryRoot, File dump )
          throws Exception
      {
          if ( repositoryRoot.exists() )
          {
              FileUtils.deleteDirectory( repositoryRoot );
          }
  
          Assert.assertTrue( "Could not make repository root directory: " + repositoryRoot.getAbsolutePath(), repositoryRoot.mkdirs() );
  
          ScmTestCase.execute( repositoryRoot.getParentFile(), "svnadmin", "create " + repositoryRoot.getName() );
  
          loadSvnDump( repositoryRoot, dump );
      }
  
      private static void loadSvnDump( File repositoryRoot, File dump )
          throws Exception
      {
          Assert.assertTrue( "The dump file doesn't exist: " + dump.getAbsolutePath(), dump.exists() );
  
          Commandline cl = new Commandline();
  
          cl.setExecutable( "svnadmin" );
  
          cl.setWorkingDirectory( repositoryRoot.getParentFile().getAbsolutePath() );
  
          cl.createArgument().setValue( "load" );
  
          cl.createArgument().setValue( repositoryRoot.getAbsolutePath() );
  
          CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer();
  
          CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
  
          int exitValue = CommandLineUtils.executeCommandLine( cl, new FileInputStream( dump ), stdout, stderr );
  
          if ( exitValue != 0 )
          {
              System.err.println( "-----------------------------------------" );
              System.err.println( "Command line: " + cl );
              System.err.println( "Working directory: " + cl.getWorkingDirectory() );
              System.err.println( "-----------------------------------------" );
              System.err.println( "Standard output: " );
              System.err.println( "-----------------------------------------" );
              System.err.println( stdout.getOutput() );
              System.err.println( "-----------------------------------------" );
  
              System.err.println( "Standard error: " );
              System.err.println( "-----------------------------------------" );
              System.err.println( stderr.getOutput() );
              System.err.println( "-----------------------------------------" );
          }
  
          if ( exitValue != 0 )
          {
              Assert.fail( "Exit value wasn't 0, was:" + exitValue );
          }
      }
  }
  
  
  
  1.3       +29 -159   maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommandTest.java
  
  Index: SvnChangeLogCommandTest.java
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommandTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SvnChangeLogCommandTest.java	2 Nov 2004 22:24:37 -0000	1.2
  +++ SvnChangeLogCommandTest.java	9 Nov 2004 16:07:17 -0000	1.3
  @@ -16,185 +16,55 @@
    * limitations under the License.
    */
   
  +import java.io.File;
   import java.util.Calendar;
   import java.util.Date;
   
  -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
  -import org.codehaus.plexus.util.cli.Commandline;
  +import org.apache.maven.scm.ScmTestCase;
  +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
  +import org.apache.maven.scm.repository.ScmRepository;
   
  -import junit.framework.TestCase;
  +import org.codehaus.plexus.util.cli.Commandline;
   
   /**
    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
    * @version $Id$
    */
  -public class SvnChangeLogCommandTest extends TestCase
  +public class SvnChangeLogCommandTest
  +    extends ScmTestCase
   {
  -    private SvnChangeLogCommand instance;
  -    private String baseDir;
  -
  -    /**
  -     * @param testName
  -     */
  -    public SvnChangeLogCommandTest(String testName)
  +    public void testCommandLine()
  +        throws Exception
       {
  -        super(testName);
  -    }
  +        Calendar cal = Calendar.getInstance();
   
  -    /* (non-Javadoc)
  -     * @see junit.framework.TestCase#setUp()
  -     */
  -    protected void setUp() throws Exception
  -    {
  -        baseDir = System.getProperty("basedir");
  -        assertNotNull("The system property basedir was not defined.", baseDir);
  -        instance = new SvnChangeLogCommand();
  -    }
  +        cal.set(2003, 8, 10);
   
  -    public void testGetCommandWithEndDate()
  -    {
  -        try
  -        {
  -            SvnRepository repo = new SvnRepository();
  -            repo.setDelimiter(":");
  -            repo.setConnection("http://foo.com/svn/trunk");
  -            instance.setRepository(repo);
  -            instance.setRange(30);
  -            Calendar cal = Calendar.getInstance();
  -            cal.set(2003, 8, 10);
  -            Date startDate = cal.getTime();
  -            instance.setStartDate(startDate);
  -            cal.set(2003, 9, 10);
  -            Date endDate = cal.getTime();
  -            instance.setEndDate(endDate);
  -            Commandline cl = instance.getCommandLine();
  -            System.out.println(cl.toString());
  -            assertEquals(
  -                "svn log --non-interactive -v -r \"{2003/09/10 GMT}:{2003/10/10 GMT}\" http://foo.com/svn/trunk",
  -                cl.toString());
  -        }
  -        catch (Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  -    }
  +        Date startDate = cal.getTime();
   
  -    public void testGetCommandWithoutEndDate()
  -    {
  -        try
  -        {
  -            SvnRepository repo = new SvnRepository();
  -            repo.setDelimiter(":");
  -            repo.setConnection("http://foo.com/svn/trunk");
  -            instance.setRepository(repo);
  -            Calendar cal = Calendar.getInstance();
  -            cal.set(2003, 8, 10);
  -            Date startDate = cal.getTime();
  -            instance.setStartDate(startDate);
  -            Commandline cl = instance.getCommandLine();
  -            System.out.println(cl.toString());
  -            assertEquals(
  -                "svn log --non-interactive -v -r \"{2003/09/10 GMT}:HEAD\" http://foo.com/svn/trunk",
  -                cl.toString());
  -        }
  -        catch (Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  -    }
  +        cal.set(2003, 9, 10);
   
  -    public void testGetCommandWithBranchOrTag()
  -    {
  -        try
  -        {
  -            SvnRepository repo = new SvnRepository();
  -            repo.setDelimiter(":");
  -            repo.setConnection("anonymous@http://foo.com/svn/trunk");
  -            repo.setPassword("passwd");
  -            instance.setRepository(repo);
  -            instance.setBranch("3");
  -            instance.setWorkingDirectory(baseDir);
  -            Commandline cl = instance.getCommandLine();
  -            System.out.println(cl.toString());
  -            assertEquals(
  -                "svn log --non-interactive -v -r 3 --username anonymous --password passwd http://foo.com/svn/trunk",
  -                cl.toString());
  -        }
  -        catch (Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  -    }
  +        Date endDate = cal.getTime();
   
  -    public void testGetCommandWithoutBranchOrTag()
  -    {
  -        try
  -        {
  -            SvnRepository repo = new SvnRepository();
  -            repo.setDelimiter(":");
  -            repo.setConnection("anonymous@http://foo.com/svn/trunk");
  -            repo.setPassword("passwd");
  -            instance.setRepository(repo);
  -            instance.setWorkingDirectory(baseDir);
  -            Commandline cl = instance.getCommandLine();
  -            System.out.println(cl.toString());
  -            assertEquals(
  -                "svn log --non-interactive -v --username anonymous --password passwd http://foo.com/svn/trunk",
  -                cl.toString());
  -        }
  -        catch (Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  +        testCommandLine( "scm:svn:http://foo.com/svn/trunk", null, startDate, endDate,
  +                         "svn log --non-interactive -v -r \"{2003/09/10 GMT}:{2003/10/10 GMT}\" http://foo.com/svn/trunk" );
       }
   
  -    public void testGetDisplayNameName()
  -    {
  -        try
  -        {
  -            assertEquals("Changelog", instance.getDisplayName());
  -        }
  -        catch(Exception e)
  -        {
  -            fail();
  -        }
  -    }
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
   
  -    public void testGetName()
  +    private void testCommandLine( String scmUrl, String tag, Date startDate, Date endDate, String commandLine )
  +        throws Exception
       {
  -        try
  -        {
  -            assertEquals("changelog", instance.getName());
  -        }
  -        catch(Exception e)
  -        {
  -            fail();
  -        }
  -    }
  +        File workingDirectory = getTestFile( "target/svn-update-command-test" );
   
  -    public void testConsumer()
  -    {
  -        try
  -        {
  -            SvnChangeLogConsumer cons = new SvnChangeLogConsumer();
  -            instance.setConsumer(cons);
  -            assertEquals(cons, instance.getConsumer());
  -        }
  -        catch(Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  -    }
  +        ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
   
  -    public void testWrongConsumer()
  -    {
  -        try
  -        {
  -            instance.setConsumer(null);
  -            fail();
  -        }
  -        catch(Exception e)
  -        {
  -        }
  +        SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) repository.getProviderRepository();
  +
  +        Commandline cl = SvnChangeLogCommand.createCommandLine( svnRepository, workingDirectory, tag, startDate, endDate );
  +
  +        assertEquals( commandLine, cl.toString() );
       }
   }
  
  
  
  1.3       +5 -92     maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogConsumerTest.java
  
  Index: SvnChangeLogConsumerTest.java
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogConsumerTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SvnChangeLogConsumerTest.java	2 Nov 2004 22:24:38 -0000	1.2
  +++ SvnChangeLogConsumerTest.java	9 Nov 2004 16:07:17 -0000	1.3
  @@ -16,103 +16,16 @@
    * limitations under the License.
    */
   
  -import java.io.BufferedReader;
  -import java.io.FileInputStream;
  -import java.io.InputStreamReader;
  -import java.text.SimpleDateFormat;
  -import java.util.ArrayList;
  -import java.util.Iterator;
  -import java.util.List;
  -import java.util.Locale;
  -
  -import org.apache.maven.scm.command.changelog.ChangeLogEntry;
  -
  -import junit.framework.TestCase;
  +import org.apache.maven.scm.ScmTestCase;
   
   /**
    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
    * @version $Id$
    */
  -public class SvnChangeLogConsumerTest extends TestCase
  +public class SvnChangeLogConsumerTest
  +    extends ScmTestCase
   {
  -	/** Date formatter */
  -	private static final SimpleDateFormat DATE =
  -		new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
  -
  -	/** the {@link SvnChangeLogConsumer} used for testing */
  -	private SvnChangeLogConsumer instance;
  -	/** file with test results to check against */
  -	private String testFile;
  -
  -    /**
  -     * @param testName
  -     */
  -    public SvnChangeLogConsumerTest(String testName)
  +    public void testFoo()
       {
  -        super(testName);
       }
  -
  -	/**
  -	 * Initialize per test data
  -	 * @throws Exception when there is an unexpected problem
  -	 */
  -	public void setUp() throws Exception
  -	{
  -		String baseDir = System.getProperty("basedir");
  -		assertNotNull("The system property basedir was not defined.", baseDir);
  -		testFile = baseDir + "/src/test/resources/svn/changelog/svnlog.txt";
  -		instance = new SvnChangeLogConsumer();
  -	}
  -
  -	/**
  -	 * Test of parse method
  -	 * @throws Exception when there is an unexpected problem
  -	 */
  -	public void testParse() throws Exception
  -	{
  -		FileInputStream fis = new FileInputStream(testFile);
  -		BufferedReader in = new BufferedReader(new InputStreamReader(fis));
  -		String s = in.readLine();
  -		while ( s != null )
  -		{
  -			instance.consumeLine( s );
  -			s = in.readLine();
  -		}
  -
  -		List entries = new ArrayList(instance.getModifications());
  -		assertEquals("Wrong number of entries returned", 12, entries.size());
  -		ChangeLogEntry entry = null;
  -		for (Iterator i = entries.iterator(); i.hasNext(); )
  -		{
  -			entry = (ChangeLogEntry) i.next();
  -			assertTrue("ChangeLogEntry erroneously picked up",
  -				entry.toString().indexOf("ChangeLogEntry.java") == -1);
  -		}
  -
  -		entry = (ChangeLogEntry) entries.get(0);
  -		assertEquals("Entry 0 was parsed incorrectly",
  -				"kaz\n" +
  -				DATE.parse("Mon Aug 26 14:33:26 EDT 2002") + "\n" +
  -				"[/poolserver/trunk/build.xml, 15, " +
  -				"/poolserver/trunk/project.properties, 15]\n" +
  -				"Minor formatting changes.\n\n",
  -				entry.toString());
  -
  -		entry = (ChangeLogEntry) entries.get(6);
  -		assertEquals("Entry 6 was parsed incorrectly",
  -				"kaz\n" +
  -				DATE.parse("Fri Aug 23 11:11:52 EDT 2002") + "\n" +
  -				"[/poolserver/trunk/build.xml, 9]\n" +
  -				"Testing script out again ...\n\n",
  -				entry.toString());
  -
  -		entry = (ChangeLogEntry) entries.get(8);
  -		assertEquals("Entry 8 was parsed incorrectly",
  -				"pete\n" +
  -				DATE.parse("Fri Aug 23 11:03:39 EDT 2002") + "\n" +
  -				"[/poolserver/trunk/build.xml, 7]\n" +
  -				"Reformatted the indentation (really just an excuse to test out\n" +
  -				"subversion).\n\n",
  -				entry.toString());
  -	}
   }
  
  
  
  1.3       +35 -79    maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommandTest.java
  
  Index: SvnCheckOutCommandTest.java
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommandTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SvnCheckOutCommandTest.java	2 Nov 2004 22:24:39 -0000	1.2
  +++ SvnCheckOutCommandTest.java	9 Nov 2004 16:07:17 -0000	1.3
  @@ -16,102 +16,58 @@
    * limitations under the License.
    */
   
  -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
  -import org.codehaus.plexus.util.cli.Commandline;
  +import java.io.File;
  +
  +import org.apache.maven.scm.ScmTestCase;
  +import org.apache.maven.scm.manager.ScmManager;
  +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
  +import org.apache.maven.scm.repository.ScmRepository;
   
  -import junit.framework.TestCase;
  +import org.codehaus.plexus.util.cli.Commandline;
   
   /**
    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
    * @version $Id$
    */
  -public class SvnCheckOutCommandTest extends TestCase
  +public class SvnCheckOutCommandTest
  +    extends ScmTestCase
   {
  -    private SvnCheckOutCommand instance;
  -    private String baseDir;
  -
  -    /**
  -      * @param testName
  -      */
  -    public SvnCheckOutCommandTest(String testName)
  +    public void testCommandLineWithoutTag()
  +        throws Exception
       {
  -        super(testName);
  +        testCommandLine( getScmManager(), "scm:svn:http://foo.com/svn/trunk", null,
  +                         "svn checkout --non-interactive http://foo.com/svn/trunk" );
       }
   
  -    /* (non-Javadoc)
  -     * @see junit.framework.TestCase#setUp()
  -     */
  -    protected void setUp() throws Exception
  +    public void testCommandLineWithEmptyTag()
  +        throws Exception
       {
  -        baseDir = System.getProperty("basedir");
  -        assertNotNull("The system property basedir was not defined.", baseDir);
  -        instance = new SvnCheckOutCommand();
  +        testCommandLine( getScmManager(), "scm:svn:http://foo.com/svn/trunk", "",
  +                         "svn checkout --non-interactive -r  http://foo.com/svn/trunk" );
       }
   
  -    public void testGetCommand()
  +    public void testCommandLineWithTag()
  +        throws Exception
       {
  -        try
  -        {
  -            SvnRepository repo = new SvnRepository();
  -            repo.setDelimiter(":");
  -            repo.setConnection("anonymous@http://foo.com/svn/trunk");
  -            repo.setPassword("passwd");
  -            instance.setRepository(repo);
  -            instance.setTag("10");
  -            Commandline cl = instance.getCommandLine();
  -            System.out.println(cl.toString());
  -            assertEquals(
  -                "svn checkout --non-interactive -v -r 10 --username anonymous --password passwd http://foo.com/svn/trunk",
  -                cl.toString());
  -        }
  -        catch (Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  +        testCommandLine( getScmManager(), "scm:svn:http://foo.com/svn/trunk", "10",
  +                         "svn checkout --non-interactive -r 10 http://foo.com/svn/trunk" );
       }
   
  -    public void testGetCommand2()
  -    {
  -        try
  -        {
  -            SvnRepository repo = new SvnRepository();
  -            repo.setDelimiter(":");
  -            repo.setConnection("http://foo.com/svn/trunk");
  -            instance.setRepository(repo);
  -            instance.setWorkingDirectory(baseDir);
  -            Commandline cl = instance.getCommandLine();
  -            System.out.println(cl.toString());
  -            assertEquals(
  -                "svn checkout --non-interactive -v http://foo.com/svn/trunk",
  -                cl.toString());
  -        }
  -        catch (Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  -    }
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
   
  -    public void testGetDisplayNameName()
  +    private static void testCommandLine( ScmManager scmManager, String scmUrl, String tag, String commandLine )
  +        throws Exception
       {
  -        try
  -        {
  -            assertEquals("Check out", instance.getDisplayName());
  -        }
  -        catch(Exception e)
  -        {
  -            fail();
  -        }
  -    }
  +        File workingDirectory = getTestFile( "target/svn-update-command-test" );
   
  -    public void testGetName()
  -    {
  -        try
  -        {
  -            assertEquals("checkout", instance.getName());
  -        }
  -        catch(Exception e)
  -        {
  -            fail();
  -        }
  +        ScmRepository repository = scmManager.makeScmRepository( scmUrl );
  +
  +        SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) repository.getProviderRepository();
  +
  +        Commandline cl = SvnCheckOutCommand.createCommandLine( svnRepository, workingDirectory, tag );
  +
  +        assertEquals( commandLine, cl.toString() );
       }
   }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommandTckTest.java
  
  Index: SvnCheckOutCommandTckTest.java
  ===================================================================
  package org.apache.maven.scm.provider.svn.command.checkout;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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.tck.command.checkout.CheckOutCommandTckTest;
  import org.apache.maven.scm.provider.svn.SvnScmTestUtils;
  
  /**
   * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
   * @version $Id: SvnCheckOutCommandTckTest.java,v 1.1 2004/11/09 16:07:17 trygvis Exp $
   */
  public class SvnCheckOutCommandTckTest
      extends CheckOutCommandTckTest
  {
      public String getScmUrl()
          throws Exception
      {
          return "scm:svn:file://" + getRepositoryRoot().getAbsolutePath();
      }
  
      public void initRepo()
          throws Exception
      {
          SvnScmTestUtils.initializeRepository( getRepositoryRoot(), getTestFile( "src/test/resources/tck/checkout.dump" ) );
      }
  }
  
  
  
  1.3       +56 -77    maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java
  
  Index: SvnUpdateCommandTest.java
  ===================================================================
  RCS file: /home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SvnUpdateCommandTest.java	2 Nov 2004 22:24:39 -0000	1.2
  +++ SvnUpdateCommandTest.java	9 Nov 2004 16:07:17 -0000	1.3
  @@ -16,102 +16,81 @@
    * limitations under the License.
    */
   
  -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
  -import org.codehaus.plexus.util.cli.Commandline;
  +import java.io.File;
  +
  +import org.apache.maven.scm.ScmTestCase;
  +import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
  +import org.apache.maven.scm.repository.ScmRepository;
   
  -import junit.framework.TestCase;
  +import org.codehaus.plexus.util.cli.Commandline;
   
   /**
    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
    * @version $Id$
    */
  -public class SvnUpdateCommandTest extends TestCase
  +public class SvnUpdateCommandTest
  +    extends ScmTestCase
   {
  -    private SvnUpdateCommand instance;
  -    private String baseDir;
  -
  -    /**
  -     * @param testName
  -     */
  -    public SvnUpdateCommandTest(String testName)
  +    public void testCommandLineWithEmptyTag()
  +        throws Exception
       {
  -        super(testName);
  +        testCommandLine( "scm:svn:http://foo.com/svn/trunk", "",
  +                         "svn update --non-interactive -r " );
       }
   
  -    /* (non-Javadoc)
  -     * @see junit.framework.TestCase#setUp()
  -     */
  -    protected void setUp() throws Exception
  -    {
  -        baseDir = System.getProperty("basedir");
  -        assertNotNull("The system property basedir was not defined.", baseDir);
  -        instance = new SvnUpdateCommand();
  +    public void testCommandLineWithoutTag()
  +        throws Exception
  +    {
  +        testCommandLine( "scm:svn:http://foo.com/svn/trunk", null,
  +                         "svn update --non-interactive" );
       }
   
  -    public void testGetCommand()
  +    public void testCommandLineTag()
  +        throws Exception
       {
  -        try
  -        {
  -            SvnRepository repo = new SvnRepository();
  -            repo.setDelimiter(":");
  -            repo.setConnection("anonymous@http://foo.com/svn/trunk");
  -            repo.setPassword("passwd");
  -            instance.setRepository(repo);
  -            instance.setTag("10");
  -            Commandline cl = instance.getCommandLine();
  -            System.out.println(cl.toString());
  -            assertEquals(
  -                "svn update --non-interactive -v -r 10 --username anonymous --password passwd http://foo.com/svn/trunk",
  -                cl.toString());
  -        }
  -        catch (Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  +        testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk", "10",
  +                         "svn update --non-interactive -r 10 --username anonymous" );
       }
   
  -    public void testGetCommand2()
  +    public void testCommandLineWithUsernameTag()
  +        throws Exception
       {
  -        try
  -        {
  -            SvnRepository repo = new SvnRepository();
  -            repo.setDelimiter(":");
  -            repo.setConnection("http://foo.com/svn/trunk");
  -            instance.setRepository(repo);
  -            instance.setWorkingDirectory(baseDir);
  -            Commandline cl = instance.getCommandLine();
  -            System.out.println(cl.toString());
  -            assertEquals(
  -                "svn update --non-interactive -v http://foo.com/svn/trunk",
  -                cl.toString());
  -        }
  -        catch (Exception e)
  -        {
  -            fail(e.getMessage());
  -        }
  +       testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk", "10",
  +                        "svn update --non-interactive -r 10 --username anonymous" );
       }
  -
  -    public void testGetDisplayNameName()
  +/*
  +    public void testCommandLineWithTagAndAuth()
  +        throws Exception
       {
  -        try
  -        {
  -            assertEquals("Update", instance.getDisplayName());
  -        }
  -        catch(Exception e)
  -        {
  -            fail();
  -        }
  +        File workingDirectory = getTestFile( "target/svn-update-command-test" );
  +
  +        String tag = "10";
  +
  +        ScmRepository repository = getScmManager().makeScmRepository( "scm:svn:anonymous@http://foo.com/svn/trunk" );
  +
  +        SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) repository.getProviderRepository();
  +
  +        Commandline cl = SvnUpdateCommand.createCommandLine( workingDirectory, tag, svnRepository );
  +
  +        assertEquals( "svn update --non-interactive -r 10 --username anonymous --password passwd", cl.toString() );
       }
  +*/
  +
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
   
  -    public void testGetName()
  +    private void testCommandLine( String scmUrl, String tag, String commandLine )
  +        throws Exception
       {
  -        try
  -        {
  -            assertEquals("update", instance.getName());
  -        }
  -        catch(Exception e)
  -        {
  -            fail();
  -        }
  +        File workingDirectory = getTestFile( "target/svn-update-command-test" );
  +
  +        ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
  +
  +        SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) repository.getProviderRepository();
  +
  +        Commandline cl = SvnUpdateCommand.createCommandLine( svnRepository, workingDirectory, tag );
  +
  +        assertEquals( commandLine, cl.toString() );
       }
   }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTckTest.java
  
  Index: SvnUpdateCommandTckTest.java
  ===================================================================
  package org.apache.maven.scm.provider.svn.command.update;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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 java.io.File;
  
  import org.apache.maven.scm.tck.command.update.UpdateCommandTckTest;
  import org.apache.maven.scm.repository.ScmRepository;
  import org.apache.maven.scm.provider.svn.SvnScmTestUtils;
  
  /**
   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
   * @version $Id: SvnUpdateCommandTckTest.java,v 1.1 2004/11/09 16:07:17 trygvis Exp $
   */
  public class SvnUpdateCommandTckTest
      extends UpdateCommandTckTest
  {
      private final static File updateDump = getTestFile( "src/test/resources/tck/update.dump" );
  
      public String getScmUrl()
          throws Exception
      {
          return "scm:svn:file://" + getRepositoryRoot();
      }
  
      public void initRepo()
          throws Exception
      {
          SvnScmTestUtils.initializeRepository( getRepositoryRoot(), updateDump );
      }
  
      public void checkOut( File workingDirectory )
          throws Exception
      {
          execute( workingDirectory.getParentFile(), "svn", "checkout file://" + getRepositoryRoot() + " " + workingDirectory.getName() );
      }
  
      public void addFileToRepository( File workingDirectory, String file )
          throws Exception
      {
          execute( workingDirectory, "svn", "add " + file );
      }
  
      public void addDirectoryToRepository( File workingDirectory, String directory )
          throws Exception
      {
          execute( workingDirectory, "svn", "add " + directory );
      }
  
      public void commit( File workingDirectory, ScmRepository repository )
          throws Exception
      {
          execute( workingDirectory, "svn", "commit -m '' --non-interactive" );
      }
  }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java
  
  Index: SvnScmProviderRepositoryTest.java
  ===================================================================
  package org.apache.maven.scm.provider.svn.repository;
  
  /*
   * Copyright 2003-2004 The Apache Software Foundation.
   *
   * Licensed 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.ScmTestCase;
  import org.apache.maven.scm.repository.ScmRepository;
  import org.apache.maven.scm.manager.ScmManager;
  
  /**
   * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
   * @version $Id: SvnScmProviderRepositoryTest.java,v 1.1 2004/11/09 16:07:17 trygvis Exp $
   */
  public class SvnScmProviderRepositoryTest
      extends ScmTestCase
  {
      private ScmManager scmManager;
  
      public void setUp()
          throws Exception
      {
          super.setUp();
  
          scmManager = getScmManager();
      }
  
      public void testLegalFileURL()
          throws Exception
      {
          testUrl( "file:///tmp/repo" );
      }
  
      public void testLegalHttpURL()
          throws Exception
      {
          testUrl( "http://subversion.tigris.org" );
      }
  
      public void testLegalHttpsURL()
          throws Exception
      {
          testUrl( "https://subversion.tigris.org" );
      }
  
      public void testLegalSvnURL()
          throws Exception
      {
          testUrl( "svn://subversion.tigris.org" );
      }
  
      public void testLegalSvnPlusSshURL()
          throws Exception
      {
          testUrl( "svn+ssh://subversion.tigris.org" );
      }
  
      // ----------------------------------------------------------------------
      //
      // ----------------------------------------------------------------------
  
      private void testUrl( String url )
          throws Exception
      {
          ScmRepository repository = scmManager.makeScmRepository( "scm:svn:" + url );
  
          assertNotNull( "ScmManager.makeScmRepository() returned null", repository );
  
          assertNotNull( "The provider repository was null.", repository.getProviderRepository() );
  
          assertTrue( "The SCM Repository isn't a " + SvnScmProviderRepository.class.getName() + ".", repository.getProviderRepository() instanceof SvnScmProviderRepository );
      }
  }
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/checkout.dump
  
  Index: checkout.dump
  ===================================================================
  SVN-fs-dump-format-version: 2
  
  UUID: 32329737-c6e7-0310-acdd-fde163f827b2
  
  Revision-number: 0
  Prop-content-length: 56
  Content-length: 56
  
  K 8
  svn:date
  V 27
  2004-10-31T22:57:32.330365Z
  PROPS-END
  
  Revision-number: 1
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:00:31.108377Z
  PROPS-END
  
  Node-path: file
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 0
  Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
  Content-length: 10
  
  PROPS-END
  
  
  Revision-number: 2
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:01:07.427469Z
  PROPS-END
  
  Node-path: file_2
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 0
  Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
  Content-length: 10
  
  PROPS-END
  
  
  Revision-number: 3
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:01:47.729957Z
  PROPS-END
  
  Node-path: file_1
  Node-kind: file
  Node-action: add
  Node-copyfrom-rev: 1
  Node-copyfrom-path: file
  
  
  Node-path: file_2
  Node-kind: file
  Node-action: change
  Text-content-length: 17
  Text-content-md5: 53adcdeed5651fafe46fbba6b5e87d02
  Content-length: 17
  
  adding some crap
  
  
  Node-path: file
  Node-action: delete
  
  
  Revision-number: 4
  Prop-content-length: 118
  Content-length: 118
  
  K 7
  svn:log
  V 16
  o My log message
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-01T07:34:03.254229Z
  PROPS-END
  
  Node-path: file_2
  Node-kind: file
  Node-action: change
  Text-content-length: 102
  Text-content-md5: 12db6e90dbaccb1e1c793465d0cd2573
  Content-length: 102
  
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  
  
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck/checkout.dump
  
  Index: checkout.dump
  ===================================================================
  SVN-fs-dump-format-version: 2
  
  UUID: 32329737-c6e7-0310-acdd-fde163f827b2
  
  Revision-number: 0
  Prop-content-length: 56
  Content-length: 56
  
  K 8
  svn:date
  V 27
  2004-10-31T22:57:32.330365Z
  PROPS-END
  
  Revision-number: 1
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:00:31.108377Z
  PROPS-END
  
  Node-path: file
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 0
  Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
  Content-length: 10
  
  PROPS-END
  
  
  Revision-number: 2
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:01:07.427469Z
  PROPS-END
  
  Node-path: file_2
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 0
  Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
  Content-length: 10
  
  PROPS-END
  
  
  Revision-number: 3
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:01:47.729957Z
  PROPS-END
  
  Node-path: file_1
  Node-kind: file
  Node-action: add
  Node-copyfrom-rev: 1
  Node-copyfrom-path: file
  
  
  Node-path: file_2
  Node-kind: file
  Node-action: change
  Text-content-length: 17
  Text-content-md5: 53adcdeed5651fafe46fbba6b5e87d02
  Content-length: 17
  
  adding some crap
  
  
  Node-path: file
  Node-action: delete
  
  
  Revision-number: 4
  Prop-content-length: 118
  Content-length: 118
  
  K 7
  svn:log
  V 16
  o My log message
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-01T07:34:03.254229Z
  PROPS-END
  
  Node-path: file_2
  Node-kind: file
  Node-action: change
  Text-content-length: 102
  Text-content-md5: 12db6e90dbaccb1e1c793465d0cd2573
  Content-length: 102
  
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  
  
  Revision-number: 5
  Prop-content-length: 127
  Content-length: 127
  
  K 7
  svn:log
  V 25
  o Making TCK update dump.
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-03T09:40:38.812597Z
  PROPS-END
  
  Node-path: pom.xml
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 8
  Text-content-md5: bb4d26f6cff04ea8d4453055155aa4ae
  Content-length: 18
  
  PROPS-END
  pom.xml
  
  
  Node-path: readme.txt
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 11
  Text-content-md5: 2f4e912cdd8e4daf724d86c85100c234
  Content-length: 21
  
  PROPS-END
  readme.txt
  
  
  Node-path: src
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/main
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/main/java
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/main/java/Application.java
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 17
  Text-content-md5: f9c80174d0aceb15241396719d3d8ee0
  Content-length: 27
  
  PROPS-END
  Application.java
  
  
  Node-path: src/test
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/test/java
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/test/java/Test.java
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 10
  Text-content-md5: 2b67cb187cfebc6556a9ff00dd2a73c9
  Content-length: 20
  
  PROPS-END
  Test.java
  
  
  Node-path: src/test/resources
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: file_1
  Node-action: delete
  
  
  Node-path: file_2
  Node-action: delete
  
  
  Revision-number: 6
  Prop-content-length: 135
  Content-length: 135
  
  K 7
  svn:log
  V 33
  o Making TCK update dump, take 2.
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-03T09:55:45.739689Z
  PROPS-END
  
  Node-path: pom.xml
  Node-kind: file
  Node-action: change
  Text-content-length: 9
  Text-content-md5: ab43bf43c516ba05e7ea14237861c101
  Content-length: 9
  
  /pom.xml
  
  
  Node-path: readme.txt
  Node-kind: file
  Node-action: change
  Text-content-length: 12
  Text-content-md5: 2c15d78f5fc4223fccc94031588aee97
  Content-length: 12
  
  /readme.txt
  
  
  Node-path: src/main/java/Application.java
  Node-kind: file
  Node-action: change
  Text-content-length: 32
  Text-content-md5: e0b1aa4c95b4211d51a817c43f6a0070
  Content-length: 32
  
  /src/main/java/Application.java
  
  
  Node-path: src/test/java/Test.java
  Node-kind: file
  Node-action: change
  Text-content-length: 25
  Text-content-md5: 2f8ba3ce8330bf354a73b4f243013e98
  Content-length: 25
  
  /src/test/java/Test.java
  
  
  Revision-number: 7
  Prop-content-length: 135
  Content-length: 135
  
  K 7
  svn:log
  V 33
  o Making TCK update dump, take 3.
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-03T09:57:42.448827Z
  PROPS-END
  
  Node-path: pom.xml
  Node-kind: file
  Node-action: change
  Text-content-length: 8
  Text-content-md5: eab74e9a6a0a7669ca7a253f0f0ed832
  Content-length: 8
  
  /pom.xml
  
  Node-path: readme.txt
  Node-kind: file
  Node-action: change
  Text-content-length: 11
  Text-content-md5: 74088de3393a22eb8d6abc87369fb21a
  Content-length: 11
  
  /readme.txt
  
  Node-path: src/main/java/Application.java
  Node-kind: file
  Node-action: change
  Text-content-length: 31
  Text-content-md5: 1486dc4cd4c38fc1d4c2b4ae40f87a3e
  Content-length: 31
  
  /src/main/java/Application.java
  
  Node-path: src/test/java/Test.java
  Node-kind: file
  Node-action: change
  Text-content-length: 24
  Text-content-md5: 197e3f681c57ea737fdd1b73e83509b1
  Content-length: 24
  
  /src/test/java/Test.java
  
  
  
  
  1.1                  maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck/update.dump
  
  Index: update.dump
  ===================================================================
  SVN-fs-dump-format-version: 2
  
  UUID: 32329737-c6e7-0310-acdd-fde163f827b2
  
  Revision-number: 0
  Prop-content-length: 56
  Content-length: 56
  
  K 8
  svn:date
  V 27
  2004-10-31T22:57:32.330365Z
  PROPS-END
  
  Revision-number: 1
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:00:31.108377Z
  PROPS-END
  
  Node-path: file
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 0
  Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
  Content-length: 10
  
  PROPS-END
  
  
  Revision-number: 2
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:01:07.427469Z
  PROPS-END
  
  Node-path: file_2
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 0
  Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
  Content-length: 10
  
  PROPS-END
  
  
  Revision-number: 3
  Prop-content-length: 101
  Content-length: 101
  
  K 7
  svn:log
  V 0
  
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-10-31T23:01:47.729957Z
  PROPS-END
  
  Node-path: file_1
  Node-kind: file
  Node-action: add
  Node-copyfrom-rev: 1
  Node-copyfrom-path: file
  
  
  Node-path: file_2
  Node-kind: file
  Node-action: change
  Text-content-length: 17
  Text-content-md5: 53adcdeed5651fafe46fbba6b5e87d02
  Content-length: 17
  
  adding some crap
  
  
  Node-path: file
  Node-action: delete
  
  
  Revision-number: 4
  Prop-content-length: 118
  Content-length: 118
  
  K 7
  svn:log
  V 16
  o My log message
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-01T07:34:03.254229Z
  PROPS-END
  
  Node-path: file_2
  Node-kind: file
  Node-action: change
  Text-content-length: 102
  Text-content-md5: 12db6e90dbaccb1e1c793465d0cd2573
  Content-length: 102
  
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  adding some crap
  
  
  Revision-number: 5
  Prop-content-length: 127
  Content-length: 127
  
  K 7
  svn:log
  V 25
  o Making TCK update dump.
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-03T09:40:38.812597Z
  PROPS-END
  
  Node-path: pom.xml
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 8
  Text-content-md5: bb4d26f6cff04ea8d4453055155aa4ae
  Content-length: 18
  
  PROPS-END
  pom.xml
  
  
  Node-path: readme.txt
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 11
  Text-content-md5: 2f4e912cdd8e4daf724d86c85100c234
  Content-length: 21
  
  PROPS-END
  readme.txt
  
  
  Node-path: src
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/main
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/main/java
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/main/java/Application.java
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 17
  Text-content-md5: f9c80174d0aceb15241396719d3d8ee0
  Content-length: 27
  
  PROPS-END
  Application.java
  
  
  Node-path: src/test
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/test/java
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: src/test/java/Test.java
  Node-kind: file
  Node-action: add
  Prop-content-length: 10
  Text-content-length: 10
  Text-content-md5: 2b67cb187cfebc6556a9ff00dd2a73c9
  Content-length: 20
  
  PROPS-END
  Test.java
  
  
  Node-path: src/test/resources
  Node-kind: dir
  Node-action: add
  Prop-content-length: 10
  Content-length: 10
  
  PROPS-END
  
  
  Node-path: file_1
  Node-action: delete
  
  
  Node-path: file_2
  Node-action: delete
  
  
  Revision-number: 6
  Prop-content-length: 135
  Content-length: 135
  
  K 7
  svn:log
  V 33
  o Making TCK update dump, take 2.
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-03T09:55:45.739689Z
  PROPS-END
  
  Node-path: pom.xml
  Node-kind: file
  Node-action: change
  Text-content-length: 9
  Text-content-md5: ab43bf43c516ba05e7ea14237861c101
  Content-length: 9
  
  /pom.xml
  
  
  Node-path: readme.txt
  Node-kind: file
  Node-action: change
  Text-content-length: 12
  Text-content-md5: 2c15d78f5fc4223fccc94031588aee97
  Content-length: 12
  
  /readme.txt
  
  
  Node-path: src/main/java/Application.java
  Node-kind: file
  Node-action: change
  Text-content-length: 32
  Text-content-md5: e0b1aa4c95b4211d51a817c43f6a0070
  Content-length: 32
  
  /src/main/java/Application.java
  
  
  Node-path: src/test/java/Test.java
  Node-kind: file
  Node-action: change
  Text-content-length: 25
  Text-content-md5: 2f8ba3ce8330bf354a73b4f243013e98
  Content-length: 25
  
  /src/test/java/Test.java
  
  
  Revision-number: 7
  Prop-content-length: 135
  Content-length: 135
  
  K 7
  svn:log
  V 33
  o Making TCK update dump, take 3.
  K 10
  svn:author
  V 7
  trygvis
  K 8
  svn:date
  V 27
  2004-11-03T09:57:42.448827Z
  PROPS-END
  
  Node-path: pom.xml
  Node-kind: file
  Node-action: change
  Text-content-length: 8
  Text-content-md5: eab74e9a6a0a7669ca7a253f0f0ed832
  Content-length: 8
  
  /pom.xml
  
  Node-path: readme.txt
  Node-kind: file
  Node-action: change
  Text-content-length: 11
  Text-content-md5: 74088de3393a22eb8d6abc87369fb21a
  Content-length: 11
  
  /readme.txt
  
  Node-path: src/main/java/Application.java
  Node-kind: file
  Node-action: change
  Text-content-length: 31
  Text-content-md5: 1486dc4cd4c38fc1d4c2b4ae40f87a3e
  Content-length: 31
  
  /src/main/java/Application.java
  
  Node-path: src/test/java/Test.java
  Node-kind: file
  Node-action: change
  Text-content-length: 24
  Text-content-md5: 197e3f681c57ea737fdd1b73e83509b1
  Content-length: 24
  
  /src/test/java/Test.java
  
  
  
  

Re: cvs commit: maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck checkout.dump update.dump

Posted by Emmanuel Venisse <em...@venisse.net>.
Trygve,

Can you re-commit dump file as binary instead of text mode?
When I checkout them on my windows, it are converted to dos format and svn
failed.
I prefer you commit then for obtain the original file and not a convert file
unix to dos to unix file format.

Thanks

Emmanuel

----- Original Message ----- 
From: <tr...@apache.org>
To: <ma...@apache.org>
Sent: Tuesday, November 09, 2004 5:07 PM
Subject: cvs commit:
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck
checkout.dump update.dump


> trygvis     2004/11/09 08:07:17
>
>   Modified:
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/command/changelog
>                         SvnChangeLogCommand.java SvnChangeLogConsumer.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/command/checkout
>                         SvnCheckOutCommand.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/command/update
>                         SvnUpdateCommand.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/resources/META-INF/plexu
s
>                         components.xml
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn/command/changelog
>                         SvnChangeLogCommandTest.java
>                         SvnChangeLogConsumerTest.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn/command/checkout
>                         SvnCheckOutCommandTest.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn/command/update
>                         SvnUpdateCommandTest.java
>   Added:
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn
>                         SvnScmProvider.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/command
>                         SvnCommand.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/command/checkout
>                         SvnCheckOutConsumer.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/command/update
>                         SvnUpdateConsumer.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/repository
>                         SvnScmProviderRepository.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn
>                         SvnScmProviderTest.java SvnScmTestUtils.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn/command/checkout
>                         SvnCheckOutCommandTckTest.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn/command/update
>                         SvnUpdateCommandTckTest.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn/repository
>                         SvnScmProviderRepositoryTest.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/resources
>                         checkout.dump
>
maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck
>                         checkout.dump update.dump
>   Removed:     maven-scm-providers/maven-scm-provider-svn LICENSE.txt
>                         NOTICE.txt checkstyle-license.txt
>                         project.properties
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn
>                         SvnScm.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/command
>                         AbstractSvnCommand.java SvnCommandWrapper.java
>
maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/sc
m/provider/svn/repository
>                         SvnRepository.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn
>                         SvnScmTest.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn/command
>                         AbstractSvnCommandTest.java
>                         SvnCommandWrapperTest.java
>                         TestAbstractSvnCommand.java
>
maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/sc
m/provider/svn/repository
>                         SvnRepositoryTest.java
>   Log:
>   o Adapting the SVN provider to the new API.
>
>   Revision  Changes    Path
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/SvnScmProvider.java
>
>   Index: SvnScmProvider.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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 java.util.Map;
>
>   import org.apache.maven.scm.provider.AbstractScmProvider;
>   import org.apache.maven.scm.provider.ScmProviderRepository;
>   import
org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
>   import org.apache.maven.scm.repository.ScmRepositoryException;
>
>   /**
>    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>    * @version $Id: SvnScmProvider.java,v 1.1 2004/11/09 16:07:16 trygvis
Exp $
>    */
>   public class SvnScmProvider
>       extends AbstractScmProvider
>   {
>       /** @requirement org.apache.maven.scm.CvsCommand */
>       private Map commands;
>
>



   // ----------------------------------------------------------------------
>       // ScmProvider Implementation
>



   // ----------------------------------------------------------------------
>
>       public ScmProviderRepository makeProviderScmRepository( String
scmSpecificUrl, String delimiter )
>       throws ScmRepositoryException
>       {
>           int at = scmSpecificUrl.indexOf("@");
>
>           String url;
>           String user = null;
>           String password = null;
>
>           try
>           {
>               if (at >= 1)
>               {
>                   user = scmSpecificUrl.substring( 0, at );
>                   url = scmSpecificUrl.substring( at + 1);
>               }
>               else
>               {
>                   url = scmSpecificUrl;
>               }
>           }
>           catch ( Exception e )
>           {
>               throw new ScmRepositoryException( e.getMessage() );
>           }
>
>           return new SvnScmProviderRepository( url, user, password );
>       }
>
>



   // ----------------------------------------------------------------------
>       // AbstractScmProvider Implementation
>



   // ----------------------------------------------------------------------
>
>       protected Map getCommands()
>       {
>           return commands;
>       }
>
>       public String getScmType()
>       {
>           return "svn";
>       }
>   }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/command/SvnCommand.java
>
>   Index: SvnCommand.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn.command;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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.command.Command;
>
>   /**
>    * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
>    * @version $Id: SvnCommand.java,v 1.1 2004/11/09 16:07:16 trygvis Exp $
>    */
>   public interface SvnCommand
>       extends Command
>   {
>   }
>
>
>
>   1.3       +51 -138
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/command/changelog/SvnChangeLogCommand.java
>
>   Index: SvnChangeLogCommand.java
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java
/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommand.jav
a,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- SvnChangeLogCommand.java 2 Nov 2004 22:24:36 -0000 1.2
>   +++ SvnChangeLogCommand.java 9 Nov 2004 16:07:16 -0000 1.3
>   @@ -16,190 +16,103 @@
>     * limitations under the License.
>     */
>
>   +import java.io.File;
>    import java.text.SimpleDateFormat;
>    import java.util.Date;
>    import java.util.TimeZone;
>
>    import org.apache.maven.scm.ScmException;
>   -import org.apache.maven.scm.command.changelog.ChangeLogCommand;
>   -import org.apache.maven.scm.command.changelog.ChangeLogConsumer;
>   -import org.apache.maven.scm.provider.svn.command.AbstractSvnCommand;
>   -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
>   +import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
>   +import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
>   +import org.apache.maven.scm.provider.ScmProviderRepository;
>   +import
org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
>   +import org.apache.maven.scm.provider.svn.command.SvnCommand;
>   +
>    import org.codehaus.plexus.util.cli.Commandline;
>   -import org.codehaus.plexus.util.cli.StreamConsumer;
>
>    /**
>     * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>     * @version $Id$
>     */
>    public class SvnChangeLogCommand
>   -    extends AbstractSvnCommand
>   -    implements ChangeLogCommand
>   +    extends AbstractChangeLogCommand
>   +    implements SvnCommand
>    {
>   -    public SvnChangeLogCommand() throws ScmException
>   -    {
>   -        setConsumer(new SvnChangeLogConsumer());
>   -    }
>   -
>   -    /** Date format expected by Subversion */
>   -    static final SimpleDateFormat SVN_DATE_FORMAT_IN =
>   -        new SimpleDateFormat("yyyy/MM/dd 'GMT'");
>   -
>   -    /** Set the time zone of the formatters to GMT. */
>   -    static {
>   -        SVN_DATE_FORMAT_IN.setTimeZone(TimeZone.getTimeZone("GMT"));
>   -    }
>   +    private final static String DATE_FORMAT = "yyyy/MM/dd 'GMT'";
>
>   -    private ChangeLogConsumer consumer;
>   -    private Date startDate;
>   -    private Date endDate;
>   -
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.changelog.ChangeLogCommand#setStartDate(java.ut
il.Date)
>   -     */
>   -    public void setStartDate(Date startDate)
>   +    protected ChangeLogScmResult executeChangeLogCommand(
ScmProviderRepository repo, File workingDirectory, Date startDate, Date
endDate, int numDays, String branch )
>   +        throws ScmException
>        {
>   -        this.startDate = startDate;
>   -    }
>   +        Commandline cl = createCommandLine( (SvnScmProviderRepository)
repo, workingDirectory, branch, startDate, endDate );
>
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.changelog.ChangeLogCommand#getStartDate()
>   -     */
>   -    public Date getStartDate()
>   -    {
>   -        return startDate;
>   -    }
>   +        SvnChangeLogConsumer consumer = new SvnChangeLogConsumer();
>
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.changelog.ChangeLogCommand#setEndDate(java.util
.Date)
>   -     */
>   -    public void setEndDate(Date endDate)
>   -    {
>   -        this.endDate = endDate;
>   -    }
>   +        // TODO: implement
>
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.changelog.ChangeLogCommand#getEndDate()
>   -     */
>   -    public Date getEndDate()
>   -    {
>   -        return endDate;
>   +        return new ChangeLogScmResult( consumer.getModifications() );
>        }
>
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.changelog.ChangeLogCommand#setRange(int)
>   -     */
>   -    public void setRange(int numDays)
>   -    {
>   -        setStartDate(
>   -            new Date(
>   -                System.currentTimeMillis()
>   -                    - (long)numDays * 24 * 60 * 60 * 1000));
>   -        setEndDate(
>   -            new Date(
>   -                System.currentTimeMillis() + (long)1 * 24 * 60 * 60 *
1000));
>   -    }
>   +
   // ----------------------------------------------------------------------
>   +    //
>   +
   // ----------------------------------------------------------------------
>
>   -    /* (non-Javadoc)
>   -     * @see org.apache.maven.scm.command.Command#getName()
>   -     */
>   -    public String getName()
>   +    public static Commandline createCommandLine(
SvnScmProviderRepository repository, File workingDirectory, String branch,
Date startDate, Date endDate )
>        {
>   -        return NAME;
>   -    }
>   +        SimpleDateFormat dateFormat = new SimpleDateFormat(
DATE_FORMAT );
>
>   -    /* (non-Javadoc)
>   -     * @see org.apache.maven.scm.command.Command#getDisplayName()
>   -     */
>   -    public String getDisplayName()
>   -    {
>   -        return "Changelog";
>   -    }
>   +        dateFormat.setTimeZone( TimeZone.getTimeZone( "GMT" ) );
>
>   -    public Commandline getCommandLine() throws ScmException
>   -    {
>   -        Commandline command = new Commandline();
>   +        Commandline cl = new Commandline();
>
>   -        command.setExecutable("svn");
>   +        cl.setExecutable( "svn" );
>
>   -        if (getWorkingDirectory() != null)
>   -        {
>   -            command.setWorkingDirectory(getWorkingDirectory());
>   -        }
>   +        cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
>   +
>   +        cl.createArgument().setValue( "log" );
>
>   -        SvnRepository repo = (SvnRepository)getRepository();
>   +        cl.createArgument().setValue( "--non-interactive" );
>
>   -        command.createArgument().setValue("log");
>   -        command.createArgument().setValue("--non-interactive");
>   -        command.createArgument().setValue("-v");
>   +        cl.createArgument().setValue( "-v" );
>
>   -        if (startDate != null)
>   +        if ( startDate != null )
>            {
>   -            command.createArgument().setValue("-r");
>   -            if (endDate != null)
>   +            cl.createArgument().setValue( "-r" );
>   +
>   +            if ( endDate != null )
>                {
>   -                command.createArgument().setValue(
>   -                    "{"
>   -                        + SVN_DATE_FORMAT_IN.format(getStartDate())
>   -                        + "}"
>   -                        + ":{"
>   -                        + SVN_DATE_FORMAT_IN.format(getEndDate())
>   -                        + "}");
>   +                cl.createArgument().setValue( "{" +
dateFormat.format( startDate ) + "}" + ":" +
>   +                                              "{" +
dateFormat.format( endDate ) + "}" );
>                }
>                else
>                {
>   -                command.createArgument().setValue(
>   -                    "{"
>   -                        + SVN_DATE_FORMAT_IN.format(getStartDate())
>   -                        + "}"
>   -                        + ":HEAD");
>   +                cl.createArgument().setValue( "{" +
dateFormat.format( startDate ) + "}:HEAD" );
>                }
>            }
>            else
>            {
>   -            if (getTag() != null)
>   +            if ( branch != null )
>                {
>   -                command.createArgument().setValue("-r");
>   -                command.createArgument().setValue(getTag());
>   +                cl.createArgument().setValue( "-r" );
>   +                cl.createArgument().setValue( branch );
>                }
>            }
>
>   -        if (repo.getUser() != null)
>   -        {
>   -            command.createArgument().setValue("--username");
>   -            command.createArgument().setValue(repo.getUser());
>   -        }
>   -        if (repo.getPassword() != null)
>   +        if ( repository.getUser() != null )
>            {
>   -            command.createArgument().setValue("--password");
>   -            command.createArgument().setValue(repo.getPassword());
>   -        }
>   -
>   -        command.createArgument().setValue(repo.getUrl());
>   -
>   -        return command;
>   -    }
>   +            cl.createArgument().setValue( "--username" );
>
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.Command#setConsumer(org.codehaus.plexus.util.cl
i.StreamConsumer)
>   -     */
>   -    public void setConsumer(StreamConsumer consumer) throws
ScmException
>   -    {
>   -        if (consumer instanceof ChangeLogConsumer)
>   -        {
>   -            this.consumer = (ChangeLogConsumer)consumer;
>   +            cl.createArgument().setValue( repository.getUser() );
>            }
>   -        else
>   +
>   +        if ( repository.getPassword() != null )
>            {
>   -            throw new ScmException("Unsupported consumer for this
command");
>   +            cl.createArgument().setValue( "--password" );
>   +
>   +            cl.createArgument().setValue( repository.getPassword() );
>            }
>   -    }
>
>   -    /* (non-Javadoc)
>   -     * @see org.apache.maven.scm.command.Command#getConsumer()
>   -     */
>   -    public StreamConsumer getConsumer()
>   -    {
>   -        return consumer;
>   +        cl.createArgument().setValue( repository.getUrl() );
>   +
>   +        return cl;
>        }
>    }
>
>
>
>   1.3       +31 -27
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/command/changelog/SvnChangeLogConsumer.java
>
>   Index: SvnChangeLogConsumer.java
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java
/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogConsumer.ja
va,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- SvnChangeLogConsumer.java 2 Nov 2004 22:24:36 -0000 1.2
>   +++ SvnChangeLogConsumer.java 9 Nov 2004 16:07:16 -0000 1.3
>   @@ -19,26 +19,25 @@
>    import java.text.ParseException;
>    import java.text.SimpleDateFormat;
>    import java.util.ArrayList;
>   -import java.util.Collection;
>    import java.util.Date;
>   +import java.util.List;
>
>   -import org.apache.maven.scm.ScmException;
>   -import org.apache.maven.scm.command.changelog.ChangeLogConsumer;
>    import org.apache.maven.scm.command.changelog.ChangeLogEntry;
>    import org.apache.maven.scm.command.changelog.ChangeLogFile;
>   -
>    import org.apache.regexp.RE;
>    import org.apache.regexp.RESyntaxException;
>
>   +import org.codehaus.plexus.util.cli.StreamConsumer;
>   +
>    /**
>     * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>     * @version $Id$
>     */
>   -public class SvnChangeLogConsumer implements ChangeLogConsumer
>   +public class SvnChangeLogConsumer
>   +    implements StreamConsumer
>    {
>        /** Date formatter for svn timestamp (after a little massaging) */
>   -    private static final SimpleDateFormat SVN_TIMESTAMP =
>   -        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzzzzzzzz");
>   +    private static final SimpleDateFormat SVN_TIMESTAMP = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzzzzzzzz");
>
>        /** State machine constant: expecting header */
>        private static final int GET_HEADER = 1;
>   @@ -60,22 +59,22 @@
>
>        /** The comment section ends with a dashed line */
>        private static final String COMMENT_END_TOKEN =
>   -        "------------------------------------"
>   -            + "------------------------------------";
>   +        "------------------------------------" +
>   +        "------------------------------------";
>
>        /** The pattern used to match svn header lines */
>   -        private static final String pattern =
>   -            "^rev (\\d+):\\s+" + // revision number
>   +    private static final String pattern =
>   +        "^rev (\\d+):\\s+" + // revision number
>            "(\\w+)\\s+\\|\\s+" + // author username
>            "(\\d+-\\d+-\\d+ " + // date 2002-08-24
>            "\\d+:\\d+:\\d+) " + // time 16:01:00
>   -    "([\\-+])(\\d\\d)(\\d\\d)"; // gmt offset -0400
>   +        "([\\-+])(\\d\\d)(\\d\\d)"; // gmt offset -0400
>
>        /** Current status of the parser */
>        private int status = GET_HEADER;
>
>        /** List of change log entries */
>   -    private Collection entries = new ArrayList();
>   +    private List entries = new ArrayList();
>
>        /** The current log entry being processed by the parser */
>        private ChangeLogEntry currentLogEntry;
>   @@ -92,29 +91,27 @@
>        /**
>         * Default constructor.
>         */
>   -    public SvnChangeLogConsumer() throws ScmException
>   +    public SvnChangeLogConsumer()
>        {
>            try
>            {
>                headerRegexp = new RE(pattern);
>            }
>   -        catch (RESyntaxException ignored)
>   +        catch ( RESyntaxException ex )
>            {
>   -            throw new ScmException("Could not create regexp to parse
svn log file");
>   +            throw new RuntimeException( "INTERNAL ERROR: Could not
create regexp to parse svn log file. This shouldn't happen. Something is
probably wrong with the oro installation.", ex );
>            }
>        }
>
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.changelog.ChangeLogConsumer#getModifications()
>   -     */
>   -    public Collection getModifications()
>   +    public List getModifications()
>        {
>            return entries;
>        }
>
>   -    /* (non-Javadoc)
>   -     * @see
org.codehaus.plexus.util.cli.StreamConsumer#consumeLine(java.lang.String)
>   -     */
>   +
   // ----------------------------------------------------------------------
>   +    // StreamConsumer Implementation
>   +
   // ----------------------------------------------------------------------
>   +
>        public void consumeLine(String line)
>        {
>            switch (status)
>   @@ -133,6 +130,10 @@
>            }
>        }
>
>   +
   // ----------------------------------------------------------------------
>   +    //
>   +
   // ----------------------------------------------------------------------
>   +
>        /**
>         * Process the current input line in the GET_HEADER state.  The
>         * author, date, and the revision of the entry are gathered.  Note,
>   @@ -149,10 +150,13 @@
>                return;
>            }
>
>   -        currentRevision = headerRegexp.getParen(1);
>   +        currentRevision = headerRegexp.getParen( 1 );
>   +
>            currentLogEntry = new ChangeLogEntry();
>   -        currentLogEntry.setAuthor(headerRegexp.getParen(2));
>   -        currentLogEntry.setDate(parseDate());
>   +
>   +        currentLogEntry.setAuthor( headerRegexp.getParen( 2 ) );
>   +
>   +        currentLogEntry.setDate( parseDate() );
>
>            status = GET_FILE;
>        }
>
>
>
>   1.3       +77 -54
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/command/checkout/SvnCheckOutCommand.java
>
>   Index: SvnCheckOutCommand.java
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java
/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommand.java,
v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- SvnCheckOutCommand.java 2 Nov 2004 22:24:36 -0000 1.2
>   +++ SvnCheckOutCommand.java 9 Nov 2004 16:07:17 -0000 1.3
>   @@ -16,10 +16,17 @@
>     * limitations under the License.
>     */
>
>   +import java.io.File;
>   +
>    import org.apache.maven.scm.ScmException;
>   -import org.apache.maven.scm.command.checkout.CheckOutCommand;
>   -import org.apache.maven.scm.provider.svn.command.AbstractSvnCommand;
>   -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
>   +import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand;
>   +import org.apache.maven.scm.command.checkout.CheckOutScmResult;
>   +import org.apache.maven.scm.provider.ScmProviderRepository;
>   +import org.apache.maven.scm.provider.svn.command.SvnCommand;
>   +import
org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
>   +
>   +import org.codehaus.plexus.util.cli.CommandLineException;
>   +import org.codehaus.plexus.util.cli.CommandLineUtils;
>    import org.codehaus.plexus.util.cli.Commandline;
>
>    /**
>   @@ -27,65 +34,81 @@
>     * @version $Id$
>     */
>    public class SvnCheckOutCommand
>   -    extends AbstractSvnCommand
>   -    implements CheckOutCommand
>   +    extends AbstractCheckOutCommand
>   +    implements SvnCommand
>    {
>   -
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.AbstractCommand#getCommandLine()
>   -     */
>   -    public Commandline getCommandLine() throws ScmException
>   +    protected CheckOutScmResult executeCheckOutCommand(
ScmProviderRepository repo, File workingDirectory, String tag, File[]
files )
>   +        throws ScmException
>        {
>   - Commandline command = new Commandline();
>   +        Commandline cl = createCommandLine(
(SvnScmProviderRepository)repo, workingDirectory, tag );
>
>   - command.setExecutable("svn");
>   +        SvnCheckOutConsumer consumer = new SvnCheckOutConsumer(
getLogger(), workingDirectory );
>
>   - if (getWorkingDirectory() != null)
>   - {
>   - command.setWorkingDirectory(getWorkingDirectory());
>   - }
>   -
>   - SvnRepository repo = (SvnRepository)getRepository();
>   -
>   - command.createArgument().setValue("checkout");
>   - command.createArgument().setValue("--non-interactive");
>   - command.createArgument().setValue("-v");
>   -
>   - if (getTag() != null)
>   - {
>   - command.createArgument().setValue("-r");
>   - command.createArgument().setValue(getTag());
>   - }
>   -
>   - if (repo.getUser() != null)
>   - {
>   - command.createArgument().setValue("--username");
>   - command.createArgument().setValue(repo.getUser());
>   - }
>   - if (repo.getPassword() != null)
>   - {
>   - command.createArgument().setValue("--password");
>   - command.createArgument().setValue(repo.getPassword());
>   - }
>   +        CommandLineUtils.StringStreamConsumer stderr = new
CommandLineUtils.StringStreamConsumer();
>
>   - command.createArgument().setValue(repo.getUrl());
>   +        int exitCode;
>
>   - return command;
>   -    }
>   +        getLogger().info( "Working directory: " +
workingDirectory.getAbsolutePath() );
>   +        getLogger().info( "Command line: " + cl );
>
>   -    /* (non-Javadoc)
>   -     * @see org.apache.maven.scm.command.Command#getName()
>   -     */
>   -    public String getName()
>   -    {
>   -        return NAME;
>   +        try
>   +        {
>   +            exitCode = CommandLineUtils.executeCommandLine( cl,
consumer, stderr );
>   +        }
>   +        catch( CommandLineException ex )
>   +        {
>   +            throw new ScmException( "Error while executing command.",
ex );
>   +        }
>   +
>   +        if ( exitCode != 0 )
>   +        {
>   +            return new CheckOutScmResult( "The cvs command failed.",
stderr.getOutput(), false );
>   +        }
>   +
>   +        return new CheckOutScmResult( consumer.getCheckedOutFiles() );
>        }
>
>   -    /* (non-Javadoc)
>   -     * @see org.apache.maven.scm.command.Command#getDisplayName()
>   -     */
>   -    public String getDisplayName()
>   +
   // ----------------------------------------------------------------------
>   +    //
>   +
   // ----------------------------------------------------------------------
>   +
>   +    public static Commandline createCommandLine(
SvnScmProviderRepository repository, File workingDirectory, String tag )
>        {
>   -        return "Check out";
>   +        Commandline cl = new Commandline();
>   +
>   +        cl.setExecutable( "svn" );
>   +
>   +        cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
>   +
>   +        cl.createArgument().setValue( "checkout" );
>   +
>   +        cl.createArgument().setValue( "--non-interactive" );
>   +
>   +//        cl.createArgument().setValue( "-q" );
>   +
>   +        if ( tag != null)
>   +        {
>   +            cl.createArgument().setValue( "-r" );
>   +
>   +            cl.createArgument().setValue( tag );
>   +        }
>   +
>   +        if ( repository.getUser() != null )
>   +        {
>   +            cl.createArgument().setValue( "--username" );
>   +
>   +            cl.createArgument().setValue( repository.getUser() );
>   +        }
>   +
>   +        if ( repository.getPassword() != null )
>   +        {
>   +            cl.createArgument().setValue( "--password" );
>   +
>   +            cl.createArgument().setValue( repository.getPassword() );
>   +        }
>   +
>   +        cl.createArgument().setValue( repository.getUrl() );
>   +
>   +        return cl;
>        }
>    }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/command/checkout/SvnCheckOutConsumer.java
>
>   Index: SvnCheckOutConsumer.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn.command.checkout;
>
>   /*
>    * Copyright 2001-2004 The Apache Software Foundation.
>    *
>    * Licensed 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 java.util.ArrayList;
>   import java.util.List;
>   import java.io.File;
>
>   import org.apache.maven.scm.ScmFile;
>   import org.apache.maven.scm.ScmFileStatus;
>
>   import org.codehaus.plexus.logging.Logger;
>   import org.codehaus.plexus.util.cli.StreamConsumer;
>
>   /**
>    * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
>    * @version $Id: SvnCheckOutConsumer.java,v 1.1 2004/11/09 16:07:17
trygvis Exp $
>    */
>   public class SvnCheckOutConsumer
>       implements StreamConsumer
>   {
>       private final static String CHECKED_OUT_REVISION_TOKEN = "Checked
out revision";
>
>       private Logger logger;
>
>       private File workingDirectory;
>
>       private List checkedOutFiles = new ArrayList();
>
>       private int revision;
>
>       public SvnCheckOutConsumer( Logger logger, File workingDirectory )
>       {
>           this.logger = logger;
>
>           this.workingDirectory = workingDirectory;
>       }
>
>



   // ----------------------------------------------------------------------
>       // StreamConsumer Implementation
>



   // ----------------------------------------------------------------------
>
>       public void consumeLine( String line )
>       {
>           if ( line.length() <= 3 )
>           {
>               logger.warn( "Unexpected input, the line must be at least
three characters long. Line: '" + line + "'." );
>
>               return;
>           }
>
>           String statusString = line.substring( 0, 1 );
>
>           String file = line.substring( 3 );
>
>           ScmFileStatus status;
>
>           if ( line.startsWith( CHECKED_OUT_REVISION_TOKEN ) )
>           {
>               String revisionString = line.substring(
CHECKED_OUT_REVISION_TOKEN.length() + 1, line.length() - 1 );
>
>               try
>               {
>                   revision = Integer.parseInt( revisionString );
>               }
>               catch( NumberFormatException ex )
>               {
>                   // ignored
>               }
>
>               return;
>           }
>           else if ( statusString.equals( "A" ) )
>           {
>               status = ScmFileStatus.ADDED;
>           }
>           else if ( statusString.equals( "U" ) )
>           {
>               status = ScmFileStatus.UPDATED;
>           }
>           else
>           {
>               logger.info( "Unknown file status: '" + statusString +
"'." );
>
>               return;
>           }
>
>           // If the file isn't a file; don't add it.
>           if ( !new File( workingDirectory, file ).isFile() )
>           {
>               return;
>           }
>
>           checkedOutFiles.add( new ScmFile( file, status ) );
>       }
>
>



   // ----------------------------------------------------------------------
>       //
>



   // ----------------------------------------------------------------------
>
>       public List getCheckedOutFiles()
>       {
>           return checkedOutFiles;
>       }
>
>       public int getRevision()
>       {
>           return revision;
>       }
>   }
>
>
>
>   1.3       +73 -55
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/command/update/SvnUpdateCommand.java
>
>   Index: SvnUpdateCommand.java
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java
/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommand.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- SvnUpdateCommand.java 2 Nov 2004 22:24:36 -0000 1.2
>   +++ SvnUpdateCommand.java 9 Nov 2004 16:07:17 -0000 1.3
>   @@ -16,10 +16,17 @@
>     * limitations under the License.
>     */
>
>   +import java.io.File;
>   +
>    import org.apache.maven.scm.ScmException;
>   -import org.apache.maven.scm.command.update.UpdateCommand;
>   -import org.apache.maven.scm.provider.svn.command.AbstractSvnCommand;
>   -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
>   +import org.apache.maven.scm.command.update.AbstractUpdateCommand;
>   +import org.apache.maven.scm.command.update.UpdateScmResult;
>   +import org.apache.maven.scm.provider.ScmProviderRepository;
>   +import org.apache.maven.scm.provider.svn.command.SvnCommand;
>   +import
org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
>   +
>   +import org.codehaus.plexus.util.cli.CommandLineException;
>   +import org.codehaus.plexus.util.cli.CommandLineUtils;
>    import org.codehaus.plexus.util.cli.Commandline;
>
>    /**
>   @@ -27,66 +34,77 @@
>     * @version $Id$
>     */
>    public class SvnUpdateCommand
>   -    extends AbstractSvnCommand
>   -    implements UpdateCommand
>   +    extends AbstractUpdateCommand
>   +    implements SvnCommand
>    {
>   -
>   -    /* (non-Javadoc)
>   -     * @see
org.apache.maven.scm.command.AbstractCommand#getCommandLine()
>   -     */
>   -    public Commandline getCommandLine() throws ScmException
>   +    protected UpdateScmResult executeUpdateCommand(
ScmProviderRepository repo, File workingDirectory, String tag )
>   +        throws ScmException
>        {
>   - Commandline command = new Commandline();
>   +        Commandline cl = createCommandLine( (SvnScmProviderRepository)
repo, workingDirectory, tag );
>
>   - command.setExecutable("svn");
>   +        SvnUpdateConsumer consumer = new SvnUpdateConsumer(
getLogger(), workingDirectory );
>
>   - if (getWorkingDirectory() != null)
>   - {
>   - command.setWorkingDirectory(getWorkingDirectory());
>   - }
>   -
>   - SvnRepository repo = (SvnRepository)getRepository();
>   -
>   - command.createArgument().setValue("update");
>   - command.createArgument().setValue("--non-interactive");
>   - command.createArgument().setValue("-v");
>   -
>   - if (getTag() != null)
>   - {
>   - command.createArgument().setValue("-r");
>   - command.createArgument().setValue(getTag());
>   - }
>   -
>   - if (repo.getUser() != null)
>   - {
>   - command.createArgument().setValue("--username");
>   - command.createArgument().setValue(repo.getUser());
>   - }
>   - if (repo.getPassword() != null)
>   - {
>   - command.createArgument().setValue("--password");
>   - command.createArgument().setValue(repo.getPassword());
>   - }
>   +        CommandLineUtils.StringStreamConsumer stderr = new
CommandLineUtils.StringStreamConsumer();
>
>   - command.createArgument().setValue(repo.getUrl());
>   +        getLogger().info( "Executing: " + cl );
>   +        getLogger().info( "Working directory: " +
cl.getWorkingDirectory().getAbsolutePath() );
>
>   - return command;
>   -    }
>   +        int exitCode;
>
>   -    /* (non-Javadoc)
>   -     * @see org.apache.maven.scm.command.Command#getName()
>   -     */
>   -    public String getName()
>   -    {
>   -        return NAME;
>   +        try
>   +        {
>   +            exitCode = CommandLineUtils.executeCommandLine( cl,
consumer, stderr );
>   +        }
>   +        catch ( CommandLineException ex )
>   +        {
>   +            throw new ScmException( "Error while executing command.",
ex );
>   +        }
>   +
>   +        if ( exitCode != 0 )
>   +        {
>   +            return new UpdateScmResult( "The cvs command failed.",
stderr.getOutput(), false );
>   +        }
>   +
>   +        return new UpdateScmResult( consumer.getUpdatedFiles() );
>        }
>
>   -    /* (non-Javadoc)
>   -     * @see org.apache.maven.scm.command.Command#getDisplayName()
>   -     */
>   -    public String getDisplayName()
>   +
   // ----------------------------------------------------------------------
>   +    //
>   +
   // ----------------------------------------------------------------------
>   +
>   +    public static Commandline createCommandLine(
SvnScmProviderRepository repository, File workingDirectory, String tag )
>        {
>   -        return "Update";
>   -    }
>   +        Commandline cl = new Commandline();
>   +
>   +        cl.setExecutable( "svn" );
>
>   +        cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
>   +
>   +        cl.createArgument().setValue( "update" );
>   +
>   +        cl.createArgument().setValue( "--non-interactive" );
>   +
>   +        if ( tag != null )
>   +        {
>   +            cl.createArgument().setValue( "-r" );
>   +
>   +            cl.createArgument().setValue( tag );
>   +        }
>   +
>   +        if ( repository.getUser() != null )
>   +        {
>   +            cl.createArgument().setValue( "--username" );
>   +
>   +            cl.createArgument().setValue( repository.getUser() );
>   +        }
>   +
>   +        if ( repository.getPassword() != null )
>   +        {
>   +            cl.createArgument().setValue( "--password" );
>   +
>   +            cl.createArgument().setValue( repository.getPassword() );
>   +        }
>   +
>   +        return cl;
>   +    }
>    }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/command/update/SvnUpdateConsumer.java
>
>   Index: SvnUpdateConsumer.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn.command.update;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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 java.util.List;
>   import java.util.ArrayList;
>   import java.io.File;
>
>   import org.apache.maven.scm.ScmFileStatus;
>   import org.apache.maven.scm.ScmFile;
>
>   import org.codehaus.plexus.logging.Logger;
>   import org.codehaus.plexus.util.cli.StreamConsumer;
>
>   /**
>    * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
>    * @version $Id: SvnUpdateConsumer.java,v 1.1 2004/11/09 16:07:17
trygvis Exp $
>    */
>   public class SvnUpdateConsumer
>       implements StreamConsumer
>   {
>       private final static String UPDATED_TO_REVISION_TOKEN = "Updated to
revision";
>
>       private Logger logger;
>
>       private File workingDirectory;
>
>       private List updatedFiles = new ArrayList();
>
>       private int revision;
>
>



   // ----------------------------------------------------------------------
>       //
>



   // ----------------------------------------------------------------------
>
>       public SvnUpdateConsumer( Logger logger, File workingDirectory )
>       {
>           this.logger = logger;
>
>           this.workingDirectory = workingDirectory;
>       }
>
>



   // ----------------------------------------------------------------------
>       // StreamConsumer Implementation
>



   // ----------------------------------------------------------------------
>
>       public void consumeLine( String line )
>       {
>           if ( line.length() <= 3 )
>           {
>               logger.warn( "Unexpected input, the line must be at least
three characters long. Line: '" + line + "'." );
>
>               return;
>           }
>
>           String statusString = line.substring( 0, 1 );
>
>           String file = line.substring( 3 );
>
>           ScmFileStatus status;
>
>           if ( line.startsWith( UPDATED_TO_REVISION_TOKEN ) )
>           {
>               String revisionString = line.substring(
UPDATED_TO_REVISION_TOKEN.length() + 1, line.length() - 1 );
>
>               try
>               {
>                   revision = Integer.parseInt( revisionString );
>               }
>               catch( NumberFormatException ex )
>               {
>                   // ignored
>               }
>
>               return;
>           }
>           else if ( statusString.equals( "A" ) )
>           {
>               status = ScmFileStatus.ADDED;
>           }
>           else if ( statusString.equals( "U" ) )
>           {
>               status = ScmFileStatus.UPDATED;
>           }
>           else if ( statusString.equals( "D" ) )
>           {
>               status = ScmFileStatus.DELETED;
>           }
>           else
>           {
>               logger.info( "Unknown file status: '" + statusString +
"'." );
>
>               return;
>           }
>
>           // If the file isn't a file; don't add it.
>           if ( !new File( workingDirectory, file ).isFile() )
>           {
>               return;
>           }
>
>           updatedFiles.add( new ScmFile( file, status ) );
>       }
>
>       public List getUpdatedFiles()
>       {
>           return updatedFiles;
>       }
>
>       public int getRevision()
>       {
>           return revision;
>       }
>   }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apach
e/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
>
>   Index: SvnScmProviderRepository.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn.repository;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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.provider.ScmProviderRepository;
>
>   /**
>    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>    * @version $Id: SvnScmProviderRepository.java,v 1.1 2004/11/09 16:07:17
trygvis Exp $
>    */
>   public class SvnScmProviderRepository
>       extends ScmProviderRepository
>   {
>       /** */
>       private String url;
>
>       /** */
>       private String user;
>
>       /** */
>       private String password;
>
>       public SvnScmProviderRepository( String url, String user, String
password )
>       {
>           this.url = url;
>
>           this.user = user;
>
>           this.password = password;
>       }
>
>       public String getUrl()
>       {
>           return url;
>       }
>
>       public String getPassword()
>       {
>           return password;
>       }
>
>       public String getUser()
>       {
>           return user;
>       }
>   }
>
>
>
>   1.2       +22 -2
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/resources/META
-INF/plexus/components.xml
>
>   Index: components.xml
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/main/reso
urces/META-INF/plexus/components.xml,v
>   retrieving revision 1.1
>   retrieving revision 1.2
>   diff -u -r1.1 -r1.2
>   --- components.xml 20 Oct 2004 18:03:43 -0000 1.1
>   +++ components.xml 9 Nov 2004 16:07:17 -0000 1.2
>   @@ -1,9 +1,29 @@
>    <component-set>
>      <components>
>   +
>        <component>
>   -      <role>org.apache.maven.scm.Scm</role>
>   +      <role>org.apache.maven.scm.provider.ScmProvider</role>
>          <role-hint>svn</role-hint>
>   -
<implementation>org.apache.maven.scm.provider.svn.SvnScm</implementation>
>   +
<implementation>org.apache.maven.scm.provider.svn.SvnScmProvider</implementa
tion>
>   +      <requirements>
>   +        <requirement>
>   +
<role>org.apache.maven.scm.provider.svn.command.SvnCommand</role>
>   +          <field-name>commands</field-name>
>   +        </requirement>
>   +      </requirements>
>        </component>
>   +
>   +    <component>
>   +      <role>org.apache.maven.scm.provider.svn.command.SvnCommand</role>
>   +      <role-hint>check-out</role-hint>
>   +
<implementation>org.apache.maven.scm.provider.svn.command.checkout.SvnCheckO
utCommand</implementation>
>   +    </component>
>   +
>   +    <component>
>   +      <role>org.apache.maven.scm.provider.svn.command.SvnCommand</role>
>   +      <role-hint>update</role-hint>
>   +
<implementation>org.apache.maven.scm.provider.svn.command.update.SvnUpdateCo
mmand</implementation>
>   +    </component>
>   +
>      </components>
>    </component-set>
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/SvnScmProviderTest.java
>
>   Index: SvnScmProviderTest.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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.ScmTestCase;
>
>   /**
>    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>    * @version $Id: SvnScmProviderTest.java,v 1.1 2004/11/09 16:07:17
trygvis Exp $
>    */
>   public class SvnScmProviderTest
>       extends ScmTestCase
>   {
>       public void testFoo()
>       {
>       }
>   }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/SvnScmTestUtils.java
>
>   Index: SvnScmTestUtils.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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 java.io.File;
>   import java.io.FileInputStream;
>
>   import org.apache.maven.scm.ScmTestCase;
>
>   import org.codehaus.plexus.util.FileUtils;
>   import org.codehaus.plexus.util.cli.CommandLineUtils;
>   import org.codehaus.plexus.util.cli.Commandline;
>   import junit.framework.Assert;
>
>   /**
>    * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
>    * @version $Id: SvnScmTestUtils.java,v 1.1 2004/11/09 16:07:17 trygvis
Exp $
>    */
>   public abstract class SvnScmTestUtils
>   {
>       public static void initializeRepository( File repositoryRoot, File
dump )
>           throws Exception
>       {
>           if ( repositoryRoot.exists() )
>           {
>               FileUtils.deleteDirectory( repositoryRoot );
>           }
>
>           Assert.assertTrue( "Could not make repository root directory: "
+ repositoryRoot.getAbsolutePath(), repositoryRoot.mkdirs() );
>
>           ScmTestCase.execute( repositoryRoot.getParentFile(), "svnadmin",
"create " + repositoryRoot.getName() );
>
>           loadSvnDump( repositoryRoot, dump );
>       }
>
>       private static void loadSvnDump( File repositoryRoot, File dump )
>           throws Exception
>       {
>           Assert.assertTrue( "The dump file doesn't exist: " +
dump.getAbsolutePath(), dump.exists() );
>
>           Commandline cl = new Commandline();
>
>           cl.setExecutable( "svnadmin" );
>
>           cl.setWorkingDirectory(
repositoryRoot.getParentFile().getAbsolutePath() );
>
>           cl.createArgument().setValue( "load" );
>
>           cl.createArgument().setValue(
repositoryRoot.getAbsolutePath() );
>
>           CommandLineUtils.StringStreamConsumer stdout = new
CommandLineUtils.StringStreamConsumer();
>
>           CommandLineUtils.StringStreamConsumer stderr = new
CommandLineUtils.StringStreamConsumer();
>
>           int exitValue = CommandLineUtils.executeCommandLine( cl, new
FileInputStream( dump ), stdout, stderr );
>
>           if ( exitValue != 0 )
>           {
>               System.err.println(
"-----------------------------------------" );
>               System.err.println( "Command line: " + cl );
>               System.err.println( "Working directory: " +
cl.getWorkingDirectory() );
>               System.err.println(
"-----------------------------------------" );
>               System.err.println( "Standard output: " );
>               System.err.println(
"-----------------------------------------" );
>               System.err.println( stdout.getOutput() );
>               System.err.println(
"-----------------------------------------" );
>
>               System.err.println( "Standard error: " );
>               System.err.println(
"-----------------------------------------" );
>               System.err.println( stderr.getOutput() );
>               System.err.println(
"-----------------------------------------" );
>           }
>
>           if ( exitValue != 0 )
>           {
>               Assert.fail( "Exit value wasn't 0, was:" + exitValue );
>           }
>       }
>   }
>
>
>
>   1.3       +29 -159
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/command/changelog/SvnChangeLogCommandTest.java
>
>   Index: SvnChangeLogCommandTest.java
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java
/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommandTest
.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- SvnChangeLogCommandTest.java 2 Nov 2004 22:24:37 -0000 1.2
>   +++ SvnChangeLogCommandTest.java 9 Nov 2004 16:07:17 -0000 1.3
>   @@ -16,185 +16,55 @@
>     * limitations under the License.
>     */
>
>   +import java.io.File;
>    import java.util.Calendar;
>    import java.util.Date;
>
>   -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
>   -import org.codehaus.plexus.util.cli.Commandline;
>   +import org.apache.maven.scm.ScmTestCase;
>   +import
org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
>   +import org.apache.maven.scm.repository.ScmRepository;
>
>   -import junit.framework.TestCase;
>   +import org.codehaus.plexus.util.cli.Commandline;
>
>    /**
>     * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>     * @version $Id$
>     */
>   -public class SvnChangeLogCommandTest extends TestCase
>   +public class SvnChangeLogCommandTest
>   +    extends ScmTestCase
>    {
>   -    private SvnChangeLogCommand instance;
>   -    private String baseDir;
>   -
>   -    /**
>   -     * @param testName
>   -     */
>   -    public SvnChangeLogCommandTest(String testName)
>   +    public void testCommandLine()
>   +        throws Exception
>        {
>   -        super(testName);
>   -    }
>   +        Calendar cal = Calendar.getInstance();
>
>   -    /* (non-Javadoc)
>   -     * @see junit.framework.TestCase#setUp()
>   -     */
>   -    protected void setUp() throws Exception
>   -    {
>   -        baseDir = System.getProperty("basedir");
>   -        assertNotNull("The system property basedir was not defined.",
baseDir);
>   -        instance = new SvnChangeLogCommand();
>   -    }
>   +        cal.set(2003, 8, 10);
>
>   -    public void testGetCommandWithEndDate()
>   -    {
>   -        try
>   -        {
>   -            SvnRepository repo = new SvnRepository();
>   -            repo.setDelimiter(":");
>   -            repo.setConnection("http://foo.com/svn/trunk");
>   -            instance.setRepository(repo);
>   -            instance.setRange(30);
>   -            Calendar cal = Calendar.getInstance();
>   -            cal.set(2003, 8, 10);
>   -            Date startDate = cal.getTime();
>   -            instance.setStartDate(startDate);
>   -            cal.set(2003, 9, 10);
>   -            Date endDate = cal.getTime();
>   -            instance.setEndDate(endDate);
>   -            Commandline cl = instance.getCommandLine();
>   -            System.out.println(cl.toString());
>   -            assertEquals(
>   -                "svn log --non-interactive -v -r \"{2003/09/10
GMT}:{2003/10/10 GMT}\" http://foo.com/svn/trunk",
>   -                cl.toString());
>   -        }
>   -        catch (Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   -    }
>   +        Date startDate = cal.getTime();
>
>   -    public void testGetCommandWithoutEndDate()
>   -    {
>   -        try
>   -        {
>   -            SvnRepository repo = new SvnRepository();
>   -            repo.setDelimiter(":");
>   -            repo.setConnection("http://foo.com/svn/trunk");
>   -            instance.setRepository(repo);
>   -            Calendar cal = Calendar.getInstance();
>   -            cal.set(2003, 8, 10);
>   -            Date startDate = cal.getTime();
>   -            instance.setStartDate(startDate);
>   -            Commandline cl = instance.getCommandLine();
>   -            System.out.println(cl.toString());
>   -            assertEquals(
>   -                "svn log --non-interactive -v -r \"{2003/09/10
GMT}:HEAD\" http://foo.com/svn/trunk",
>   -                cl.toString());
>   -        }
>   -        catch (Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   -    }
>   +        cal.set(2003, 9, 10);
>
>   -    public void testGetCommandWithBranchOrTag()
>   -    {
>   -        try
>   -        {
>   -            SvnRepository repo = new SvnRepository();
>   -            repo.setDelimiter(":");
>   -            repo.setConnection("anonymous@http://foo.com/svn/trunk");
>   -            repo.setPassword("passwd");
>   -            instance.setRepository(repo);
>   -            instance.setBranch("3");
>   -            instance.setWorkingDirectory(baseDir);
>   -            Commandline cl = instance.getCommandLine();
>   -            System.out.println(cl.toString());
>   -            assertEquals(
>   -                "svn log --non-interactive -v -r 3 --username
anonymous --password passwd http://foo.com/svn/trunk",
>   -                cl.toString());
>   -        }
>   -        catch (Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   -    }
>   +        Date endDate = cal.getTime();
>
>   -    public void testGetCommandWithoutBranchOrTag()
>   -    {
>   -        try
>   -        {
>   -            SvnRepository repo = new SvnRepository();
>   -            repo.setDelimiter(":");
>   -            repo.setConnection("anonymous@http://foo.com/svn/trunk");
>   -            repo.setPassword("passwd");
>   -            instance.setRepository(repo);
>   -            instance.setWorkingDirectory(baseDir);
>   -            Commandline cl = instance.getCommandLine();
>   -            System.out.println(cl.toString());
>   -            assertEquals(
>   -                "svn log --non-interactive -v --username
anonymous --password passwd http://foo.com/svn/trunk",
>   -                cl.toString());
>   -        }
>   -        catch (Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   +        testCommandLine( "scm:svn:http://foo.com/svn/trunk", null,
startDate, endDate,
>   +                         "svn log --non-interactive -v -r \"{2003/09/10
GMT}:{2003/10/10 GMT}\" http://foo.com/svn/trunk" );
>        }
>
>   -    public void testGetDisplayNameName()
>   -    {
>   -        try
>   -        {
>   -            assertEquals("Changelog", instance.getDisplayName());
>   -        }
>   -        catch(Exception e)
>   -        {
>   -            fail();
>   -        }
>   -    }
>   +
   // ----------------------------------------------------------------------
>   +    //
>   +
   // ----------------------------------------------------------------------
>
>   -    public void testGetName()
>   +    private void testCommandLine( String scmUrl, String tag, Date
startDate, Date endDate, String commandLine )
>   +        throws Exception
>        {
>   -        try
>   -        {
>   -            assertEquals("changelog", instance.getName());
>   -        }
>   -        catch(Exception e)
>   -        {
>   -            fail();
>   -        }
>   -    }
>   +        File workingDirectory = getTestFile(
"target/svn-update-command-test" );
>
>   -    public void testConsumer()
>   -    {
>   -        try
>   -        {
>   -            SvnChangeLogConsumer cons = new SvnChangeLogConsumer();
>   -            instance.setConsumer(cons);
>   -            assertEquals(cons, instance.getConsumer());
>   -        }
>   -        catch(Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   -    }
>   +        ScmRepository repository = getScmManager().makeScmRepository(
scmUrl );
>
>   -    public void testWrongConsumer()
>   -    {
>   -        try
>   -        {
>   -            instance.setConsumer(null);
>   -            fail();
>   -        }
>   -        catch(Exception e)
>   -        {
>   -        }
>   +        SvnScmProviderRepository svnRepository =
(SvnScmProviderRepository) repository.getProviderRepository();
>   +
>   +        Commandline cl = SvnChangeLogCommand.createCommandLine(
svnRepository, workingDirectory, tag, startDate, endDate );
>   +
>   +        assertEquals( commandLine, cl.toString() );
>        }
>    }
>
>
>
>   1.3       +5 -92
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/command/changelog/SvnChangeLogConsumerTest.java
>
>   Index: SvnChangeLogConsumerTest.java
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java
/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogConsumerTes
t.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- SvnChangeLogConsumerTest.java 2 Nov 2004 22:24:38 -0000 1.2
>   +++ SvnChangeLogConsumerTest.java 9 Nov 2004 16:07:17 -0000 1.3
>   @@ -16,103 +16,16 @@
>     * limitations under the License.
>     */
>
>   -import java.io.BufferedReader;
>   -import java.io.FileInputStream;
>   -import java.io.InputStreamReader;
>   -import java.text.SimpleDateFormat;
>   -import java.util.ArrayList;
>   -import java.util.Iterator;
>   -import java.util.List;
>   -import java.util.Locale;
>   -
>   -import org.apache.maven.scm.command.changelog.ChangeLogEntry;
>   -
>   -import junit.framework.TestCase;
>   +import org.apache.maven.scm.ScmTestCase;
>
>    /**
>     * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>     * @version $Id$
>     */
>   -public class SvnChangeLogConsumerTest extends TestCase
>   +public class SvnChangeLogConsumerTest
>   +    extends ScmTestCase
>    {
>   - /** Date formatter */
>   - private static final SimpleDateFormat DATE =
>   - new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
>   -
>   - /** the {@link SvnChangeLogConsumer} used for testing */
>   - private SvnChangeLogConsumer instance;
>   - /** file with test results to check against */
>   - private String testFile;
>   -
>   -    /**
>   -     * @param testName
>   -     */
>   -    public SvnChangeLogConsumerTest(String testName)
>   +    public void testFoo()
>        {
>   -        super(testName);
>        }
>   -
>   - /**
>   - * Initialize per test data
>   - * @throws Exception when there is an unexpected problem
>   - */
>   - public void setUp() throws Exception
>   - {
>   - String baseDir = System.getProperty("basedir");
>   - assertNotNull("The system property basedir was not defined.",
baseDir);
>   - testFile = baseDir + "/src/test/resources/svn/changelog/svnlog.txt";
>   - instance = new SvnChangeLogConsumer();
>   - }
>   -
>   - /**
>   - * Test of parse method
>   - * @throws Exception when there is an unexpected problem
>   - */
>   - public void testParse() throws Exception
>   - {
>   - FileInputStream fis = new FileInputStream(testFile);
>   - BufferedReader in = new BufferedReader(new InputStreamReader(fis));
>   - String s = in.readLine();
>   - while ( s != null )
>   - {
>   - instance.consumeLine( s );
>   - s = in.readLine();
>   - }
>   -
>   - List entries = new ArrayList(instance.getModifications());
>   - assertEquals("Wrong number of entries returned", 12, entries.size());
>   - ChangeLogEntry entry = null;
>   - for (Iterator i = entries.iterator(); i.hasNext(); )
>   - {
>   - entry = (ChangeLogEntry) i.next();
>   - assertTrue("ChangeLogEntry erroneously picked up",
>   - entry.toString().indexOf("ChangeLogEntry.java") == -1);
>   - }
>   -
>   - entry = (ChangeLogEntry) entries.get(0);
>   - assertEquals("Entry 0 was parsed incorrectly",
>   - "kaz\n" +
>   - DATE.parse("Mon Aug 26 14:33:26 EDT 2002") + "\n" +
>   - "[/poolserver/trunk/build.xml, 15, " +
>   - "/poolserver/trunk/project.properties, 15]\n" +
>   - "Minor formatting changes.\n\n",
>   - entry.toString());
>   -
>   - entry = (ChangeLogEntry) entries.get(6);
>   - assertEquals("Entry 6 was parsed incorrectly",
>   - "kaz\n" +
>   - DATE.parse("Fri Aug 23 11:11:52 EDT 2002") + "\n" +
>   - "[/poolserver/trunk/build.xml, 9]\n" +
>   - "Testing script out again ...\n\n",
>   - entry.toString());
>   -
>   - entry = (ChangeLogEntry) entries.get(8);
>   - assertEquals("Entry 8 was parsed incorrectly",
>   - "pete\n" +
>   - DATE.parse("Fri Aug 23 11:03:39 EDT 2002") + "\n" +
>   - "[/poolserver/trunk/build.xml, 7]\n" +
>   - "Reformatted the indentation (really just an excuse to test out\n" +
>   - "subversion).\n\n",
>   - entry.toString());
>   - }
>    }
>
>
>
>   1.3       +35 -79
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/command/checkout/SvnCheckOutCommandTest.java
>
>   Index: SvnCheckOutCommandTest.java
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java
/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommandTest.j
ava,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- SvnCheckOutCommandTest.java 2 Nov 2004 22:24:39 -0000 1.2
>   +++ SvnCheckOutCommandTest.java 9 Nov 2004 16:07:17 -0000 1.3
>   @@ -16,102 +16,58 @@
>     * limitations under the License.
>     */
>
>   -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
>   -import org.codehaus.plexus.util.cli.Commandline;
>   +import java.io.File;
>   +
>   +import org.apache.maven.scm.ScmTestCase;
>   +import org.apache.maven.scm.manager.ScmManager;
>   +import
org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
>   +import org.apache.maven.scm.repository.ScmRepository;
>
>   -import junit.framework.TestCase;
>   +import org.codehaus.plexus.util.cli.Commandline;
>
>    /**
>     * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>     * @version $Id$
>     */
>   -public class SvnCheckOutCommandTest extends TestCase
>   +public class SvnCheckOutCommandTest
>   +    extends ScmTestCase
>    {
>   -    private SvnCheckOutCommand instance;
>   -    private String baseDir;
>   -
>   -    /**
>   -      * @param testName
>   -      */
>   -    public SvnCheckOutCommandTest(String testName)
>   +    public void testCommandLineWithoutTag()
>   +        throws Exception
>        {
>   -        super(testName);
>   +        testCommandLine( getScmManager(),
"scm:svn:http://foo.com/svn/trunk", null,
>   +                         "svn checkout --non-interactive
http://foo.com/svn/trunk" );
>        }
>
>   -    /* (non-Javadoc)
>   -     * @see junit.framework.TestCase#setUp()
>   -     */
>   -    protected void setUp() throws Exception
>   +    public void testCommandLineWithEmptyTag()
>   +        throws Exception
>        {
>   -        baseDir = System.getProperty("basedir");
>   -        assertNotNull("The system property basedir was not defined.",
baseDir);
>   -        instance = new SvnCheckOutCommand();
>   +        testCommandLine( getScmManager(),
"scm:svn:http://foo.com/svn/trunk", "",
>   +                         "svn checkout --non-interactive -r
http://foo.com/svn/trunk" );
>        }
>
>   -    public void testGetCommand()
>   +    public void testCommandLineWithTag()
>   +        throws Exception
>        {
>   -        try
>   -        {
>   -            SvnRepository repo = new SvnRepository();
>   -            repo.setDelimiter(":");
>   -            repo.setConnection("anonymous@http://foo.com/svn/trunk");
>   -            repo.setPassword("passwd");
>   -            instance.setRepository(repo);
>   -            instance.setTag("10");
>   -            Commandline cl = instance.getCommandLine();
>   -            System.out.println(cl.toString());
>   -            assertEquals(
>   -                "svn checkout --non-interactive -v -r 10 --username
anonymous --password passwd http://foo.com/svn/trunk",
>   -                cl.toString());
>   -        }
>   -        catch (Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   +        testCommandLine( getScmManager(),
"scm:svn:http://foo.com/svn/trunk", "10",
>   +                         "svn checkout --non-interactive -r 10
http://foo.com/svn/trunk" );
>        }
>
>   -    public void testGetCommand2()
>   -    {
>   -        try
>   -        {
>   -            SvnRepository repo = new SvnRepository();
>   -            repo.setDelimiter(":");
>   -            repo.setConnection("http://foo.com/svn/trunk");
>   -            instance.setRepository(repo);
>   -            instance.setWorkingDirectory(baseDir);
>   -            Commandline cl = instance.getCommandLine();
>   -            System.out.println(cl.toString());
>   -            assertEquals(
>   -                "svn checkout --non-interactive -v
http://foo.com/svn/trunk",
>   -                cl.toString());
>   -        }
>   -        catch (Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   -    }
>   +
   // ----------------------------------------------------------------------
>   +    //
>   +
   // ----------------------------------------------------------------------
>
>   -    public void testGetDisplayNameName()
>   +    private static void testCommandLine( ScmManager scmManager, String
scmUrl, String tag, String commandLine )
>   +        throws Exception
>        {
>   -        try
>   -        {
>   -            assertEquals("Check out", instance.getDisplayName());
>   -        }
>   -        catch(Exception e)
>   -        {
>   -            fail();
>   -        }
>   -    }
>   +        File workingDirectory = getTestFile(
"target/svn-update-command-test" );
>
>   -    public void testGetName()
>   -    {
>   -        try
>   -        {
>   -            assertEquals("checkout", instance.getName());
>   -        }
>   -        catch(Exception e)
>   -        {
>   -            fail();
>   -        }
>   +        ScmRepository repository = scmManager.makeScmRepository(
scmUrl );
>   +
>   +        SvnScmProviderRepository svnRepository =
(SvnScmProviderRepository) repository.getProviderRepository();
>   +
>   +        Commandline cl = SvnCheckOutCommand.createCommandLine(
svnRepository, workingDirectory, tag );
>   +
>   +        assertEquals( commandLine, cl.toString() );
>        }
>    }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/command/checkout/SvnCheckOutCommandTckTest.java
>
>   Index: SvnCheckOutCommandTckTest.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn.command.checkout;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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.tck.command.checkout.CheckOutCommandTckTest;
>   import org.apache.maven.scm.provider.svn.SvnScmTestUtils;
>
>   /**
>    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>    * @version $Id: SvnCheckOutCommandTckTest.java,v 1.1 2004/11/09
16:07:17 trygvis Exp $
>    */
>   public class SvnCheckOutCommandTckTest
>       extends CheckOutCommandTckTest
>   {
>       public String getScmUrl()
>           throws Exception
>       {
>           return "scm:svn:file://" +
getRepositoryRoot().getAbsolutePath();
>       }
>
>       public void initRepo()
>           throws Exception
>       {
>           SvnScmTestUtils.initializeRepository( getRepositoryRoot(),
getTestFile( "src/test/resources/tck/checkout.dump" ) );
>       }
>   }
>
>
>
>   1.3       +56 -77
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java
>
>   Index: SvnUpdateCommandTest.java
>   ===================================================================
>   RCS file:
/home/cvs/maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java
/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java,
v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- SvnUpdateCommandTest.java 2 Nov 2004 22:24:39 -0000 1.2
>   +++ SvnUpdateCommandTest.java 9 Nov 2004 16:07:17 -0000 1.3
>   @@ -16,102 +16,81 @@
>     * limitations under the License.
>     */
>
>   -import org.apache.maven.scm.provider.svn.repository.SvnRepository;
>   -import org.codehaus.plexus.util.cli.Commandline;
>   +import java.io.File;
>   +
>   +import org.apache.maven.scm.ScmTestCase;
>   +import
org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
>   +import org.apache.maven.scm.repository.ScmRepository;
>
>   -import junit.framework.TestCase;
>   +import org.codehaus.plexus.util.cli.Commandline;
>
>    /**
>     * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>     * @version $Id$
>     */
>   -public class SvnUpdateCommandTest extends TestCase
>   +public class SvnUpdateCommandTest
>   +    extends ScmTestCase
>    {
>   -    private SvnUpdateCommand instance;
>   -    private String baseDir;
>   -
>   -    /**
>   -     * @param testName
>   -     */
>   -    public SvnUpdateCommandTest(String testName)
>   +    public void testCommandLineWithEmptyTag()
>   +        throws Exception
>        {
>   -        super(testName);
>   +        testCommandLine( "scm:svn:http://foo.com/svn/trunk", "",
>   +                         "svn update --non-interactive -r " );
>        }
>
>   -    /* (non-Javadoc)
>   -     * @see junit.framework.TestCase#setUp()
>   -     */
>   -    protected void setUp() throws Exception
>   -    {
>   -        baseDir = System.getProperty("basedir");
>   -        assertNotNull("The system property basedir was not defined.",
baseDir);
>   -        instance = new SvnUpdateCommand();
>   +    public void testCommandLineWithoutTag()
>   +        throws Exception
>   +    {
>   +        testCommandLine( "scm:svn:http://foo.com/svn/trunk", null,
>   +                         "svn update --non-interactive" );
>        }
>
>   -    public void testGetCommand()
>   +    public void testCommandLineTag()
>   +        throws Exception
>        {
>   -        try
>   -        {
>   -            SvnRepository repo = new SvnRepository();
>   -            repo.setDelimiter(":");
>   -            repo.setConnection("anonymous@http://foo.com/svn/trunk");
>   -            repo.setPassword("passwd");
>   -            instance.setRepository(repo);
>   -            instance.setTag("10");
>   -            Commandline cl = instance.getCommandLine();
>   -            System.out.println(cl.toString());
>   -            assertEquals(
>   -                "svn update --non-interactive -v -r 10 --username
anonymous --password passwd http://foo.com/svn/trunk",
>   -                cl.toString());
>   -        }
>   -        catch (Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   +        testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk",
"10",
>   +                         "svn update --non-interactive -r 10 --username
anonymous" );
>        }
>
>   -    public void testGetCommand2()
>   +    public void testCommandLineWithUsernameTag()
>   +        throws Exception
>        {
>   -        try
>   -        {
>   -            SvnRepository repo = new SvnRepository();
>   -            repo.setDelimiter(":");
>   -            repo.setConnection("http://foo.com/svn/trunk");
>   -            instance.setRepository(repo);
>   -            instance.setWorkingDirectory(baseDir);
>   -            Commandline cl = instance.getCommandLine();
>   -            System.out.println(cl.toString());
>   -            assertEquals(
>   -                "svn update --non-interactive -v
http://foo.com/svn/trunk",
>   -                cl.toString());
>   -        }
>   -        catch (Exception e)
>   -        {
>   -            fail(e.getMessage());
>   -        }
>   +       testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk",
"10",
>   +                        "svn update --non-interactive -r 10 --username
anonymous" );
>        }
>   -
>   -    public void testGetDisplayNameName()
>   +/*
>   +    public void testCommandLineWithTagAndAuth()
>   +        throws Exception
>        {
>   -        try
>   -        {
>   -            assertEquals("Update", instance.getDisplayName());
>   -        }
>   -        catch(Exception e)
>   -        {
>   -            fail();
>   -        }
>   +        File workingDirectory = getTestFile(
"target/svn-update-command-test" );
>   +
>   +        String tag = "10";
>   +
>   +        ScmRepository repository = getScmManager().makeScmRepository(
"scm:svn:anonymous@http://foo.com/svn/trunk" );
>   +
>   +        SvnScmProviderRepository svnRepository =
(SvnScmProviderRepository) repository.getProviderRepository();
>   +
>   +        Commandline cl = SvnUpdateCommand.createCommandLine(
workingDirectory, tag, svnRepository );
>   +
>   +        assertEquals( "svn update --non-interactive -r 10 --username
anonymous --password passwd", cl.toString() );
>        }
>   +*/
>   +
>   +
   // ----------------------------------------------------------------------
>   +    //
>   +
   // ----------------------------------------------------------------------
>
>   -    public void testGetName()
>   +    private void testCommandLine( String scmUrl, String tag, String
commandLine )
>   +        throws Exception
>        {
>   -        try
>   -        {
>   -            assertEquals("update", instance.getName());
>   -        }
>   -        catch(Exception e)
>   -        {
>   -            fail();
>   -        }
>   +        File workingDirectory = getTestFile(
"target/svn-update-command-test" );
>   +
>   +        ScmRepository repository = getScmManager().makeScmRepository(
scmUrl );
>   +
>   +        SvnScmProviderRepository svnRepository =
(SvnScmProviderRepository) repository.getProviderRepository();
>   +
>   +        Commandline cl = SvnUpdateCommand.createCommandLine(
svnRepository, workingDirectory, tag );
>   +
>   +        assertEquals( commandLine, cl.toString() );
>        }
>    }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/command/update/SvnUpdateCommandTckTest.java
>
>   Index: SvnUpdateCommandTckTest.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn.command.update;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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 java.io.File;
>
>   import org.apache.maven.scm.tck.command.update.UpdateCommandTckTest;
>   import org.apache.maven.scm.repository.ScmRepository;
>   import org.apache.maven.scm.provider.svn.SvnScmTestUtils;
>
>   /**
>    * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
>    * @version $Id: SvnUpdateCommandTckTest.java,v 1.1 2004/11/09 16:07:17
trygvis Exp $
>    */
>   public class SvnUpdateCommandTckTest
>       extends UpdateCommandTckTest
>   {
>       private final static File updateDump = getTestFile(
"src/test/resources/tck/update.dump" );
>
>       public String getScmUrl()
>           throws Exception
>       {
>           return "scm:svn:file://" + getRepositoryRoot();
>       }
>
>       public void initRepo()
>           throws Exception
>       {
>           SvnScmTestUtils.initializeRepository( getRepositoryRoot(),
updateDump );
>       }
>
>       public void checkOut( File workingDirectory )
>           throws Exception
>       {
>           execute( workingDirectory.getParentFile(), "svn", "checkout
file://" + getRepositoryRoot() + " " + workingDirectory.getName() );
>       }
>
>       public void addFileToRepository( File workingDirectory, String
file )
>           throws Exception
>       {
>           execute( workingDirectory, "svn", "add " + file );
>       }
>
>       public void addDirectoryToRepository( File workingDirectory, String
directory )
>           throws Exception
>       {
>           execute( workingDirectory, "svn", "add " + directory );
>       }
>
>       public void commit( File workingDirectory, ScmRepository
repository )
>           throws Exception
>       {
>           execute( workingDirectory, "svn", "commit -m
'' --non-interactive" );
>       }
>   }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apach
e/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java
>
>   Index: SvnScmProviderRepositoryTest.java
>   ===================================================================
>   package org.apache.maven.scm.provider.svn.repository;
>
>   /*
>    * Copyright 2003-2004 The Apache Software Foundation.
>    *
>    * Licensed 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.ScmTestCase;
>   import org.apache.maven.scm.repository.ScmRepository;
>   import org.apache.maven.scm.manager.ScmManager;
>
>   /**
>    * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
>    * @version $Id: SvnScmProviderRepositoryTest.java,v 1.1 2004/11/09
16:07:17 trygvis Exp $
>    */
>   public class SvnScmProviderRepositoryTest
>       extends ScmTestCase
>   {
>       private ScmManager scmManager;
>
>       public void setUp()
>           throws Exception
>       {
>           super.setUp();
>
>           scmManager = getScmManager();
>       }
>
>       public void testLegalFileURL()
>           throws Exception
>       {
>           testUrl( "file:///tmp/repo" );
>       }
>
>       public void testLegalHttpURL()
>           throws Exception
>       {
>           testUrl( "http://subversion.tigris.org" );
>       }
>
>       public void testLegalHttpsURL()
>           throws Exception
>       {
>           testUrl( "https://subversion.tigris.org" );
>       }
>
>       public void testLegalSvnURL()
>           throws Exception
>       {
>           testUrl( "svn://subversion.tigris.org" );
>       }
>
>       public void testLegalSvnPlusSshURL()
>           throws Exception
>       {
>           testUrl( "svn+ssh://subversion.tigris.org" );
>       }
>
>



   // ----------------------------------------------------------------------
>       //
>



   // ----------------------------------------------------------------------
>
>       private void testUrl( String url )
>           throws Exception
>       {
>           ScmRepository repository = scmManager.makeScmRepository(
"scm:svn:" + url );
>
>           assertNotNull( "ScmManager.makeScmRepository() returned null",
repository );
>
>           assertNotNull( "The provider repository was null.",
repository.getProviderRepository() );
>
>           assertTrue( "The SCM Repository isn't a " +
SvnScmProviderRepository.class.getName() + ".",
repository.getProviderRepository() instanceof SvnScmProviderRepository );
>       }
>   }
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/chec
kout.dump
>
>   Index: checkout.dump
>   ===================================================================
>   SVN-fs-dump-format-version: 2
>
>   UUID: 32329737-c6e7-0310-acdd-fde163f827b2
>
>   Revision-number: 0
>   Prop-content-length: 56
>   Content-length: 56
>
>   K 8
>   svn:date
>   V 27
>   2004-10-31T22:57:32.330365Z
>   PROPS-END
>
>   Revision-number: 1
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:00:31.108377Z
>   PROPS-END
>
>   Node-path: file
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 0
>   Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
>   Content-length: 10
>
>   PROPS-END
>
>
>   Revision-number: 2
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:01:07.427469Z
>   PROPS-END
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 0
>   Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
>   Content-length: 10
>
>   PROPS-END
>
>
>   Revision-number: 3
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:01:47.729957Z
>   PROPS-END
>
>   Node-path: file_1
>   Node-kind: file
>   Node-action: add
>   Node-copyfrom-rev: 1
>   Node-copyfrom-path: file
>
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 17
>   Text-content-md5: 53adcdeed5651fafe46fbba6b5e87d02
>   Content-length: 17
>
>   adding some crap
>
>
>   Node-path: file
>   Node-action: delete
>
>
>   Revision-number: 4
>   Prop-content-length: 118
>   Content-length: 118
>
>   K 7
>   svn:log
>   V 16
>   o My log message
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-01T07:34:03.254229Z
>   PROPS-END
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 102
>   Text-content-md5: 12db6e90dbaccb1e1c793465d0cd2573
>   Content-length: 102
>
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>
>
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck/
checkout.dump
>
>   Index: checkout.dump
>   ===================================================================
>   SVN-fs-dump-format-version: 2
>
>   UUID: 32329737-c6e7-0310-acdd-fde163f827b2
>
>   Revision-number: 0
>   Prop-content-length: 56
>   Content-length: 56
>
>   K 8
>   svn:date
>   V 27
>   2004-10-31T22:57:32.330365Z
>   PROPS-END
>
>   Revision-number: 1
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:00:31.108377Z
>   PROPS-END
>
>   Node-path: file
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 0
>   Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
>   Content-length: 10
>
>   PROPS-END
>
>
>   Revision-number: 2
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:01:07.427469Z
>   PROPS-END
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 0
>   Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
>   Content-length: 10
>
>   PROPS-END
>
>
>   Revision-number: 3
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:01:47.729957Z
>   PROPS-END
>
>   Node-path: file_1
>   Node-kind: file
>   Node-action: add
>   Node-copyfrom-rev: 1
>   Node-copyfrom-path: file
>
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 17
>   Text-content-md5: 53adcdeed5651fafe46fbba6b5e87d02
>   Content-length: 17
>
>   adding some crap
>
>
>   Node-path: file
>   Node-action: delete
>
>
>   Revision-number: 4
>   Prop-content-length: 118
>   Content-length: 118
>
>   K 7
>   svn:log
>   V 16
>   o My log message
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-01T07:34:03.254229Z
>   PROPS-END
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 102
>   Text-content-md5: 12db6e90dbaccb1e1c793465d0cd2573
>   Content-length: 102
>
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>
>
>   Revision-number: 5
>   Prop-content-length: 127
>   Content-length: 127
>
>   K 7
>   svn:log
>   V 25
>   o Making TCK update dump.
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-03T09:40:38.812597Z
>   PROPS-END
>
>   Node-path: pom.xml
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 8
>   Text-content-md5: bb4d26f6cff04ea8d4453055155aa4ae
>   Content-length: 18
>
>   PROPS-END
>   pom.xml
>
>
>   Node-path: readme.txt
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 11
>   Text-content-md5: 2f4e912cdd8e4daf724d86c85100c234
>   Content-length: 21
>
>   PROPS-END
>   readme.txt
>
>
>   Node-path: src
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/main
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/main/java
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/main/java/Application.java
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 17
>   Text-content-md5: f9c80174d0aceb15241396719d3d8ee0
>   Content-length: 27
>
>   PROPS-END
>   Application.java
>
>
>   Node-path: src/test
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/test/java
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/test/java/Test.java
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 10
>   Text-content-md5: 2b67cb187cfebc6556a9ff00dd2a73c9
>   Content-length: 20
>
>   PROPS-END
>   Test.java
>
>
>   Node-path: src/test/resources
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: file_1
>   Node-action: delete
>
>
>   Node-path: file_2
>   Node-action: delete
>
>
>   Revision-number: 6
>   Prop-content-length: 135
>   Content-length: 135
>
>   K 7
>   svn:log
>   V 33
>   o Making TCK update dump, take 2.
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-03T09:55:45.739689Z
>   PROPS-END
>
>   Node-path: pom.xml
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 9
>   Text-content-md5: ab43bf43c516ba05e7ea14237861c101
>   Content-length: 9
>
>   /pom.xml
>
>
>   Node-path: readme.txt
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 12
>   Text-content-md5: 2c15d78f5fc4223fccc94031588aee97
>   Content-length: 12
>
>   /readme.txt
>
>
>   Node-path: src/main/java/Application.java
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 32
>   Text-content-md5: e0b1aa4c95b4211d51a817c43f6a0070
>   Content-length: 32
>
>   /src/main/java/Application.java
>
>
>   Node-path: src/test/java/Test.java
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 25
>   Text-content-md5: 2f8ba3ce8330bf354a73b4f243013e98
>   Content-length: 25
>
>   /src/test/java/Test.java
>
>
>   Revision-number: 7
>   Prop-content-length: 135
>   Content-length: 135
>
>   K 7
>   svn:log
>   V 33
>   o Making TCK update dump, take 3.
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-03T09:57:42.448827Z
>   PROPS-END
>
>   Node-path: pom.xml
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 8
>   Text-content-md5: eab74e9a6a0a7669ca7a253f0f0ed832
>   Content-length: 8
>
>   /pom.xml
>
>   Node-path: readme.txt
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 11
>   Text-content-md5: 74088de3393a22eb8d6abc87369fb21a
>   Content-length: 11
>
>   /readme.txt
>
>   Node-path: src/main/java/Application.java
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 31
>   Text-content-md5: 1486dc4cd4c38fc1d4c2b4ae40f87a3e
>   Content-length: 31
>
>   /src/main/java/Application.java
>
>   Node-path: src/test/java/Test.java
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 24
>   Text-content-md5: 197e3f681c57ea737fdd1b73e83509b1
>   Content-length: 24
>
>   /src/test/java/Test.java
>
>
>
>
>   1.1
maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck/
update.dump
>
>   Index: update.dump
>   ===================================================================
>   SVN-fs-dump-format-version: 2
>
>   UUID: 32329737-c6e7-0310-acdd-fde163f827b2
>
>   Revision-number: 0
>   Prop-content-length: 56
>   Content-length: 56
>
>   K 8
>   svn:date
>   V 27
>   2004-10-31T22:57:32.330365Z
>   PROPS-END
>
>   Revision-number: 1
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:00:31.108377Z
>   PROPS-END
>
>   Node-path: file
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 0
>   Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
>   Content-length: 10
>
>   PROPS-END
>
>
>   Revision-number: 2
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:01:07.427469Z
>   PROPS-END
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 0
>   Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
>   Content-length: 10
>
>   PROPS-END
>
>
>   Revision-number: 3
>   Prop-content-length: 101
>   Content-length: 101
>
>   K 7
>   svn:log
>   V 0
>
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-10-31T23:01:47.729957Z
>   PROPS-END
>
>   Node-path: file_1
>   Node-kind: file
>   Node-action: add
>   Node-copyfrom-rev: 1
>   Node-copyfrom-path: file
>
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 17
>   Text-content-md5: 53adcdeed5651fafe46fbba6b5e87d02
>   Content-length: 17
>
>   adding some crap
>
>
>   Node-path: file
>   Node-action: delete
>
>
>   Revision-number: 4
>   Prop-content-length: 118
>   Content-length: 118
>
>   K 7
>   svn:log
>   V 16
>   o My log message
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-01T07:34:03.254229Z
>   PROPS-END
>
>   Node-path: file_2
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 102
>   Text-content-md5: 12db6e90dbaccb1e1c793465d0cd2573
>   Content-length: 102
>
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>   adding some crap
>
>
>   Revision-number: 5
>   Prop-content-length: 127
>   Content-length: 127
>
>   K 7
>   svn:log
>   V 25
>   o Making TCK update dump.
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-03T09:40:38.812597Z
>   PROPS-END
>
>   Node-path: pom.xml
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 8
>   Text-content-md5: bb4d26f6cff04ea8d4453055155aa4ae
>   Content-length: 18
>
>   PROPS-END
>   pom.xml
>
>
>   Node-path: readme.txt
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 11
>   Text-content-md5: 2f4e912cdd8e4daf724d86c85100c234
>   Content-length: 21
>
>   PROPS-END
>   readme.txt
>
>
>   Node-path: src
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/main
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/main/java
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/main/java/Application.java
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 17
>   Text-content-md5: f9c80174d0aceb15241396719d3d8ee0
>   Content-length: 27
>
>   PROPS-END
>   Application.java
>
>
>   Node-path: src/test
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/test/java
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: src/test/java/Test.java
>   Node-kind: file
>   Node-action: add
>   Prop-content-length: 10
>   Text-content-length: 10
>   Text-content-md5: 2b67cb187cfebc6556a9ff00dd2a73c9
>   Content-length: 20
>
>   PROPS-END
>   Test.java
>
>
>   Node-path: src/test/resources
>   Node-kind: dir
>   Node-action: add
>   Prop-content-length: 10
>   Content-length: 10
>
>   PROPS-END
>
>
>   Node-path: file_1
>   Node-action: delete
>
>
>   Node-path: file_2
>   Node-action: delete
>
>
>   Revision-number: 6
>   Prop-content-length: 135
>   Content-length: 135
>
>   K 7
>   svn:log
>   V 33
>   o Making TCK update dump, take 2.
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-03T09:55:45.739689Z
>   PROPS-END
>
>   Node-path: pom.xml
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 9
>   Text-content-md5: ab43bf43c516ba05e7ea14237861c101
>   Content-length: 9
>
>   /pom.xml
>
>
>   Node-path: readme.txt
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 12
>   Text-content-md5: 2c15d78f5fc4223fccc94031588aee97
>   Content-length: 12
>
>   /readme.txt
>
>
>   Node-path: src/main/java/Application.java
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 32
>   Text-content-md5: e0b1aa4c95b4211d51a817c43f6a0070
>   Content-length: 32
>
>   /src/main/java/Application.java
>
>
>   Node-path: src/test/java/Test.java
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 25
>   Text-content-md5: 2f8ba3ce8330bf354a73b4f243013e98
>   Content-length: 25
>
>   /src/test/java/Test.java
>
>
>   Revision-number: 7
>   Prop-content-length: 135
>   Content-length: 135
>
>   K 7
>   svn:log
>   V 33
>   o Making TCK update dump, take 3.
>   K 10
>   svn:author
>   V 7
>   trygvis
>   K 8
>   svn:date
>   V 27
>   2004-11-03T09:57:42.448827Z
>   PROPS-END
>
>   Node-path: pom.xml
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 8
>   Text-content-md5: eab74e9a6a0a7669ca7a253f0f0ed832
>   Content-length: 8
>
>   /pom.xml
>
>   Node-path: readme.txt
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 11
>   Text-content-md5: 74088de3393a22eb8d6abc87369fb21a
>   Content-length: 11
>
>   /readme.txt
>
>   Node-path: src/main/java/Application.java
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 31
>   Text-content-md5: 1486dc4cd4c38fc1d4c2b4ae40f87a3e
>   Content-length: 31
>
>   /src/main/java/Application.java
>
>   Node-path: src/test/java/Test.java
>   Node-kind: file
>   Node-action: change
>   Text-content-length: 24
>   Text-content-md5: 197e3f681c57ea737fdd1b73e83509b1
>   Content-length: 24
>
>   /src/test/java/Test.java
>
>
>
>
>