diff --git a/docs/manual/OptionalTasks/perforce.html b/docs/manual/OptionalTasks/perforce.html index 8518807f8..4d095109a 100644 --- a/docs/manual/OptionalTasks/perforce.html +++ b/docs/manual/OptionalTasks/perforce.html @@ -64,6 +64,16 @@ You will also need the Perforce client executable (p4 or p4.exe but not p4win.ex P4Counter Obtain or set the value of a counter + + P4Reopen + Move files between changelists + + + + P4Revert + Revert files + +

General P4 Properties

@@ -148,6 +158,8 @@ available from the Perforce web <taskdef name="p4have" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Have" /> <taskdef name="p4label" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Label" /> <taskdef name="p4counter" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Counter" /> + <taskdef name="p4reopen" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Reopen" /> + <taskdef name="p4revert" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Revert" />
@@ -400,6 +412,79 @@ value of the "last-clean-build" counter:
+ + +

P4Reopen

+

Description:

+

+Move (or reopen in Perforce speak) checkout files between changelists. +

+

Parameters

+ + + + + + + + + + + +
AttributeDescriptionRequired
tochangeThe changelist to move files to.Yes
+ +

Examples

+Move all open files to the default changelist +
+<p4reopen view="//..." tochange="default" />
+
+Create a new changelist then reopen into it, any files from the view //projects/foo/main/... +
+<p4change description="Move files out of the way" />
+<p4reopen view="//projects/foo/main/..." tochange="${p4.change}" />
+
+
+ + + +

P4Revert

+

Description:

+

+Reverts files. +

+

Parameters

+ + + + + + + + + + + + + + + + + +
AttributeDescriptionRequired
changeThe changelist to revert.No
revertOnlyUnchangedRevert only unchanged files (p4 revert -a)No
+ +

Examples

+Revert everything! +
+<p4revert view="//..." />
+
+Revert any unchanged files in the default change +
+<p4revert change="default" revertonlyunchanged="true" />
+
+
+ + +

Change History

diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.java new file mode 100644 index 000000000..8663f66b0 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.java @@ -0,0 +1,82 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2000 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", "Ant", 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 + * . + * + * Portions of this software are based upon public domain software + * originally written at the National Center for Supercomputing Applications, + * University of Illinois, Urbana-Champaign. + */ + +package org.apache.tools.ant.taskdefs.optional.perforce; + +import org.apache.tools.ant.*; + +/* P4Reopen - move files to a new changelist + * + * @author Les Hughes + */ +public class P4Reopen extends P4Base { + + private String toChange = ""; + + public void setToChange(String toChange) throws BuildException { + if(toChange == null && !toChange.equals("")) + throw new BuildException("P4Reopen: tochange cannot be null or empty"); + + this.toChange = toChange; + } + + public void execute() throws BuildException { + if(P4View == null) if(P4View == null) throw new BuildException("No view specified to reopen"); + execP4Command("-s reopen -c "+toChange+" "+P4View, new SimpleP4OutputHandler(this)); + } +} diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java new file mode 100644 index 000000000..57b2629dc --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java @@ -0,0 +1,100 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2000 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", "Ant", 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 + * . + * + * Portions of this software are based upon public domain software + * originally written at the National Center for Supercomputing Applications, + * University of Illinois, Urbana-Champaign. + */ + +package org.apache.tools.ant.taskdefs.optional.perforce; + +import org.apache.tools.ant.*; + +/* P4Revert - revert open files or files in a changelist + * + * @author Les Hughes + */ +public class P4Revert extends P4Base { + + private String revertChange = null; + private boolean onlyUnchanged = false; + + public void setChange(String revertChange) throws BuildException { + if(revertChange == null && !revertChange.equals("")) + throw new BuildException("P4Revert: change cannot be null or empty"); + + this.revertChange = revertChange; + + } + + public void setRevertOnlyUnchanged(boolean onlyUnchanged) { + this.onlyUnchanged = onlyUnchanged; + } + + public void execute() throws BuildException { + + /* Here we can either revert any unchanged files in a changelist + * or + * any files regardless of whether they have been changed or not + * + * + * The whole process also accepts a p4 filespec + */ + String p4cmd = "-s revert"; + if(onlyUnchanged) p4cmd+=" -a"; + + if (revertChange != null) p4cmd += " -c "+revertChange; + + execP4Command(p4cmd+" "+P4View, new SimpleP4OutputHandler(this)); + } +}