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