diff --git a/changelog.html b/changelog.html index d22f6730ed7348987617d5dd0bbfdfefda0bbafc..6c098499d8c34b5c0dd6dc6d20a094243f9f49e2 100644 --- a/changelog.html +++ b/changelog.html @@ -91,6 +91,9 @@ Upcoming changes
  • umask setting on Debian did not work. (pull 1397) +
  • + handle job move when buildDir is configured to a custom location. + (issue 24825)

    What's new in 1.581 (2014/09/21)

    diff --git a/core/src/main/java/hudson/model/AbstractItem.java b/core/src/main/java/hudson/model/AbstractItem.java index 115a01e63597ffbd3b9236f39732e71b386bf2c1..6e5ff33d754023d3796c0e8424fa8095e11c85d7 100644 --- a/core/src/main/java/hudson/model/AbstractItem.java +++ b/core/src/main/java/hudson/model/AbstractItem.java @@ -42,6 +42,7 @@ import hudson.util.AlternativeUiTextProvider; import hudson.util.AlternativeUiTextProvider.Message; import hudson.util.AtomicFileWriter; import hudson.util.IOUtils; +import jenkins.model.DirectlyModifiableTopLevelItemGroup; import jenkins.model.Jenkins; import org.apache.tools.ant.taskdefs.Copy; import org.apache.tools.ant.types.FileSet; @@ -308,6 +309,10 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet } } + public void movedTo(DirectlyModifiableTopLevelItemGroup destination, AbstractItem newItem, File destDir) throws IOException { + newItem.onLoad(destination, name); + } + /** * A pointless function to work around what appears to be a HotSpot problem. See JENKINS-5756 and bug 6933067 * on BugParade for more details. @@ -712,4 +717,5 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet * Replaceable pronoun of that points to a job. Defaults to "Job"/"Project" depending on the context. */ public static final Message PRONOUN = new Message(); + } diff --git a/core/src/main/java/hudson/model/Items.java b/core/src/main/java/hudson/model/Items.java index ca8b54fb77333bffb2dc6d69e5ddc914d4137bb3..0358e4471aeda42dc4f67f746638c9efffa0632f 100644 --- a/core/src/main/java/hudson/model/Items.java +++ b/core/src/main/java/hudson/model/Items.java @@ -381,7 +381,7 @@ public class Items { FileUtils.moveDirectory(item.getRootDir(), destDir); oldParent.remove(item); I newItem = destination.add(item, name); - newItem.onLoad(destination, name); + item.movedTo(destination, newItem, destDir); ItemListener.fireLocationChange(newItem, oldFullName); return newItem; } diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java index e7aebb77d297371ac9e0c26cb7898d20fcdb231a..b3e05c6888bf47d8ad431b61e0e1b149b4c12ee6 100644 --- a/core/src/main/java/hudson/model/Job.java +++ b/core/src/main/java/hudson/model/Job.java @@ -63,6 +63,7 @@ import hudson.widgets.HistoryWidget; import hudson.widgets.HistoryWidget.Adapter; import hudson.widgets.Widget; import jenkins.model.BuildDiscarder; +import jenkins.model.DirectlyModifiableTopLevelItemGroup; import jenkins.model.Jenkins; import jenkins.model.ProjectNamingStrategy; import jenkins.security.HexStringConfidentialKey; @@ -70,6 +71,7 @@ import jenkins.util.io.OnMaster; import net.sf.json.JSONException; import net.sf.json.JSONObject; +import org.apache.commons.io.FileUtils; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; @@ -628,6 +630,18 @@ public abstract class Job, RunT extends Run