Browse Source

Moved <pvcs> to a package of its own, added nested element to it to

handle multiple projects in one go.

Submitted by:	Frank Wierzbicki <wierzbickif@yahoo.com>


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268981 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 24 years ago
parent
commit
3957ddae25
5 changed files with 184 additions and 9 deletions
  1. +5
    -1
      WHATSNEW
  2. +63
    -2
      docs/manual/OptionalTasks/pvcstask.html
  3. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/defaults.properties
  4. +38
    -5
      src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java
  5. +77
    -0
      src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java

+ 5
- 1
WHATSNEW View File

@@ -13,10 +13,12 @@ Changes that could break older environments:
* several Zip methods have changed their signature as we now use a Zip
package of our own that handles Unix permissions for directories.

* The <pvcs> task has been move to a package of its own.

Other changes:
--------------

* New tasks: ear, p4counter, record
* New tasks: ear, p4counter, record, cvspass

* Ant now uses JAXP 1.1

@@ -42,6 +44,8 @@ Other changes:
* <jar> now has a nested <metainf> element following the same idea as
<war>'s <webinf>.

* <pvcs> can now handle multiple projects.

Fixed bugs:
-----------



+ 63
- 2
docs/manual/OptionalTasks/pvcstask.html View File

@@ -3,7 +3,6 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="en-us">
<meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.2.18 i686) [Netscape]">
<title>PVCS task</title>
</head>
<body>
@@ -132,6 +131,35 @@ tag expects the executables to be found using the PATH environment variable.</td
<td VALIGN=TOP WIDTH="10%">No</td>
</tr>
</table>
<h3><a name="nested">Nested Elements</a></h3>

<h3>pvcsproject element</h3>
<p><code>pvcs</code> supports a nested
<code>&lt;pvcsproject&gt;</code> element, that represents a project
within the PVCS repository to extract files from. By nesting multiple
<code>&lt;pvcsproject&gt;</code> elements under the
<code>&lt;pvcs&gt;</code> task, multiple projects can be
specified.</p>

<h3>Parameters</h3>

<table BORDER CELLSPACING=0 CELLPADDING=2 >
<tr>
<td VALIGN=TOP WIDTH="12%"><b>Attribute</b></td>

<td VALIGN=TOP WIDTH="78%"><b>Description</b></td>

<td VALIGN=TOP WIDTH="10%"><b>Required</b></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="12%">name</td>

<td VALIGN=TOP WIDTH="78%">The name of the pvcs project</td>

<td VALIGN=TOP WIDTH="10%">Yes</td>
</tr>
</table>

<h3>
Examples</h3>
@@ -143,7 +171,7 @@ repository.
-->
<br>&nbsp;&nbsp;&nbsp; &lt;!-- ===================================================================
-->
<br>&nbsp;&nbsp;&nbsp; &lt;target name="getlastes">
<br>&nbsp;&nbsp;&nbsp; &lt;target name="getlatest">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; pvcs repository="/mnt/pvcs"
pvcsproject="/myprj"/>
<br>&nbsp;&nbsp;&nbsp; &lt;/target></ul>
@@ -164,6 +192,39 @@ Now run:

&nbsp;&nbsp;&nbsp; Total time: 19 seconds</pre>

This next example extracts the latest version of the files in the pvcs
repository from two projects using nested &lt;pvcsproject&gt; elements.
<ul>&nbsp;&nbsp;&nbsp; &lt;!-- ===================================================================
-->
<br>&nbsp;&nbsp;&nbsp; &lt;!-- Get latest from myprj and myprj2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-->
<br>&nbsp;&nbsp;&nbsp; &lt;!-- ===================================================================
-->
<br>&nbsp;&nbsp;&nbsp; &lt;target name="getlatest2">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pvcs repository="/mnt/pvcs">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pvcsproject name="/myprj" />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pvcsproject name="/myprj2" />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/pvcs>
<br>&nbsp;&nbsp;&nbsp; &lt;/target></ul>
Now run:
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant getlatest2
<p>This will cause the following output to appear:
<pre>&nbsp;&nbsp;&nbsp; getlatest2:
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] PVCS Version Manager (VMGUI) v6.6.10 (Build 870) for Windows NT/80x86
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] Copyright 1985-2000 MERANT.&nbsp; All rights reserved.
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] PVCS Version Manager (get) v6.6.10 (Build 870) for Windows NT/80x86
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] Copyright 1985-2000 MERANT.&nbsp; All rights reserved.
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] c:\myws\myprj\main.java &lt;- C:\mypvcs\archives\myprj\main.java-arc
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] rev 1.1
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] c:\myws\myprj\apache\tool.java &lt;- C:\mypvcs\archives\myprj\apache\tool.java-arc
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] rev 1.5
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] c:\myws\myprj2\apache\tool2.java &lt;- C:\mypvcs\archives\myprj2\apache\tool2.java-arc
&nbsp;&nbsp;&nbsp;&nbsp; [pvcs] rev 1.2

&nbsp;&nbsp;&nbsp; BUILD SUCCESSFUL

&nbsp;&nbsp;&nbsp; Total time: 22 seconds</pre>

<pre>
</pre>



+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/defaults.properties View File

@@ -78,7 +78,7 @@ csc=org.apache.tools.ant.taskdefs.optional.dotnet.CSharp
ilasm=org.apache.tools.ant.taskdefs.optional.dotnet.Ilasm
stylebook=org.apache.tools.ant.taskdefs.optional.StyleBook
test=org.apache.tools.ant.taskdefs.optional.Test
pvcs=org.apache.tools.ant.taskdefs.optional.Pvcs
pvcs=org.apache.tools.ant.taskdefs.optional.pvcs.Pvcs
p4change=org.apache.tools.ant.taskdefs.optional.perforce.P4Change
p4label=org.apache.tools.ant.taskdefs.optional.perforce.P4Label
p4have=org.apache.tools.ant.taskdefs.optional.perforce.P4Have


src/main/org/apache/tools/ant/taskdefs/optional/Pvcs.java → src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java View File

@@ -55,9 +55,11 @@
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tools.ant.taskdefs.optional;
package org.apache.tools.ant.taskdefs.optional.pvcs;

import java.io.*;
import java.util.Enumeration;
import java.util.Vector;
import java.text.*;
import java.util.Random;
import org.apache.tools.ant.BuildException;
@@ -78,6 +80,7 @@ public class Pvcs extends org.apache.tools.ant.Task {
private String pvcsbin;
private String repository;
private String pvcsProject;
private Vector pvcsProjects;
private String workspace;
private String force;
private String promotiongroup;
@@ -148,8 +151,22 @@ public class Pvcs extends org.apache.tools.ant.Task {
if(getWorkspace()!=null)
commandLine.createArgument().setValue("-sp"+getWorkspace());
commandLine.createArgument().setValue("-pr"+getRepository());

// default pvcs project is "/"
if(getPvcsproject() == null && getPvcsprojects().isEmpty())
pvcsProject = "/";

if(getPvcsproject()!=null)
commandLine.createArgument().setValue(getPvcsproject());
if(!getPvcsprojects().isEmpty()) {
Enumeration e = getPvcsprojects().elements();
while (e.hasMoreElements()) {
String projectName = ((PvcsProject)e.nextElement()).getName();
if (projectName == null || (projectName.trim()).equals(""))
throw new BuildException("name is a required attribute of pvcsproject");
commandLine.createArgument().setValue(projectName);
}
}

File tmp = null;
try {
@@ -163,10 +180,10 @@ public class Pvcs extends org.apache.tools.ant.Task {
if(!tmp.exists())
throw new BuildException("Communication between ant and pvcs failed");
// Create foldes in workspace
// Create foldes in workspace
createFolders(tmp);

// Launch get on output captured from PCLI lvf
// Launch get on output captured from PCLI lvf
commandLine.clearArgs();
commandLine.setExecutable(getExecutable(GET_EXE));

@@ -256,6 +273,14 @@ public class Pvcs extends org.apache.tools.ant.Task {
pvcsProject = prj;
}

/**
* Get name of the project in the PVCS repository
* @return Vector
*/
public Vector getPvcsprojects() {
return pvcsProjects;
}

/**
* Get name of the workspace to store the retrieved files
* @return String
@@ -362,13 +387,21 @@ public class Pvcs extends org.apache.tools.ant.Task {
ignorerc=false;
}

/**
* handles &lt;pvcsproject&gt; subelements
* @param PvcsProject
*/
public void addPvcsproject(PvcsProject p) {
pvcsProjects.addElement(p);
}

/**
* Creates a Pvcs object
* Default PVCS project is "/"
*/
public Pvcs() {
super();
pvcsProject = "/";
pvcsProject = null;
pvcsProjects = new Vector();
workspace = null;
repository = null;
pvcsbin = null;

+ 77
- 0
src/main/org/apache/tools/ant/taskdefs/optional/pvcs/PvcsProject.java View File

@@ -0,0 +1,77 @@
/* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/

package org.apache.tools.ant.taskdefs.optional.pvcs;

import org.apache.tools.ant.Project;

/**
* class to handle &lt;pvcsprojec&gt; elements
*/
public class PvcsProject {
private String name;
public PvcsProject() {
super();
}
public void setName(String name) {
PvcsProject.this.name = name;
}
public String getName() {
return name;
}
}

Loading…
Cancel
Save