Example usage for org.eclipse.jgit.transport TrackingRefUpdate getNewObjectId

List of usage examples for org.eclipse.jgit.transport TrackingRefUpdate getNewObjectId

Introduction

In this page you can find the example usage for org.eclipse.jgit.transport TrackingRefUpdate getNewObjectId.

Prototype

public ObjectId getNewObjectId() 

Source Link

Document

Get the new value the ref will be (or was) updated to.

Usage

From source file:com.gitblit.service.MirrorService.java

License:Apache License

@Override
public void run() {
    if (!isReady()) {
        return;//from   ww  w.  j  a  va 2 s.  com
    }

    running.set(true);

    for (String repositoryName : repositoryManager.getRepositoryList()) {
        if (forceClose.get()) {
            break;
        }
        if (repositoryManager.isCollectingGarbage(repositoryName)) {
            logger.debug("mirror is skipping {} garbagecollection", repositoryName);
            continue;
        }
        RepositoryModel model = null;
        Repository repository = null;
        try {
            model = repositoryManager.getRepositoryModel(repositoryName);
            if (!model.isMirror && !model.isBare) {
                // repository must be a valid bare git mirror
                logger.debug("mirror is skipping {} !mirror !bare", repositoryName);
                continue;
            }

            repository = repositoryManager.getRepository(repositoryName);
            if (repository == null) {
                logger.warn(
                        MessageFormat.format("MirrorExecutor is missing repository {0}?!?", repositoryName));
                continue;
            }

            // automatically repair (some) invalid fetch ref specs
            if (!repairAttempted.contains(repositoryName)) {
                repairAttempted.add(repositoryName);
                JGitUtils.repairFetchSpecs(repository);
            }

            // find the first mirror remote - there should only be one
            StoredConfig rc = repository.getConfig();
            RemoteConfig mirror = null;
            List<RemoteConfig> configs = RemoteConfig.getAllRemoteConfigs(rc);
            for (RemoteConfig config : configs) {
                if (config.isMirror()) {
                    mirror = config;
                    break;
                }
            }

            if (mirror == null) {
                // repository does not have a mirror remote
                logger.debug("mirror is skipping {} no mirror remote found", repositoryName);
                continue;
            }

            logger.debug("checking {} remote {} for ref updates", repositoryName, mirror.getName());
            final boolean testing = false;
            Git git = new Git(repository);
            FetchResult result = git.fetch().setRemote(mirror.getName()).setDryRun(testing).call();
            Collection<TrackingRefUpdate> refUpdates = result.getTrackingRefUpdates();
            if (refUpdates.size() > 0) {
                ReceiveCommand ticketBranchCmd = null;
                for (TrackingRefUpdate ru : refUpdates) {
                    StringBuilder sb = new StringBuilder();
                    sb.append("updated mirror ");
                    sb.append(repositoryName);
                    sb.append(" ");
                    sb.append(ru.getRemoteName());
                    sb.append(" -> ");
                    sb.append(ru.getLocalName());
                    if (ru.getResult() == Result.FORCED) {
                        sb.append(" (forced)");
                    }
                    sb.append(" ");
                    sb.append(ru.getOldObjectId() == null ? "" : ru.getOldObjectId().abbreviate(7).name());
                    sb.append("..");
                    sb.append(ru.getNewObjectId() == null ? "" : ru.getNewObjectId().abbreviate(7).name());
                    logger.info(sb.toString());

                    if (BranchTicketService.BRANCH.equals(ru.getLocalName())) {
                        ReceiveCommand.Type type = null;
                        switch (ru.getResult()) {
                        case NEW:
                            type = Type.CREATE;
                            break;
                        case FAST_FORWARD:
                            type = Type.UPDATE;
                            break;
                        case FORCED:
                            type = Type.UPDATE_NONFASTFORWARD;
                            break;
                        default:
                            type = null;
                            break;
                        }

                        if (type != null) {
                            ticketBranchCmd = new ReceiveCommand(ru.getOldObjectId(), ru.getNewObjectId(),
                                    ru.getLocalName(), type);
                        }
                    }
                }

                if (ticketBranchCmd != null) {
                    repository.fireEvent(new ReceiveCommandEvent(model, ticketBranchCmd));
                }
            }
        } catch (Exception e) {
            logger.error("Error updating mirror " + repositoryName, e);
        } finally {
            // cleanup
            if (repository != null) {
                repository.close();
            }
        }
    }

    running.set(false);
}

From source file:com.madgag.agit.GitFetchService.java

License:Open Source License

public FetchResult fetch(RemoteConfig remote, Collection<RefSpec> toFetch) {
    Log.d(TAG, "About to run fetch : " + remote.getName() + " " + remote.getURIs());

    Transport transport = transportFactory.transportFor(remote);
    try {/*from w  ww  .j a v  a2s .  c  om*/
        FetchResult fetchResult = transport
                .fetch(new MessagingProgressMonitor(progressListener, cancellationSignaller), toFetch);
        Log.d(TAG, "Fetch complete with : " + fetchResult);
        for (TrackingRefUpdate update : fetchResult.getTrackingRefUpdates()) {
            Log.d(TAG, "TrackingRefUpdate : " + update.getLocalName() + " old=" + update.getOldObjectId()
                    + " new=" + update.getNewObjectId());
        }
        repoUpdateBroadcaster.broadcastUpdate();
        return fetchResult;
    } catch (NotSupportedException e) {
        throw new RuntimeException(e);
    } catch (TransportException e) {
        Log.e(TAG, "TransportException ", e);
        String message = e.getMessage();
        Throwable cause = e.getCause();
        if (cause != null && cause instanceof JSchException) {
            message = "SSH: " + ((JSchException) cause).getMessage();
        }
        throw new RuntimeException(message, e);
    } finally {
        Log.d(TAG, "Closing transport " + transport);
        transport.close();
    }
}

From source file:jbyoshi.gitupdate.processor.Fetch.java

License:Apache License

@Override
public void process(Repository repo, Git git, String remote, String fullRemote, Report report)
        throws GitAPIException, IOException {
    FetchResult result = git.fetch().setRemoveDeletedRefs(true).setCredentialsProvider(Prompts.INSTANCE)
            .setRemote(remote).call();/*from  w w w  .  j  ava2s . co  m*/
    for (TrackingRefUpdate update : result.getTrackingRefUpdates()) {
        if (update.getRemoteName().equals(Constants.R_HEADS + Constants.HEAD)) {
            continue;
        }
        StringBuilder text = new StringBuilder(Utils.getShortBranch(update.getRemoteName())).append(": ");
        String oldId = update.getOldObjectId().name();
        if (update.getOldObjectId().equals(ObjectId.zeroId())) {
            oldId = "new branch";
        }
        String newId = update.getNewObjectId().name();
        if (update.getNewObjectId().equals(ObjectId.zeroId())) {
            newId = "deleted";
            for (String branch : Utils.getLocalBranches(repo).keySet()) {
                if (update.getLocalName()
                        .equals(new BranchConfig(repo.getConfig(), branch).getRemoteTrackingBranch())) {
                    repo.getConfig().unset("branches", branch, "remote");
                    repo.getConfig().save();
                }
            }
        }
        text.append(oldId).append(" -> ").append(newId);
        report.newChild(text.toString()).modified();
    }
}

From source file:jetbrains.buildServer.buildTriggers.vcs.git.Fetcher.java

License:Apache License

private static void logFetchResults(@NotNull FetchResult result) {
    for (TrackingRefUpdate update : result.getTrackingRefUpdates()) {
        StringBuilder msg = new StringBuilder();
        msg.append("update ref remote name: ").append(update.getRemoteName()).append(", local name: ")
                .append(update.getLocalName()).append(", old object id: ")
                .append(update.getOldObjectId().name()).append(", new object id: ")
                .append(update.getNewObjectId().name()).append(", result: ").append(update.getResult());
        System.out.println(msg);//from  w  ww . j  ava 2 s. c  o m
    }
    String additionalMsgs = result.getMessages();
    if (additionalMsgs.length() > 0) {
        System.out.println("Remote process messages: " + additionalMsgs);
    }
}

From source file:net.erdfelt.android.sdkfido.git.internal.GitInfo.java

License:Apache License

public static String asIdLong(Repository db, TrackingRefUpdate update) {
    RefUpdate.Result result = update.getResult();

    // Fast IDs// ww w. j  a va 2  s . c  om
    switch (result) {
    case LOCK_FAILURE:
        return "[lock failure]";
    case IO_FAILURE:
        return "[i/o error]";
    case REJECTED:
        return "[rejected]";
    }

    // Deleted Check Next
    if (ObjectId.zeroId().equals(update.getNewObjectId())) {
        return "[deleted]";
    }

    // All other results
    switch (result) {
    case NEW:
        if (update.getRemoteName().startsWith(Constants.R_HEADS)) {
            return "[new branch]";
        }

        if (update.getLocalName().startsWith(Constants.R_TAGS)) {
            return "[new tag]";
        }

        return "[new]";
    case FORCED: {
        String oldOID = update.getOldObjectId().abbreviate(ABBREV_LEN).name();
        String newOID = update.getNewObjectId().abbreviate(ABBREV_LEN).name();
        return oldOID + "..." + newOID;
    }
    case FAST_FORWARD: {
        String oldOID = update.getOldObjectId().abbreviate(ABBREV_LEN).name();
        String newOID = update.getNewObjectId().abbreviate(ABBREV_LEN).name();
        return oldOID + ".." + newOID;
    }
    case NO_CHANGE:
        return "[up to date]";
    default:
        return "[" + result.name() + "]";
    }
}

From source file:net.mobid.codetraq.runnables.GitChecker.java

License:Open Source License

private String longTypeOf(ObjectReader reader, final TrackingRefUpdate u) {
    final RefUpdate.Result r = u.getResult();
    if (r == RefUpdate.Result.LOCK_FAILURE)
        return "[lock fail]";
    if (r == RefUpdate.Result.IO_FAILURE)
        return "[i/o error]";
    if (r == RefUpdate.Result.REJECTED)
        return "[rejected]";
    if (ObjectId.zeroId().equals(u.getNewObjectId()))
        return "[deleted]";

    if (r == RefUpdate.Result.NEW) {
        if (u.getRemoteName().startsWith(Constants.R_HEADS))
            return "[new branch]";
        else if (u.getLocalName().startsWith(Constants.R_TAGS))
            return "[new tag]";
        return "[new]";
    }//from w ww .  ja v a2 s . c  o m

    if (r == RefUpdate.Result.FORCED) {
        final String aOld = safeAbbreviate(reader, u.getOldObjectId());
        final String aNew = safeAbbreviate(reader, u.getNewObjectId());
        return aOld + "..." + aNew;
    }

    if (r == RefUpdate.Result.FAST_FORWARD) {
        final String aOld = safeAbbreviate(reader, u.getOldObjectId());
        final String aNew = safeAbbreviate(reader, u.getNewObjectId());
        return aOld + ".." + aNew;
    }

    if (r == RefUpdate.Result.NO_CHANGE)
        return "[up to date]";
    return "[" + r.name() + "]";
}

From source file:org.exist.git.xquery.Push.java

License:Open Source License

@Override
public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException {

    try {//from  www  . j a va 2  s.  c  o  m
        String localPath = args[0].getStringValue();
        if (!(localPath.endsWith("/")))
            localPath += File.separator;

        Git git = Git.open(new Resource(localPath), FS);

        Iterable<PushResult> answer = git.push().setCredentialsProvider(
                new UsernamePasswordCredentialsProvider(args[1].getStringValue(), args[2].getStringValue()))
                .call();

        MemTreeBuilder builder = getContext().getDocumentBuilder();

        int nodeNr = builder.startElement(PUSH, null);

        for (PushResult push : answer) {

            builder.startElement(RESULT, null);

            for (TrackingRefUpdate tracking : push.getTrackingRefUpdates()) {

                builder.startElement(TRACKING_REF_UPDATE, null);

                builder.addAttribute(REMOTE_NAME, tracking.getRemoteName());
                builder.addAttribute(LOCAL_NAME, tracking.getLocalName());

                //builder.addAttribute(FORCE_UPDATE, Boolean.toString(tracking.forceUpdate));

                builder.addAttribute(OLD_OBJECTID, tracking.getOldObjectId().name());
                builder.addAttribute(NEW_OBJECTID, tracking.getNewObjectId().name());
            }

            for (RemoteRefUpdate remote : push.getRemoteUpdates()) {

                builder.startElement(REMOTE_REF_UPDATE, null);

                builder.addAttribute(REMOTE_NAME, remote.getRemoteName());
                builder.addAttribute(STATUS, remote.getStatus().name());

                if (remote.isExpectingOldObjectId())
                    builder.addAttribute(EXPECTED_OLD_OBJECTID, remote.getExpectedOldObjectId().name());

                if (remote.getNewObjectId() != null)
                    builder.addAttribute(NEW_OBJECTID, remote.getNewObjectId().name());

                builder.addAttribute(FAST_FORWARD, Boolean.toString(remote.isFastForward()));
                builder.addAttribute(FORCE_UPDATE, Boolean.toString(remote.isForceUpdate()));

                if (remote.getMessage() != null)
                    builder.characters(remote.getMessage());

                builder.endElement();
            }
            builder.endElement();
        }

        builder.endElement();

        return builder.getDocument().getNode(nodeNr);
    } catch (Throwable e) {
        e.printStackTrace();
        throw new XPathException(this, Module.EXGIT001, e);
    }
}

From source file:org.flowerplatform.web.git.GitUtils.java

License:Open Source License

/**
 * Creates a string message to be displayed on client side
 * to inform the user about fetch result operation.
 *///from w ww  . j a v a  2 s  .c  o  m
public String handleFetchResult(FetchResult fetchResult) {
    StringBuilder sb = new StringBuilder();
    if (fetchResult.getTrackingRefUpdates().size() > 0) {
        // handle result
        for (TrackingRefUpdate updateRes : fetchResult.getTrackingRefUpdates()) {
            sb.append(updateRes.getRemoteName());
            sb.append(" -> ");
            sb.append(updateRes.getLocalName());
            sb.append(" ");
            sb.append(
                    updateRes.getOldObjectId() == null ? "" : updateRes.getOldObjectId().abbreviate(7).name());
            sb.append("..");
            sb.append(
                    updateRes.getNewObjectId() == null ? "" : updateRes.getNewObjectId().abbreviate(7).name());
            sb.append(" ");
            Result res = updateRes.getResult();
            switch (res) {
            case NOT_ATTEMPTED:
            case NO_CHANGE:
            case NEW:
            case FORCED:
            case FAST_FORWARD:
            case RENAMED:
                sb.append("OK.");
                break;
            case REJECTED:
                sb.append("Fetch rejected, not a fast-forward.");
            case REJECTED_CURRENT_BRANCH:
                sb.append("Rejected because trying to delete the current branch.");
            default:
                sb.append(res.name());
            }
            sb.append("\n");
        }
    } else {
        sb.append("OK.");
    }
    return sb.toString();
}