提交 18496c54 编写于 作者: K Kohsuke Kawaguchi

- Renamed from 'linked' to 'base'

- Fixed the bug where multi-level base setting wasn't working properly
- Improved docs
上级 5444b162
......@@ -32,13 +32,10 @@ import hudson.model.Executor;
import hudson.model.Fingerprint;
import hudson.model.Hudson;
import hudson.model.JobProperty;
import hudson.model.Node;
import hudson.model.ParametersAction;
import hudson.model.Queue;
import hudson.model.Result;
import hudson.model.Cause.UpstreamCause;
import hudson.slaves.WorkspaceList;
import hudson.slaves.WorkspaceList.Lease;
import hudson.tasks.Publisher;
import java.io.File;
......@@ -62,6 +59,12 @@ import org.kohsuke.stapler.export.Exported;
public class MatrixBuild extends AbstractBuild<MatrixProject,MatrixBuild> {
private AxisList axes;
/**
* If non-null, the {@link MatrixBuild} originates from the given build number.
*/
private Integer baseBuild;
public MatrixBuild(MatrixProject job) throws IOException {
super(job);
}
......@@ -116,19 +119,22 @@ public class MatrixBuild extends AbstractBuild<MatrixProject,MatrixBuild> {
}
/**
* If greater than zero, the {@link MatrixBuild} originates from the given build number.
* Sets the base build from which this build is derived.
* @since 1.416
*/
public int linkedNumber = 0;
public void setBaseBuild(MatrixBuild baseBuild) {
this.baseBuild = (baseBuild==null || baseBuild==getPreviousBuild()) ? null : baseBuild.getNumber();
}
/**
* Sets the linked number
* @param linkedNumber A given number indicating the origin
* Returns the base {@link MatrixBuild} that this build originates from.
* <p>
* If this build is a partial build, unexecuted {@link MatrixRun}s are delegated to this build number.
*/
public void setLinkedNumber( int linkedNumber ) {
this.linkedNumber = linkedNumber;
public MatrixBuild getBaseBuild() {
return baseBuild==null ? getPreviousBuild() : getParent().getBuildByNumber(baseBuild);
}
/**
* Gets the {@link MatrixRun} in this build that corresponds
* to the given combination.
......@@ -136,7 +142,7 @@ public class MatrixBuild extends AbstractBuild<MatrixProject,MatrixBuild> {
public MatrixRun getRun(Combination c) {
MatrixConfiguration config = getParent().getItem(c);
if(config==null) return null;
return getRunForConfiguration( config, getNumber() );
return getRunForConfiguration(config);
}
/**
......@@ -146,19 +152,18 @@ public class MatrixBuild extends AbstractBuild<MatrixProject,MatrixBuild> {
public List<MatrixRun> getRuns() {
List<MatrixRun> r = new ArrayList<MatrixRun>();
for(MatrixConfiguration c : getParent().getItems()) {
MatrixRun b = getRunForConfiguration( c, getNumber() );
MatrixRun b = getRunForConfiguration(c);
if (b != null) r.add(b);
}
return r;
}
private MatrixRun getRunForConfiguration( MatrixConfiguration c, int number ) {
MatrixRun b = c.getNearestOldBuild(getNumber());
if(b.getNumber()!=getNumber() && linkedNumber > 0) {
b = c.getNearestOldBuild(linkedNumber);
private MatrixRun getRunForConfiguration(MatrixConfiguration c) {
for (MatrixBuild b=this; b!=null; b=b.getBaseBuild()) {
MatrixRun r = c.getBuildByNumber(b.getNumber());
if (r!=null) return r;
}
return b;
return null;
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册