You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by df...@apache.org on 2008/08/15 19:17:25 UTC

svn commit: r686286 - /maven/sandbox/trunk/plugins/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMyChanges.java

Author: dfabulich
Date: Fri Aug 15 10:17:25 2008
New Revision: 686286

URL: http://svn.apache.org/viewvc?rev=686286&view=rev
Log:
cleanup, and ignore unknowns by default

Modified:
    maven/sandbox/trunk/plugins/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMyChanges.java

Modified: maven/sandbox/trunk/plugins/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMyChanges.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMyChanges.java?rev=686286&r1=686285&r2=686286&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMyChanges.java (original)
+++ maven/sandbox/trunk/plugins/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMyChanges.java Fri Aug 15 10:17:25 2008
@@ -27,14 +27,15 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.command.status.StatusScmResult;
 import org.apache.maven.scm.manager.ScmManager;
 import org.apache.maven.scm.repository.ScmRepository;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
- * Goal to build all projects that you personally have changed (according to SCM) 
- *
+ * Goal to build all projects that you personally have changed (according to SCM)
+ * 
  * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
  * @goal makeMyChanges
  * @aggregator
@@ -48,18 +49,24 @@
      * @required
      */
     private String scmUrl;
-    
+
     /**
-     * @parameter expression="${component.org.apache.maven.scm.manager.ScmManager}"
+     * Ignore files in the "unknown" status (created but not added to source control)
+     * 
+     * @parameter expression="${make.ignoreUnknown"}"
+     */
+    private boolean ignoreUnknown = true;
+
+    /**
+     * @component
      */
     private ScmManager scmManager;
-    
-    private MavenProject project;
-    
+
     public void execute()
         throws MojoExecutionException, MojoFailureException
     {
-        if (collectedProjects.size() == 0) {
+        if ( collectedProjects.size() == 0 )
+        {
             throw new NonReactorException();
         }
         StatusScmResult result = null;
@@ -70,19 +77,25 @@
         }
         catch ( Exception e )
         {
-            throw new MojoExecutionException("Couldn't configure SCM repository: " + e.getLocalizedMessage(),e);
+            throw new MojoExecutionException( "Couldn't configure SCM repository: " + e.getLocalizedMessage(), e );
         }
-        
+
         List changedFiles = result.getChangedFiles();
         // TODO There's a cleverer/faster way to code this...?
         List projectDirectories = getProjectDirectories();
         Set changedDirectories = new HashSet();
-        for (int i = 0; i < changedFiles.size(); i++) {
+        for ( int i = 0; i < changedFiles.size(); i++ )
+        {
             ScmFile changedScmFile = (ScmFile) changedFiles.get( i );
-            File changedFile = new File(changedScmFile.getPath());
-            for (int j = 0; j < projectDirectories.size(); j++) {
+            ScmFileStatus status = changedScmFile.getStatus();
+            if ( !status.isStatus() ) continue;
+            if ( ignoreUnknown && ScmFileStatus.UNKNOWN.equals( status ) ) continue;
+            File changedFile = new File( changedScmFile.getPath() );
+            for ( int j = 0; j < projectDirectories.size(); j++ )
+            {
                 File projectDirectory = (File) projectDirectories.get( j );
-                if (changedFile.getAbsolutePath().startsWith( projectDirectory.getAbsolutePath() )) {
+                if ( changedFile.getAbsolutePath().startsWith( projectDirectory.getAbsolutePath() + File.separator ) )
+                {
                     changedDirectories.add( RelativePather.getRelativePath( baseDir, projectDirectory ) );
                     break;
                 }
@@ -93,10 +106,11 @@
         super.execute();
 
     }
-    
-    private List getProjectDirectories() {
-        List dirs = new ArrayList(collectedProjects.size());
-        for (int i = 0; i < collectedProjects.size(); i++)
+
+    private List getProjectDirectories()
+    {
+        List dirs = new ArrayList( collectedProjects.size() );
+        for ( int i = 0; i < collectedProjects.size(); i++ )
         {
             MavenProject mp = (MavenProject) collectedProjects.get( i );
             dirs.add( mp.getFile().getParentFile() );