Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 39 additions & 41 deletions src/main/java/hudson/scm/AbstractCvs.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,41 +24,6 @@
package hudson.scm;


import hudson.EnvVars;
import hudson.FilePath;
import hudson.Launcher;
import hudson.Util;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Run;
import hudson.model.BuildListener;
import hudson.model.TaskListener;
import hudson.remoting.VirtualChannel;
import hudson.scm.cvstagging.CvsTagAction;
import hudson.util.Secret;
import jenkins.scm.cvs.QuietPeriodCompleted;

import org.apache.commons.io.output.DeferredFileOutputStream;
import org.jenkinsci.remoting.RoleChecker;
import org.netbeans.lib.cvsclient.CVSRoot;
import org.netbeans.lib.cvsclient.Client;
import org.netbeans.lib.cvsclient.admin.AdminHandler;
import org.netbeans.lib.cvsclient.admin.Entry;
import org.netbeans.lib.cvsclient.admin.StandardAdminHandler;
import org.netbeans.lib.cvsclient.command.Command;
import org.netbeans.lib.cvsclient.command.CommandAbortedException;
import org.netbeans.lib.cvsclient.command.CommandException;
import org.netbeans.lib.cvsclient.command.GlobalOptions;
import org.netbeans.lib.cvsclient.command.checkout.CheckoutCommand;
import org.netbeans.lib.cvsclient.command.log.RlogCommand;
import org.netbeans.lib.cvsclient.command.update.UpdateCommand;
import org.netbeans.lib.cvsclient.commandLine.BasicListener;
import org.netbeans.lib.cvsclient.connection.AuthenticationException;
import org.netbeans.lib.cvsclient.connection.Connection;
import org.netbeans.lib.cvsclient.connection.ConnectionFactory;
import org.netbeans.lib.cvsclient.connection.ConnectionIdentity;
import org.netbeans.lib.cvsclient.event.CVSListener;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
Expand All @@ -77,15 +42,47 @@
import java.util.ListIterator;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import org.apache.commons.io.output.DeferredFileOutputStream;
import org.jenkinsci.remoting.RoleChecker;
import org.netbeans.lib.cvsclient.CVSRoot;
import org.netbeans.lib.cvsclient.Client;
import org.netbeans.lib.cvsclient.admin.AdminHandler;
import org.netbeans.lib.cvsclient.admin.Entry;
import org.netbeans.lib.cvsclient.admin.StandardAdminHandler;
import org.netbeans.lib.cvsclient.command.Command;
import org.netbeans.lib.cvsclient.command.CommandAbortedException;
import org.netbeans.lib.cvsclient.command.CommandException;
import org.netbeans.lib.cvsclient.command.GlobalOptions;
import org.netbeans.lib.cvsclient.command.checkout.CheckoutCommand;
import org.netbeans.lib.cvsclient.command.log.RlogCommand;
import org.netbeans.lib.cvsclient.command.update.UpdateCommand;
import org.netbeans.lib.cvsclient.commandLine.BasicListener;
import org.netbeans.lib.cvsclient.connection.AuthenticationException;
import org.netbeans.lib.cvsclient.connection.Connection;
import org.netbeans.lib.cvsclient.connection.ConnectionFactory;
import org.netbeans.lib.cvsclient.connection.ConnectionIdentity;
import org.netbeans.lib.cvsclient.event.CVSListener;

import hudson.EnvVars;
import hudson.FilePath;
import hudson.Launcher;
import hudson.Util;
import hudson.model.AbstractBuild;
import hudson.model.Job;
import hudson.model.Run;
import hudson.model.TaskListener;
import hudson.remoting.VirtualChannel;
import hudson.scm.cvstagging.CvsTagAction;
import hudson.util.Secret;
import jenkins.scm.cvs.QuietPeriodCompleted;

public abstract class AbstractCvs extends SCM implements ICvs {

protected static final DateFormat DATE_FORMATTER = new SimpleDateFormat("dd MMM yyyy HH:mm:ss Z", Locale.UK);
Expand Down Expand Up @@ -487,26 +484,27 @@ public SCMRevisionState calcRevisionsFromBuild(final AbstractBuild<?, ?> build,
return build.getAction(CvsRevisionState.class);
}

protected PollingResult compareRemoteRevisionWith(final AbstractProject<?, ?> project, final Launcher launcher,
protected PollingResult compareRemoteRevisionWith(final Job<?, ?> project, final Launcher launcher,
final FilePath workspace, final TaskListener listener,
final SCMRevisionState baseline, final CvsRepository[] repositories)
throws IOException, InterruptedException {

AbstractBuild<?, ?> build = project.getLastBuild();
Run<?, ?> build = project.getLastBuild();

// No previous build? everything has changed
if (null == build) {
listener.getLogger().println("No previous build found, scheduling build");
return PollingResult.BUILD_NOW;
}

if (!build.hasChangeSetComputed() && build.isBuilding()) {
// TODO Update this check when the JENKINS-24141 is resolved, avoid using the subclass AbstractBuild
if (build instanceof AbstractBuild<?, ?> && !((AbstractBuild<?, ?>) build).hasChangeSetComputed() && build.isBuilding()) {
listener.getLogger().println("Previous build has not finished checkout."
+ " Not triggering build as no valid baseline comparison available.");
return PollingResult.NO_CHANGES;
}

final EnvVars envVars = project.getLastBuild().getEnvironment(listener);
final EnvVars envVars = build.getEnvironment(listener);

final Date currentPollDate = Calendar.getInstance().getTime();

Expand Down
61 changes: 28 additions & 33 deletions src/main/java/hudson/scm/CVSSCM.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,23 +23,7 @@
*/
package hudson.scm;

import hudson.AbortException;
import hudson.Extension;
import hudson.FilePath;
import hudson.Launcher;
import hudson.model.*;
import hudson.scm.browsers.CvsFacadeRepositoryBrowser;
import hudson.scm.cvstagging.LegacyTagAction;
import hudson.util.FormValidation;
import hudson.util.Secret;
import jenkins.scm.cvs.QuietPeriodCompleted;
import net.sf.json.JSONObject;

import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.export.Exported;
import org.netbeans.lib.cvsclient.CVSRoot;
import static hudson.Util.fixEmptyAndTrim;

import java.io.File;
import java.io.IOException;
Expand All @@ -57,7 +41,31 @@
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;

import static hudson.Util.fixEmptyAndTrim;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.export.Exported;
import org.netbeans.lib.cvsclient.CVSRoot;

import hudson.AbortException;
import hudson.Extension;
import hudson.FilePath;
import hudson.Launcher;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.model.Describable;
import hudson.model.Descriptor;
import hudson.model.Hudson;
import hudson.model.Job;
import hudson.model.ModelObject;
import hudson.model.Run;
import hudson.model.TaskListener;
import hudson.scm.browsers.CvsFacadeRepositoryBrowser;
import hudson.scm.cvstagging.LegacyTagAction;
import hudson.util.FormValidation;
import hudson.util.Secret;
import net.sf.json.JSONObject;

/**
* CVS.
Expand Down Expand Up @@ -237,10 +245,10 @@ public boolean requiresWorkspaceForPolling() {
* Checks for differences between the current workspace and the remote
* repository.
*
* @see {@link SCM#compareRemoteRevisionWith(AbstractProject, Launcher, FilePath, TaskListener, SCMRevisionState)}
* @see {@link SCM#compareRemoteRevisionWith(Job, Launcher, FilePath, TaskListener, SCMRevisionState)}
*/
@Override
protected PollingResult compareRemoteRevisionWith(final AbstractProject<?, ?> project, final Launcher launcher,
public PollingResult compareRemoteRevisionWith(final Job<?, ?> project, final Launcher launcher,
final FilePath workspace, final TaskListener listener, final SCMRevisionState baseline)
throws IOException, InterruptedException {

Expand Down Expand Up @@ -358,19 +366,6 @@ private String getBranchName() {
return locationName;
}

@Override
public boolean checkout(final AbstractBuild<?, ?> build, final Launcher launcher, final FilePath workspace,
final BuildListener listener, final File changelogFile) throws IOException, InterruptedException {
try {
checkout(build, launcher, workspace, listener, changelogFile, null);
}
catch (AbortException e) {
return false;
}

return true;
}

@Override
public void checkout(final @Nonnull Run<?,?> build, final @Nonnull Launcher launcher, final @Nonnull FilePath workspace,
final @Nonnull TaskListener listener, final @CheckForNull File changelogFile,
Expand Down
52 changes: 24 additions & 28 deletions src/main/java/hudson/scm/CvsProjectset.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,40 @@
*/
package hudson.scm;

import hudson.AbortException;
import hudson.Extension;
import hudson.FilePath;
import hudson.Launcher;
import hudson.Util;
import hudson.model.*;
import hudson.scm.cvs.Messages;
import hudson.util.Secret;

import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.export.Exported;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;

import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.Exported;

import hudson.AbortException;
import hudson.AbortException;
import hudson.Extension;
import hudson.Extension;
import hudson.FilePath;
import hudson.FilePath;
import hudson.Launcher;
import hudson.Launcher;
import hudson.Util;
import hudson.Util;
import hudson.model.Hudson;
import hudson.model.Job;
import hudson.model.Run;
import hudson.model.TaskListener;
import hudson.scm.cvs.Messages;
import hudson.util.Secret;
import hudson.util.Secret;


public class CvsProjectset extends AbstractCvs {

Expand Down Expand Up @@ -103,28 +113,14 @@ public boolean isCanUseUpdate() {
}

@Override
protected PollingResult compareRemoteRevisionWith(AbstractProject<?, ?> project, Launcher launcher,
public PollingResult compareRemoteRevisionWith(Job<?, ?> project, Launcher launcher,
FilePath workspace, TaskListener listener,
SCMRevisionState baseline)
throws IOException, InterruptedException {
return super.compareRemoteRevisionWith(project, launcher, workspace,
listener, baseline, getAllRepositories(workspace));
}

@Override
public boolean checkout(AbstractBuild<?, ?> build, Launcher launcher, FilePath workspace, BuildListener listener,
File changelogFile) throws IOException, InterruptedException {
try {
checkout(build, launcher, workspace, listener, changelogFile, null);
}
catch (AbortException e) {
return false;
}

return true;
}


@Override
public void checkout(final @Nonnull Run<?,?> build, final @Nonnull Launcher launcher, final @Nonnull FilePath workspace,
final @Nonnull TaskListener listener, final @CheckForNull File changelogFile,
Expand Down