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

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

Introduction

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

Prototype

public String getRemoteName() 

Source Link

Document

Get the name of the remote ref.

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: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 a v  a 2s .c o 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 a v  a 2 s  . c  om
    }
    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 void infoFetchResults(Repository db, FetchResult result) throws IOException {
    boolean headerDisplayed = false;

    for (TrackingRefUpdate update : result.getTrackingRefUpdates()) {
        if (update.getResult() == RefUpdate.Result.NO_CHANGE) {
            // skip if not changed
            continue;
        }/*  w ww .j  a  va 2  s  .c  o m*/

        char idChar = asIdChar(update.getResult());
        String idLong = asIdLong(db, update);
        String remoteRef = abbreviateRef(update.getRemoteName());
        String localRef = abbreviateRef(update.getLocalName());

        if (!headerDisplayed) {
            System.out.printf("Fetch Results from URI: %s%n", result.getURI());
            headerDisplayed = true;
        }

        System.out.printf(" %c %-20s %-18s > %s%n", idChar, idLong, remoteRef, localRef);
    }

    // Now show any remote messages
    StringReader reader = null;
    BufferedReader buf = null;
    try {
        reader = new StringReader(result.getMessages());
        buf = new BufferedReader(reader);
        String line;
        while ((line = buf.readLine()) != null) {
            System.out.printf("[remote] %s%n", line);
        }
    } finally {
        IOUtils.closeQuietly(buf);
        IOUtils.closeQuietly(reader);
    }
}

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//from   www  .  jav  a2  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 void showFetchResult(final FetchResult r, boolean logOnly) {
    ObjectReader reader = repo.newObjectReader();
    PrintWriter out = new PrintWriter(System.out);
    try {/*from w w  w  .  j  a  va2 s.c om*/
        boolean shownURI = false;
        for (final TrackingRefUpdate u : r.getTrackingRefUpdates()) {
            if (u.getResult() == RefUpdate.Result.NO_CHANGE) {
                continue;
            }
            final char type = shortTypeOf(u.getResult());
            final String longType = longTypeOf(reader, u);
            final String src = abbreviateRef(u.getRemoteName(), false);
            final String dst = abbreviateRef(u.getLocalName(), true);

            if (!shownURI) {
                out.println("jGIT::from " + r.getURI());
                shownURI = true;
            }

            if (!logOnly) {
                out.format(" %c %-17s %-10s -> %s", type, longType, src, dst);
                out.println();
            }

        }
    } finally {
        reader.release();
    }
    showRemoteMessages(r.getMessages());
}

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]";
    }// ww w . j a va2s. c  om

    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.commonjava.gitwrap.BareGitRepositoryTest.java

License:Open Source License

@Test
public void cloneBare_NoBranch() throws IOException, GitWrapException, URISyntaxException {
    final File gitDir = new File(".git");
    if (gitDir.exists()) {
        final FileRepositoryBuilder builder = new FileRepositoryBuilder();
        builder.setGitDir(gitDir);/*from   w  w  w . j  a  v a 2s . com*/
        builder.setup();

        final FileRepository repository = new FileRepository(builder);
        final RemoteConfig config = new RemoteConfig(repository.getConfig(), "origin");

        testGitDir = File.createTempFile("git-clone.", ".git");
        testGitDir.delete();

        BareGitRepository.setProgressMonitor(new TextProgressMonitor());

        final BareGitRepository clone = BareGitRepository.cloneBare(config.getURIs().get(0).toString(),
                "origin", testGitDir);

        System.out.println(clone.getGitDir());

        System.out.println();

        final FetchResult fetchResult = clone.getLatestFetchResult();
        for (final Ref ref : fetchResult.getAdvertisedRefs()) {
            System.out.println(ref.getName());
        }

        System.out.println();

        for (final TrackingRefUpdate update : fetchResult.getTrackingRefUpdates()) {
            System.out.println(update.getLocalName() + " -> " + update.getRemoteName());
        }
    }
}

From source file:org.commonjava.gitwrap.GitRepositoryTest.java

License:Open Source License

@Test
public void cloneNonBare_NoBranch() throws IOException, GitWrapException, URISyntaxException {
    final File gitDir = new File(".git");
    if (gitDir.exists()) {
        final FileRepositoryBuilder builder = new FileRepositoryBuilder();
        builder.setGitDir(gitDir);//from   ww w  . j  a  va 2  s .  c o m
        builder.setup();

        final FileRepository repository = new FileRepository(builder);
        final RemoteConfig config = new RemoteConfig(repository.getConfig(), "origin");

        final File workDir = File.createTempFile("git-clone", "");
        workDir.delete();

        final File newGitDir = new File(workDir, ".git");

        GitRepository.setProgressMonitor(new TextProgressMonitor());

        final GitRepository clone = GitRepository.cloneWithWorkdir(config.getURIs().get(0).toString(), "origin",
                newGitDir, false);

        System.out.println(clone.getGitDir());

        System.out.println();

        final FetchResult fetchResult = clone.getLatestFetchResult();
        for (final Ref ref : fetchResult.getAdvertisedRefs()) {
            System.out.println(ref.getName());
        }

        System.out.println();

        for (final TrackingRefUpdate update : fetchResult.getTrackingRefUpdates()) {
            System.out.println(update.getLocalName() + " -> " + update.getRemoteName());
        }
    }
}

From source file:org.commonjava.gitwrap.GitRepositoryTest.java

License:Open Source License

@Test
public void cloneNonBare_BranchMasterToNakedRefname() throws IOException, GitWrapException, URISyntaxException {
    final File gitDir = new File(".git");
    if (gitDir.exists()) {
        final FileRepositoryBuilder builder = new FileRepositoryBuilder();
        builder.setGitDir(gitDir);/*from   w w w.j  a va2s  .c om*/
        builder.setup();

        final FileRepository repository = new FileRepository(builder);
        final RemoteConfig config = new RemoteConfig(repository.getConfig(), "origin");

        workDir = File.createTempFile("git-clone", "");
        workDir.delete();

        final File newGitDir = new File(workDir, ".git");

        GitRepository.setProgressMonitor(new TextProgressMonitor());

        final GitRepository clone = GitRepository.cloneWithWorkdir(config.getURIs().get(0).toString(), "origin",
                newGitDir, false);

        clone.createBranch(Constants.HEAD, "test-branch");

        System.out.println(clone.getGitDir());

        System.out.println();

        final FetchResult fetchResult = clone.getLatestFetchResult();
        for (final Ref ref : fetchResult.getAdvertisedRefs()) {
            System.out.println(ref.getName());
        }

        System.out.println();

        for (final TrackingRefUpdate update : fetchResult.getTrackingRefUpdates()) {
            System.out.println(update.getLocalName() + " -> " + update.getRemoteName());
        }
    }
}