private void logPushResultDetails(Iterable<PushResult> forcePushResult) { if (log.isInfoEnabled()) { StringBuilder sb = new StringBuilder("force push results : \n"); for (PushResult pushResult : forcePushResult) { Collection<RemoteRefUpdate> pushResultDetails = pushResult.getRemoteUpdates(); for (RemoteRefUpdate result : pushResultDetails) { sb.append("- ").append(result.getRemoteName()) .append(" - ").append(result.getStatus().name()) .append(" - ").append(result.getNewObjectId()); } } log.info(sb.toString()); } }
message = remoteRefUpdate.getMessage(); } else { message = "Non-success push status: " + remoteRefUpdate.getStatus().toString();
.rejected(from, to, status.toString())); break;
throw new RepositoryClientException( "could not update ref ".concat(refUpdate.getSrcRef()).concat( " status ".concat(refUpdate.getStatus().toString())));
message = remoteRefUpdate.getMessage(); } else { message = "Non-success push status: " + remoteRefUpdate.getStatus().toString();
if (failedResult(trackingStatus)) { if (pr.getMessages() != null && pr.getMessages().length() > 0) { throw new JGitFlowGitAPIException("error pushing to " + branchToPush + " - status: " + trackingStatus.name() + " - " + pr.getMessages()); } else { throw new JGitFlowGitAPIException("error pushing to " + branchToPush + " - " + trackingStatus.name());
@Override public void execute() throws GitException, InterruptedException { try (Repository repo = getRepository()) { RefSpec ref = (refspec != null) ? new RefSpec(fixRefSpec(repo)) : Transport.REFSPEC_PUSH_ALL; listener.getLogger().println("RefSpec is \""+ref+"\"."); Git g = git(repo); Config config = g.getRepository().getConfig(); config.setString("remote", "org_jenkinsci_plugins_gitclient_JGitAPIImpl", "url", remote.toPrivateASCIIString()); org.eclipse.jgit.api.PushCommand pc = g.push().setRemote("org_jenkinsci_plugins_gitclient_JGitAPIImpl").setRefSpecs(ref) .setProgressMonitor(new JGitProgressMonitor(listener)) .setCredentialsProvider(getProvider()) .setForce(force); if(tags) { pc.setPushTags(); } Iterable<PushResult> results = pc.call(); for(PushResult result:results) for(RemoteRefUpdate update:result.getRemoteUpdates()) { RemoteRefUpdate.Status status = update.getStatus(); if(!OK.equals(status)&&!UP_TO_DATE.equals(status)) { throw new GitException(update.getMessage() + " " + status + " for '" + ref + "' refspec '" + refspec + "' to " + remote.toPrivateASCIIString()); } } config.unset("remote", "org_jenkinsci_plugins_gitclient_JGitAPIImpl", "url"); } catch (IOException | JGitInternalException | GitAPIException e) { throw new GitException(e); } }
/** * @inheritDoc */ @Override public Iterable<PushResult> push(Git git, String username, String password, String reference, String remote, boolean force) { UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); try { Iterable<PushResult> results = git .push() .setCredentialsProvider(credentialsProvider) .add(reference) .setRemote(remote) .setForce(force) .call(); for(PushResult result : results){ RemoteRefUpdate update = result.getRemoteUpdate(reference); RemoteRefUpdate.Status status = update.getStatus(); if(!(status.equals(RemoteRefUpdate.Status.OK)||status.equals(RemoteRefUpdate.Status.UP_TO_DATE))){ throw new RuntimeException("Failed to push changes to origin"); } } return results; } catch (GitAPIException e) { throw new RuntimeException("Failed to push to origin", e); } }
void copyStatusToResult() { if (cmd.getResult() == NOT_ATTEMPTED) { switch (getStatus()) { case OK: case UP_TO_DATE: case NON_EXISTING: cmd.setResult(OK); break; case REJECTED_NODELETE: cmd.setResult(REJECTED_NODELETE); break; case REJECTED_NONFASTFORWARD: cmd.setResult(REJECTED_NONFASTFORWARD); break; case REJECTED_OTHER_REASON: cmd.setResult(REJECTED_OTHER_REASON, getMessage()); break; default: cmd.setResult(REJECTED_OTHER_REASON, getStatus().name()); break; } } } }
void copyStatusToResult() { if (cmd.getResult() == NOT_ATTEMPTED) { switch (getStatus()) { case OK: case UP_TO_DATE: case NON_EXISTING: cmd.setResult(OK); break; case REJECTED_NODELETE: cmd.setResult(REJECTED_NODELETE); break; case REJECTED_NONFASTFORWARD: cmd.setResult(REJECTED_NONFASTFORWARD); break; case REJECTED_OTHER_REASON: cmd.setResult(REJECTED_OTHER_REASON, getMessage()); break; default: cmd.setResult(REJECTED_OTHER_REASON, getStatus().name()); break; } } } }
/** * Inspect the push returns to know if the push command has succeeded. * * @param call The push results object. * @return Returns <code>true</code> pushed, <code>false</code> otherwise. */ private static boolean isPushed(Iterable<PushResult> call) { for (PushResult pr : call) { Optional<RemoteRefUpdate> any = pr.getRemoteUpdates().stream() .filter(ru -> !(RemoteRefUpdate.Status.OK.equals(ru.getStatus()) || RemoteRefUpdate.Status.UP_TO_DATE.equals(ru.getStatus()))).findAny(); if (any.isPresent()) { return false; } } return true; }
void copyStatusToResult() { if (cmd.getResult() == NOT_ATTEMPTED) { switch (getStatus()) { case OK: case UP_TO_DATE: case NON_EXISTING: cmd.setResult(OK); break; case REJECTED_NODELETE: cmd.setResult(REJECTED_NODELETE); break; case REJECTED_NONFASTFORWARD: cmd.setResult(REJECTED_NONFASTFORWARD); break; case REJECTED_OTHER_REASON: cmd.setResult(REJECTED_OTHER_REASON, getMessage()); break; default: cmd.setResult(REJECTED_OTHER_REASON, getStatus().name()); break; } } } }