Example usage for org.eclipse.jgit.transport FetchConnection getRefsMap

List of usage examples for org.eclipse.jgit.transport FetchConnection getRefsMap

Introduction

In this page you can find the example usage for org.eclipse.jgit.transport FetchConnection getRefsMap.

Prototype

Map<String, Ref> getRefsMap();

Source Link

Document

Get the complete map of refs advertised as available for fetching or pushing.

Usage

From source file:com.google.gerrit.server.git.PushOp.java

License:Apache License

private Map<String, Ref> listRemote(final Transport tn) throws NotSupportedException, TransportException {
    final FetchConnection fc = tn.openFetch();
    try {//w w  w . ja  va 2 s .  co m
        return fc.getRefsMap();
    } finally {
        fc.close();
    }
}

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

License:Apache License

/**
 * Removes branches of a bare repository which are not present in a remote repository
 *///  w w  w  .jav a  2  s  . c o  m
private static void pruneRemovedBranches(@NotNull Repository db, @NotNull Transport tn) throws IOException {
    FetchConnection conn = null;
    try {
        conn = tn.openFetch();
        Map<String, Ref> remoteRefMap = conn.getRefsMap();
        for (Map.Entry<String, Ref> e : db.getAllRefs().entrySet()) {
            if (!remoteRefMap.containsKey(e.getKey())) {
                try {
                    RefUpdate refUpdate = db.getRefDatabase().newUpdate(e.getKey(), false);
                    refUpdate.setForceUpdate(true);
                    refUpdate.delete();
                } catch (Exception ex) {
                    LOG.info("Failed to prune removed ref " + e.getKey(), ex);
                    break;
                }
            }
        }
    } finally {
        if (conn != null)
            conn.close();
    }
}

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

License:Apache License

@NotNull
private Map<String, Ref> getRemoteRefs(@NotNull Repository db, @NotNull GitVcsRoot gitRoot) throws Exception {
    long retryInterval = myConfig.getConnectionRetryIntervalMillis();
    int attemptsLeft = myConfig.getConnectionRetryAttempts();
    int timeout = myConfig.getRepositoryStateTimeoutSeconds();
    while (true) {
        final long start = System.currentTimeMillis();
        Transport transport = null;//  ww  w.  j  a  va  2s.  c  o m
        FetchConnection connection = null;
        try {
            transport = myTransportFactory.createTransport(db, gitRoot.getRepositoryFetchURL(),
                    gitRoot.getAuthSettings(), timeout);
            connection = transport.openFetch();
            return connection.getRefsMap();
        } catch (NotSupportedException nse) {
            throw friendlyNotSupportedException(gitRoot, nse);
        } catch (TransportException te) {
            attemptsLeft--;
            if (isRecoverable(te) && attemptsLeft > 0) {
                LOG.warn("List remote refs failed: " + te.getMessage() + ", " + attemptsLeft
                        + " attempt(s) left");
            } else {
                throw friendlyTransportException(te, gitRoot);
            }
        } catch (WrongPassphraseException e) {
            throw new VcsException(e.getMessage(), e);
        } finally {
            if (connection != null)
                connection.close();
            if (transport != null)
                transport.close();
            final long finish = System.currentTimeMillis();
            PERFORMANCE_LOG.debug("[getRemoteRefs] repository: " + LogUtil.describe(gitRoot) + ", took "
                    + (finish - start) + "ms");
        }
        Thread.sleep(retryInterval);
        retryInterval *= 2;
    }
}