private String getRevisionValueOf(Revision revision) { if (revision instanceof DependencyMaterialRevision) { return ((DependencyMaterialRevision) revision).getPipelineLabel(); } return revision.getRevision(); }
public void visit(MaterialRevision revision) { this.revision = revision; modificationsJson = new ArrayList(); materialJson = new LinkedHashMap(); materialJson.put("revision", revision.getRevision().getRevision()); materialJson.put("revision_href", revision.getRevision().getRevisionUrl()); materialJson.put("user", revision.buildCausedBy()); materialJson.put("date", formatISO8601(revision.getDateOfLatestModification())); materialJson.put("changed", valueOf(revision.isChanged())); materialJson.put("modifications", modificationsJson); materials.add(materialJson); }
private VersionSpec getVersionSpec(Revision revision) { if (revision == null) { return LatestVersionSpec.INSTANCE; } return new ChangesetVersionSpec(Integer.parseInt(revision.getRevision())); }
private BuildCommand update(String workingDir, Revision revision) { ArrayList<String> args = new ArrayList<>(); addCredentials(args); args.add("update"); args.add("--non-interactive"); args.add("-r"); args.add(revision.getRevision()); args.add(workingDir); return exec("svn", args.toArray(new String[args.size()])); }
public String buildCauseMessage() { StringBuilder builder = new StringBuilder(); //TODO: #2363 May move this logic to material object later if (material instanceof DependencyMaterial) { return builder.append("triggered by ").append(getRevision().getRevision()).toString(); } else { return builder.append("modified by ").append(buildCausedBy()).toString(); } }
private BuildCommand checkout(String workingDir, Revision revision) { ArrayList<String> args = new ArrayList<>(); addCredentials(args); args.add("checkout"); args.add("--non-interactive"); args.add("-r"); args.add(revision.getRevision()); args.add(material.getUrlArgument().forCommandline()); args.add(workingDir); return exec("svn", args.toArray(new String[args.size()])); }
public void populateEnvironmentContext(EnvironmentVariableContext environmentVariableContext, MaterialRevision materialRevision, File workingDir) { String toRevision = materialRevision.getRevision().getRevision(); String fromRevision = materialRevision.getOldestRevision().getRevision(); setGoRevisionVariables(environmentVariableContext, fromRevision, toRevision); }
public void resetHard(ConsoleOutputStreamConsumer outputStreamConsumer, Revision revision) { outputStreamConsumer.stdOutput("[GIT] Updating working copy to revision " + revision.getRevision()); String[] args = new String[]{"reset", "--hard", revision.getRevision()}; CommandLine gitCmd = git(environment).withArgs(args).withWorkingDir(workingDir); int result = run(gitCmd, outputStreamConsumer); if (result != 0) { throw new RuntimeException(String.format("git reset failed for [%s]", this.workingDir)); } }
public String buildCausedBy() { //TODO: #2363 May move this logic to material object later if (material instanceof DependencyMaterial) { return getRevision().getRevision(); } else { return modifications.getUsername(); } }
public void updateTo(ConsoleOutputStreamConsumer outputStreamConsumer, File baseDir, RevisionContext revisionContext, final SubprocessExecutionContext execCtx) { Revision revision = revisionContext.getLatestRevision(); File workingDir = execCtx.isServer() ? baseDir : workingdir(baseDir); LOGGER.debug("[TFS] Updating to revision: {} in workingdirectory {}", revision, workingDir); outputStreamConsumer.stdOutput(format("[%s] Start updating %s at revision %s from %s", GoConstants.PRODUCT_NAME, updatingTarget(), revision.getRevision(), url)); tfs(execCtx).checkout(workingDir, revision); LOGGER.debug("[TFS] done with update"); outputStreamConsumer.stdOutput(format("[%s] Done.\n", GoConstants.PRODUCT_NAME)); }
public void updateTo(ConsoleOutputStreamConsumer outputConsumer, File baseDir, RevisionContext revisionContext, final SubprocessExecutionContext execCtx) { File workingDir = execCtx.isServer() ? baseDir : workingdir(baseDir); boolean cleaned = cleanDirectoryIfRepoChanged(workingDir, outputConsumer); String revision = revisionContext.getLatestRevision().getRevision(); try { outputConsumer.stdOutput(format("[%s] Start updating %s at revision %s from %s", GoConstants.PRODUCT_NAME, updatingTarget(), revision, serverAndPort)); p4(workingDir, outputConsumer).sync(parseLong(revision), cleaned, outputConsumer); outputConsumer.stdOutput(format("[%s] Done.\n", GoConstants.PRODUCT_NAME)); } catch (Exception e) { bomb(e); } }
public void updateTo(ConsoleOutputStreamConsumer outputStreamConsumer, File baseDir, RevisionContext revisionContext, final SubprocessExecutionContext execCtx) { Revision revision = revisionContext.getLatestRevision(); try { outputStreamConsumer.stdOutput(format("[%s] Start updating %s at revision %s from %s", GoConstants.PRODUCT_NAME, updatingTarget(), revision.getRevision(), url.forDisplay())); File workingDir = execCtx.isServer() ? baseDir : workingdir(baseDir); hg(workingDir, outputStreamConsumer).updateTo(revision, outputStreamConsumer); outputStreamConsumer.stdOutput(format("[%s] Done.\n", GoConstants.PRODUCT_NAME)); } catch (Exception e) { bomb(e); } }
@Test public void shouldReturnNullRevisionWhenThereIsNoMaterial() throws Exception { Revision revision = new MaterialRevision(null).getRevision(); assertThat(revision, is(not(nullValue()))); assertThat(revision.getRevision(), is("")); }
private BuildCommand resetWorkingCopy(String workingDir, Revision revision) { return compose( echo("[GIT] Reset working directory %s", workingDir), echo("[GIT] Updating working copy to revision %s", revision.getRevision()), cleanupUnversionedFiles(workingDir), resetHard(workingDir, revision), updateSubmodules(workingDir), cleanupUnversionedFiles(workingDir)); }
public BuildCommand updateTo(String baseDir, RevisionContext revisionContext) { Revision revision = revisionContext.getLatestRevision(); String workingDir = material.workingdir(new File(baseDir)).getPath(); UrlArgument url = material.getUrlArgument(); return compose( secret(url.forCommandline(), url.forDisplay()), echoWithPrefix("Start updating %s at revision %s from %s", material.updatingTarget(), revision.getRevision(), url.forDisplay()), cloneIfNeeded(workingDir), pull(workingDir), update(workingDir, revision), echoWithPrefix("Done.\n")); }
private BuildCommand execTfsCheckout(TfsMaterial material, Revision revision, String workingDir) { Map<String, String> properties = map( "type", "tfs", "username", material.getUserName(), "password", material.getPassword(), "domain", material.getDomain(), "projectPath", material.getProjectPath(), "url", material.getUrl(), "revision", revision.getRevision()); return plugin(properties).setWorkingDirectory(workingDir); } }
public BuildCommand updateTo(String baseDir, RevisionContext revisionContext) { Revision revision = revisionContext.getLatestRevision(); String workingDir = material.workingdir(new File(baseDir)).getPath(); UrlArgument url = material.getUrlArgument(); return compose( echoWithPrefix("Start updating %s at revision %s from %s", material.updatingTarget(), revision.getRevision(), url.forDisplay()), secret(url.forCommandline(), url.forDisplay()), cloneIfNeeded(workingDir, revisionContext.numberOfModifications() + 1), fetchRemote(workingDir), unshallowIfNeeded(workingDir, revision, new Integer[]{GitMaterial.UNSHALLOW_TRYOUT_STEP, Integer.MAX_VALUE}), resetWorkingCopy(workingDir, revision), echoWithPrefix("Done.\n")); }
public List<Modification> modificationsSince(Revision revision) { InMemoryStreamConsumer consumer = inMemoryConsumer(); bombUnless(pull(consumer), "Failed to run hg pull command: " + consumer.getAllOutput()); CommandLine hg = hg("log", "-r", "tip:" + revision.getRevision(), "-b", branch, "--style", templatePath()); return new HgModificationSplitter(execute(hg)).filterOutRevision(revision); }
@Test public void shouldThrowExceptionWhenCurrentRevisionForUnknownMaterialNameRequested() { HgMaterial material = MaterialsMother.hgMaterial(); material.setName(new CaseInsensitiveString("foo")); try { assertThat(setUpModificationFor(material).getCurrentRevision("blah").getRevision(), is("a087402bd2a7828a130c1bdf43f2d9ef8f48fd46")); fail("should have raised an exeption for unknown material name"); } catch (Exception ignored) { } }
@Test public void shouldGetCurrentRevisionForMaterialByName() { MaterialRevisions revisions = new MaterialRevisions(); HgMaterial material = MaterialsMother.hgMaterial(); SvnMaterial svnMaterial = MaterialsMother.svnMaterial(); material.setName(new CaseInsensitiveString("hg_material")); revisions.addRevision(svnMaterial, new Modification(new Date(), "1024", "MOCK_LABEL-12", null)); revisions.addRevision(material, HG_MATERIAL_MODIFICATION); BuildCause buildCause = BuildCause.createWithModifications(revisions, ""); PipelineInstanceModel model = PipelineInstanceModel.createPipeline("pipeline", -1, "label", buildCause, new StageInstanceModels()); assertThat(model.getCurrentRevision("hg_material").getRevision(), is("a087402bd2a7828a130c1bdf43f2d9ef8f48fd46")); }