You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2007/04/03 11:01:31 UTC
svn commit: r525096 - in /maven/scm/trunk:
maven-scm-api/src/main/java/org/apache/maven/scm/
maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/
maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/mave...
Author: evenisse
Date: Tue Apr 3 02:01:30 2007
New Revision: 525096
URL: http://svn.apache.org/viewvc?view=rev&rev=525096
Log:
[SCM-243] Support more statuses in svn status consumer
Modified:
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java?view=diff&rev=525096&r1=525095&r2=525096
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java Tue Apr 3 02:01:30 2007
@@ -52,6 +52,11 @@
public static final ScmFileStatus MODIFIED = new ScmFileStatus( "modified" );
/**
+ * The file is missing in the working tree.
+ */
+ public static final ScmFileStatus MISSING = new ScmFileStatus( "missing" );
+
+ /**
* File from working tree is checked into the repository
*/
public final static ScmFileStatus CHECKED_IN = new ScmFileStatus( "checked-in" );
Modified: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java?view=diff&rev=525096&r1=525095&r2=525096
==============================================================================
--- maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java (original)
+++ maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java Tue Apr 3 02:01:30 2007
@@ -69,7 +69,7 @@
ScmFile file = (ScmFile) iter.next();
// right align all of the statuses
- getLog().info( StringUtils.leftPad( file.getStatus().toString(), maxLen ) + " " +
+ getLog().info( StringUtils.leftPad( file.getStatus().toString(), maxLen ) + " status for " +
getRelativePath( baseDir, file.getPath() ) );
}
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java?view=diff&rev=525096&r1=525095&r2=525096
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java Tue Apr 3 02:01:30 2007
@@ -22,6 +22,7 @@
import org.apache.maven.scm.ScmFile;
import org.apache.maven.scm.ScmFileStatus;
import org.apache.maven.scm.log.ScmLogger;
+import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.cli.StreamConsumer;
import java.io.File;
@@ -58,6 +59,12 @@
public void consumeLine( String line )
{
+ logger.info( line );
+ if ( StringUtils.isEmpty( line.trim() ) )
+ {
+ return;
+ }
+
if ( line.length() <= 7 )
{
logger.warn( "Unexpected input, the line must be at least seven characters long. Line: '" + line + "'." );
@@ -71,11 +78,51 @@
ScmFileStatus status;
+ // The first six columns in the output are each one character wide:
+ // First column: Says if item was added, deleted, or otherwise changed
+ // ' ' no modifications
+ // 'A' Added
+ // 'C' Conflicted
+ // 'D' Deleted
+ // 'I' Ignored
+ // 'M' Modified
+ // 'R' Replaced
+ // 'X' item is unversioned, but is used by an externals definition
+ // '?' item is not under version control
+ // '!' item is missing (removed by non-svn command) or incomplete
+ // '~' versioned item obstructed by some item of a different kind
+ // Second column: Modifications of a file's or directory's properties
+ // ' ' no modifications
+ // 'C' Conflicted
+ // 'M' Modified
+ // Third column: Whether the working copy directory is locked
+ // ' ' not locked
+ // 'L' locked
+ // Fourth column: Scheduled commit will contain addition-with-history
+ // ' ' no history scheduled with commit
+ // '+' history scheduled with commit
+ // Fifth column: Whether the item is switched relative to its parent
+ // ' ' normal
+ // 'S' switched
+ // Sixth column: Repository lock token
+ // (without -u)
+ // ' ' no lock token
+ // 'K' lock token present
+ // (with -u)
+ // ' ' not locked in repository, no lock token
+ // 'K' locked in repository, lock toKen present
+ // 'O' locked in repository, lock token in some Other working copy
+ // 'T' locked in repository, lock token present but sTolen
+ // 'B' not locked in repository, lock token present but Broken
+ //
+ // The out-of-date information appears in the eighth column (with -u):
+ // '*' a newer revision exists on the server
+ // ' ' the working copy is up to date
if ( statusString.equals( "A" ) )
{
status = ScmFileStatus.ADDED;
}
- else if ( statusString.equals( "M" ) )
+ else if ( statusString.equals( "M" ) || statusString.equals( "R" ) || statusString.equals( "~" ) )
{
status = ScmFileStatus.MODIFIED;
}
@@ -87,6 +134,10 @@
{
status = ScmFileStatus.UNKNOWN;
}
+ else if ( statusString.equals( "!" ) )
+ {
+ status = ScmFileStatus.MISSING;
+ }
else if ( statusString.equals( "C" ) )
{
status = ScmFileStatus.CONFLICT;
@@ -100,11 +151,30 @@
//skip svn:external entries
return;
}
+ else if ( statusString.equals( "I" ) )
+ {
+ //skip svn:external entries
+ return;
+ }
else
{
- logger.info( "Unknown file status: '" + statusString + "'." );
+ //Parse the second column
+ statusString = line.substring( 1, 1 );
- status = ScmFileStatus.UNKNOWN;
+ if ( statusString.equals( "M" ) )
+ {
+ status = ScmFileStatus.MODIFIED;
+ }
+ else if ( statusString.equals( "C" ) )
+ {
+ status = ScmFileStatus.CONFLICT;
+ }
+ else
+ {
+ //The line isn't a status line, ie something like 'Performing status on external item at...'
+ //or a status defined in next columns
+ return;
+ }
}
// If the file isn't a file; don't add it.