You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2006/03/23 10:18:35 UTC
svn commit: r388116 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar:
./ command/ command/changelog/
Author: evenisse
Date: Thu Mar 23 01:18:28 2006
New Revision: 388116
URL: http://svn.apache.org/viewcvs?rev=388116&view=rev
Log:
[SCM-174] Bugfix changelog cmd (take 1) and some general refinements
Submitted by: Torbjørn EIkli Smørgrav
BazaarUtils:
* refactored execute cmd, added more debugging onfo (bazaar version)
ChangLogCmd:
* Avoid null and empty filesets in the ChangeSets
General:
* More precise javadoc
TODO: The changelog report is now generating empty reports (but is not failing as before). I plan to fix that in next my next patch (take 2).
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java Thu Mar 23 01:18:28 2006
@@ -48,10 +48,7 @@
import java.util.List;
/**
- * Bazaar NG http://bazaar.canonical.com/ is a decentralized revision control system. <br>
- * <p/>
- * The main difference from a centralized revision system is <br>
- * that it makes no distinction between the working tree and the repository.<br>
+ * Bazaar NG http://bazaar-vcs.org/ is a decentralized revision control system. <br>
*
* @author <a href="mailto:torbjorn@smorgrav.org">Torbjørn Eikli Smørgrav</a>
*/
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java Thu Mar 23 01:18:28 2006
@@ -16,6 +16,12 @@
* limitations under the License.
*/
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmFileStatus;
@@ -28,12 +34,6 @@
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.Commandline;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
/**
* Common code for executing bazaar commands.
*
@@ -67,7 +67,29 @@
public static ScmResult execute( BazaarConsumer consumer, ScmLogger logger, File workingDir, String[] cmdAndArgs )
throws ScmException
{
- Commandline cmd = new Commandline();
+ //Build commandline
+ Commandline cmd = buildCmd(workingDir, cmdAndArgs);
+
+ //Write out info and debug info
+ logger.info( "EXECUTING: " + cmd );
+ //TODO log this as debug information when I understand howto do that
+ logger.info( "Bazaar version: " + getBazaarVersion(workingDir));
+ logger.info( "Working directory: " + workingDir.getAbsolutePath() );
+
+ //Execute command
+ final int exitCode = executeCmd(consumer, cmd);
+
+ //Return result
+ List exitCodes =
+ exitCodeMap.containsKey( cmdAndArgs[0] ) ? (List) exitCodeMap.get( cmdAndArgs[0] ) : defaultExitCodes;
+ boolean success = exitCodes.contains( new Integer( exitCode ) );
+
+ String providerMsg = "Execution of bazaar command: " + ( success ? "succeded" : "failed" );
+ return new ScmResult( cmd.toString(), providerMsg, consumer.getStdErr(), success );
+ }
+
+ private static Commandline buildCmd(File workingDir, String[] cmdAndArgs) throws ScmException {
+ Commandline cmd = new Commandline();
cmd.setExecutable( BazaarCommand.EXEC );
cmd.setWorkingDirectory( workingDir.getAbsolutePath() );
cmd.addArguments( cmdAndArgs );
@@ -81,11 +103,11 @@
throw new ScmException( msg );
}
}
+ return cmd;
+ }
- logger.info( "Executing: " + cmd );
- logger.info( "Working directory: " + workingDir.getAbsolutePath() );
-
- final int exitCode;
+ private static int executeCmd(BazaarConsumer consumer, Commandline cmd) throws ScmException {
+ final int exitCode;
try
{
exitCode = CommandLineUtils.executeCommandLine( cmd, consumer, consumer );
@@ -94,14 +116,8 @@
{
throw new ScmException( "Command could not be executed: " + cmd, ex );
}
-
- List exitCodes =
- exitCodeMap.containsKey( cmdAndArgs[0] ) ? (List) exitCodeMap.get( cmdAndArgs[0] ) : defaultExitCodes;
- boolean success = exitCodes.contains( new Integer( exitCode ) );
-
- String providerMsg = "Execution of bazaar command: " + ( success ? "succeded" : "failed" );
- return new ScmResult( cmd.toString(), providerMsg, consumer.getStdErr(), success );
- }
+ return exitCode;
+ }
public static ScmResult execute( File workingDir, String[] cmdAndArgs )
throws ScmException
@@ -170,6 +186,49 @@
int getCurrentRevisionNumber()
{
return revNo;
+ }
+ }
+
+ public static String getBazaarVersion(File workingDir)
+ throws ScmException {
+
+ String[] versionCmd = new String[] { "version" };
+ BazaarVersionConsumer consumer = new BazaarVersionConsumer();
+ Commandline cmd = buildCmd(workingDir, versionCmd);
+
+ // Execute command
+ executeCmd(consumer, cmd);
+
+ // Return result
+ return consumer.getVersion();
+ }
+
+ /**
+ * Get version of the bazaar executable <p/> Resolve revision to the last
+ * integer found in the command output.
+ */
+ private static class BazaarVersionConsumer
+ extends BazaarConsumer
+ {
+
+ private static final String VERSION_TAG = "bzr (bazaar-ng) ";
+ private String version = "Unknown";
+
+ BazaarVersionConsumer()
+ {
+ super( new DefaultLog() );
+ }
+
+ public void doConsume( ScmFileStatus status, String line )
+ {
+ if (line.startsWith(VERSION_TAG)) {
+ version = line.substring(VERSION_TAG.length());
+ }
+ }
+
+ String getVersion()
+ {
+ return version;
}
}
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java Thu Mar 23 01:18:28 2006
@@ -29,7 +29,7 @@
/**
* Base consumer to do common parsing for all bazaar commands.
* <p/>
- * More specific: log line on debug, get file status
+ * More specific: log line each line if debug is enabled, get file status
* and detect warnings from bazaar
*
* @author <a href="mailto:torbjorn@smorgrav.org">Torbjørn Eikli Smørgrav</a>
@@ -62,11 +62,11 @@
static
{
- identifiers.put( "added".intern(), ScmFileStatus.ADDED );
- identifiers.put( "unknown".intern(), ScmFileStatus.UNKNOWN );
- identifiers.put( "modified".intern(), ScmFileStatus.MODIFIED );
- identifiers.put( "removed".intern(), ScmFileStatus.DELETED );
- identifiers.put( "renamed".intern(), ScmFileStatus.MODIFIED );
+ identifiers.put( "added", ScmFileStatus.ADDED );
+ identifiers.put( "unknown", ScmFileStatus.UNKNOWN );
+ identifiers.put( "modified", ScmFileStatus.MODIFIED );
+ identifiers.put( "removed", ScmFileStatus.DELETED );
+ identifiers.put( "renamed", ScmFileStatus.MODIFIED );
messages.put( "bzr: WARNING:", "WARNING" );
messages.put( "bzr: ERROR:", "ERROR" );
messages.put( "'bzr' ", "ERROR" ); // bzr isn't found in windows path
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java Thu Mar 23 01:18:28 2006
@@ -50,22 +50,26 @@
ScmResult result = BazaarUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
List logEntries = consumer.getModifications();
- List inRange = new ArrayList();
+ List inRangeAndValid = new ArrayList();
startDate = startDate == null ? new Date( 0 ) : startDate; //From 1. Jan 1970
endDate = endDate == null ? new Date() : endDate; //Upto now
+ getLogger().info(startDate.toString());
+ getLogger().info(endDate.toString());
for ( Iterator it = logEntries.iterator(); it.hasNext(); )
{
ChangeSet change = (ChangeSet) it.next();
- if ( startDate != null )
+ if ( change.getFiles().size() > 0)
{
if ( !change.getDate().before( startDate ) && !change.getDate().after( endDate ) )
{
- inRange.add( change );
+ inRangeAndValid.add( change );
}
}
}
- return new ChangeLogScmResult( new ChangeLogSet( inRange, startDate, endDate ), result );
+ getLogger().info("Got " + inRangeAndValid.size() + " of " + logEntries.size() + " log entries");
+ ChangeLogSet changeLogSet = new ChangeLogSet( inRangeAndValid, startDate, endDate );
+ return new ChangeLogScmResult(changeLogSet, result );
}
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java Thu Mar 23 01:18:28 2006
@@ -87,6 +87,7 @@
if ( line.startsWith( START_LOG_TAG ) )
{
currentChange = new ChangeSet();
+ currentChange.setFiles(new ArrayList());
logEntries.add( currentChange );
currentComment = new StringBuffer();
currentStatus = null;