maven-scm-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tryg...@apache.org
Subject cvs commit: maven-scm/maven-scm-providers/maven-scm-provider-svn/src/test/resources/tck checkout.dump update.dump
Date Tue, 09 Nov 2004 16:07:18 GMT
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
  
  
  
  

Mime
View raw message