Author: mperham
Date: Mon Aug 14 20:51:11 2006
New Revision: 431520

URL: http://svn.apache.org/viewvc?rev=431520&view=rev
Log:
PR: SCM-226
Lock any created tag by default.  This is the desired behavior with the release 
plugin.
Use "-Dmaven.scm.locktag=false" to disable locking.

Modified:
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java?rev=431520&r1=431519&r2=431520&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java
 Mon Aug 14 20:51:11 2006
@@ -388,6 +388,8 @@
 
     private static String getUsername( PerforceScmProviderRepository repo )
     {
+        // TODO Need to use PeforceInfoCommand here.
+        // os user != perforce user
         String username = repo.getUser();
         if ( username == null )
         {

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java?rev=431520&r1=431519&r2=431520&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommand.java
 Mon Aug 14 20:51:11 2006
@@ -51,11 +51,20 @@
         throws ScmException
     {
         PerforceTagConsumer consumer = new PerforceTagConsumer();
-        createLabel( repo, files, tag, consumer );
+        createLabel( repo, files, tag, consumer, false );
         if ( consumer.isSuccess() )
         {
             syncLabel( repo, files, tag, consumer );
         }
+        if ( consumer.isSuccess() )
+        {
+            // Now update the label if we need to lock it
+            if ( shouldLock() )
+            {
+                consumer = new PerforceTagConsumer();
+                createLabel( repo, files, tag, consumer, true );
+            }
+        }
 
         if ( consumer.isSuccess() )
         {
@@ -69,6 +78,11 @@
         }
     }
 
+    private boolean shouldLock()
+    {
+        return Boolean.getBoolean( System.getProperty( "maven.scm.locktag", 
"true" ) );
+    }
+
     private void syncLabel( ScmProviderRepository repo, ScmFileSet files, 
String tag, PerforceTagConsumer consumer )
     {
         Commandline cl =
@@ -95,7 +109,7 @@
         }
     }
 
-    private void createLabel( ScmProviderRepository repo, ScmFileSet files, 
String tag, PerforceTagConsumer consumer )
+    private void createLabel( ScmProviderRepository repo, ScmFileSet files, 
String tag, PerforceTagConsumer consumer, boolean lock )
     {
         Commandline cl = createLabelCommandLine( 
(PerforceScmProviderRepository) repo, files.getBasedir() );
         try
@@ -104,7 +118,7 @@
             Process proc = cl.execute();
             OutputStream out = proc.getOutputStream();
             DataOutputStream dos = new DataOutputStream( out );
-            String label = createLabelSpecification( 
(PerforceScmProviderRepository) repo, tag );
+            String label = createLabelSpecification( 
(PerforceScmProviderRepository) repo, tag, lock );
             dos.write( label.getBytes() );
             dos.close();
             out.close();
@@ -160,7 +174,7 @@
      * View: //depot/path/to/repos/...
      * Owner: mperham
      */
-    public String createLabelSpecification( PerforceScmProviderRepository 
repo, String tag )
+    public String createLabelSpecification( PerforceScmProviderRepository 
repo, String tag, boolean lock )
     {
         StringBuffer buf = new StringBuffer();
         buf.append( "Label: " ).append( tag ).append( NEWLINE );
@@ -173,6 +187,7 @@
             username = PerforceInfoCommand.getInfo( this, repo ).getEntry( 
"User name" );
         }
         buf.append( "Owner: " ).append( username ).append( NEWLINE );
+        buf.append( "Options: " ).append( lock ? "" : "un" ).append( "locked" 
).append( NEWLINE );
         return buf.toString();
     }
 }


Reply via email to