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:
+
+
+
+Description:
+
+Move (or reopen in Perforce speak) checkout files between changelists.
+
+Parameters
+
+
+ Attribute |
+ Description |
+ Required |
+
+
+ tochange |
+ The 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}" />
+
+
+
+
+
+
+Description:
+
+Reverts files.
+
+Parameters
+
+
+ Attribute |
+ Description |
+ Required |
+
+
+ change |
+ The changelist to revert. |
+ No |
+
+
+ revertOnlyUnchanged |
+ Revert 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" />
+
+
+
+
+
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));
+ }
+}