Author: evenisse
Date: Tue Apr 24 06:40:14 2007
New Revision: 531935

URL: http://svn.apache.org/viewvc?view=rev&rev=531935
Log:
[MRELEASE-6] [MRELEASE-168] Commit pom files even if the project use a flat 
directory structure. The use must choose to commit files by modules instead of 
an atomic commit.

Modified:
    
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java
    
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
    
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java

Modified: 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java?view=diff&rev=531935&r1=531934&r2=531935
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java
 (original)
+++ 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPhase.java
 Tue Apr 24 06:40:14 2007
@@ -90,24 +90,47 @@
 
         List pomFiles = createPomFiles( reactorProjects );
 
+        if ( releaseDescriptor.isCommitByProject() )
+        {
+            for ( Iterator i = pomFiles.iterator(); i.hasNext(); )
+            {
+                File pomFile = (File) i.next();
+                ScmFileSet fileSet = new ScmFileSet( pomFile.getParentFile(), 
pomFile );
+
+                checkin( provider, repository, fileSet, createMessage( 
releaseDescriptor ) );
+            }
+        }
+        else
+        {
+            ScmFileSet fileSet = new ScmFileSet( new File( 
releaseDescriptor.getWorkingDirectory() ), pomFiles );
+
+            checkin( provider, repository, fileSet, createMessage( 
releaseDescriptor ) );
+        }
+
+        relResult.setResultCode( ReleaseResult.SUCCESS );
+
+        return relResult;
+    }
+
+    private void checkin( ScmProvider provider, ScmRepository repository, 
ScmFileSet fileSet,
+                                      String message )
+        throws ReleaseExecutionException, ReleaseScmCommandException
+    {
         CheckInScmResult result;
+
         try
         {
-            ScmFileSet fileSet = new ScmFileSet( new File( 
releaseDescriptor.getWorkingDirectory() ), pomFiles );
-            result = provider.checkIn( repository, fileSet, (ScmVersion) null, 
createMessage( releaseDescriptor ) );
+            result = provider.checkIn( repository, fileSet, (ScmVersion) null, 
message );
         }
         catch ( ScmException e )
         {
             throw new ReleaseExecutionException( "An error is occurred in the 
checkin process: " + e.getMessage(), e );
         }
+
         if ( !result.isSuccess() )
         {
             throw new ReleaseScmCommandException( "Unable to commit files", 
result );
         }
-
-        relResult.setResultCode( ReleaseResult.SUCCESS );
-
-        return relResult;
     }
 
     public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, 
Settings settings, List reactorProjects )

Modified: 
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?view=diff&rev=531935&r1=531934&r2=531935
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo 
(original)
+++ 
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo 
Tue Apr 24 06:40:14 2007
@@ -56,6 +56,8 @@
             The description of this release configuration
           </description>
         </field>
+        <!-- Settings needs to be resolved -->
+        <!-- SCM Information -->
         <field>
           <name>ScmCommentPrefix</name>
           <version>1.0.0</version>
@@ -65,8 +67,6 @@
             The prefix of SCM modification messages
           </description>
         </field>
-        <!-- Settings needs to be resolved -->
-        <!-- SCM Information -->
         <field>
           <name>scmSourceUrl</name>
           <version>1.0.0</version>
@@ -249,6 +249,15 @@
           <type>String</type>
           <description>
             The goals to execute in preparation for the release.
+          </description>
+        </field>
+        <field>
+          <name>commitByProject</name>
+          <version>1.0.0</version>
+          <type>boolean</type>
+          <defaultValue>false</defaultValue>
+          <description>
+            The commits must be done by modules or not. Set it to true in case 
of flat directory structure.
           </description>
         </field>
 

Modified: 
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java?view=diff&rev=531935&r1=531934&r2=531935
==============================================================================
--- 
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
 (original)
+++ 
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
 Tue Apr 24 06:40:14 2007
@@ -87,6 +87,13 @@
      */
     private String preparationGoals;
 
+    /**
+     * Commits to do are atomic or by project.
+     *
+     * @parameter expression="${commitByProject}" default-value="false"
+     */
+    private boolean commitByProject;
+
     public void execute()
         throws MojoExecutionException, MojoFailureException
     {
@@ -95,6 +102,7 @@
         config.setGenerateReleasePoms( generateReleasePoms );
         config.setScmUseEditMode( useEditMode );
         config.setPreparationGoals( preparationGoals );
+        config.setCommitByProject( commitByProject );
 
         try
         {


Reply via email to