Example usage for org.eclipse.jgit.transport Transport push

List of usage examples for org.eclipse.jgit.transport Transport push

Introduction

In this page you can find the example usage for org.eclipse.jgit.transport Transport push.

Prototype

List push

To view the source code for org.eclipse.jgit.transport Transport push.

Click Source Link

Document

Specifications to apply during push.

Usage

From source file:com.gmail.cjbooms.thesis.pythonappengine.server.git.GitCommandsServiceImpl.java

License:Open Source License

/**
 * Push Changes to a Remote Repository//from w  w w  . ja  v a 2 s. c o m
 *
 * @param pathToLocalRepository Root Location Of Repository or Project
 * @param remoteRepoURL The URL of the Remote Repository to push to
 * @param userName The remote login user name
 * @param password The remote login password
 * @throws IOException, GitAPIException, URISyntaxException
 */
public void pushLocalCommitsToRemoteRepository(String pathToLocalRepository, String remoteRepoURL,
        String userName, String password) throws IOException {

    File repositoryDirectory = new File(pathToLocalRepository);
    Git localGitRepositoryRef = Git.open(repositoryDirectory);
    Repository localRepository = localGitRepositoryRef.getRepository();

    URIish remoteURI = null;
    try {
        remoteURI = new URIish(remoteRepoURL);
    } catch (URISyntaxException e) {
        throw new RuntimeException(e.getMessage());
    }
    Transport t = Transport.open(localRepository, remoteURI);
    ((TransportHttp) t).setUseSmartHttp(true);
    RemoteRefUpdate remoteRefUpdate = new RemoteRefUpdate(localRepository, localRepository.getRef("master"),
            "refs/heads/master", true, "refs/heads/master", null);
    t.setCredentialsProvider(new UsernamePasswordCredentialsProvider(userName, password));
    t.push(NullProgressMonitor.INSTANCE, Collections.singleton(remoteRefUpdate));

}

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

License:Apache License

private PushResult pushVia(final Transport tn) throws IOException, NotSupportedException, TransportException {
    tn.applyConfig(config);/* w ww.  j a va 2s  . c  o  m*/
    tn.setCredentialsProvider(credentialsProvider);

    final List<RemoteRefUpdate> todo = generateUpdates(tn);
    if (todo.isEmpty()) {
        // If we have no commands selected, we have nothing to do.
        // Calling JGit at this point would just redo the work we
        // already did, and come up with the same answer. Instead
        // send back an empty result.
        //
        return new PushResult();
    }

    return tn.push(NullProgressMonitor.INSTANCE, todo);
}

From source file:com.googlesource.gerrit.plugins.replication.PushOne.java

License:Apache License

private PushResult pushVia(Transport tn) throws IOException, NotSupportedException, TransportException {
    tn.applyConfig(config);/* w w  w .ja v  a 2  s  . c  o  m*/
    tn.setCredentialsProvider(credentialsProvider);

    List<RemoteRefUpdate> todo = generateUpdates(tn);
    if (todo.isEmpty()) {
        // If we have no commands selected, we have nothing to do.
        // Calling JGit at this point would just redo the work we
        // already did, and come up with the same answer. Instead
        // send back an empty result.
        return new PushResult();
    }

    repLog.info("Push to " + uri + " references: " + todo);

    return tn.push(NullProgressMonitor.INSTANCE, todo);
}

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

License:Open Source License

public BareGitRepository push(final String name) throws GitWrapException {
    try {/*from  w w  w.j ava 2s .  com*/
        final StoredConfig config = repository.getConfig();
        final RemoteConfig remote = new RemoteConfig(config, name);

        final List<URIish> pushURIs = remote.getPushURIs();
        final List<RefSpec> pushRefSpecs = remote.getPushRefSpecs();

        final Collection<RemoteRefUpdate> remoteRefUpdates = Transport.findRemoteRefUpdatesFor(repository,
                pushRefSpecs, null);

        for (final URIish uri : pushURIs) {
            final Collection<RemoteRefUpdate> updates = new ArrayList<RemoteRefUpdate>();
            for (final RemoteRefUpdate rru : remoteRefUpdates) {
                updates.add(new RemoteRefUpdate(rru, null));
            }

            Transport transport = null;
            try {
                transport = Transport.open(repository, uri);
                transport.applyConfig(remote);
                final PushResult result = transport.push(MONITOR, updates);

                if (result.getMessages().length() > 0 && LOGGER.isDebugEnabled()) {
                    LOGGER.debug(result.getMessages());
                }
            } finally {
                if (transport != null) {
                    transport.close();
                }
            }
        }
    } catch (final NotSupportedException e) {
        throw new GitWrapException(
                "Cannot push to repository: %s. Transport is not supported.\nNested error: %s", e, name,
                e.getMessage());
    } catch (final TransportException e) {
        throw new GitWrapException("Transport failed for repository push: %s.\nNested error: %s", e, name,
                e.getMessage());
    } catch (final URISyntaxException e) {
        throw new GitWrapException("Invalid URI for repository push: %s.\nNested error: %s", e, name,
                e.getMessage());
    } catch (final IOException e) {
        throw new GitWrapException("Transport failed for repository push: %s.\nNested error: %s", e, name,
                e.getMessage());
    }

    return this;
}

From source file:org.eclipse.egit.core.op.PushOperation.java

License:Open Source License

/**
 * Execute operation and store result. Operation is executed independently
 * on each remote repository./*from   w  ww . j a  va  2s  .c  om*/
 * <p>
 *
 * @param actMonitor
 *            the monitor to be used for reporting progress and responding
 *            to cancellation. The monitor is never <code>null</code>
 *
 * @throws InvocationTargetException
 *             Cause of this exceptions may include
 *             {@link TransportException}, {@link NotSupportedException} or
 *             some unexpected {@link RuntimeException}.
 */
public void run(IProgressMonitor actMonitor) throws InvocationTargetException {

    if (operationResult != null)
        throw new IllegalStateException(CoreText.OperationAlreadyExecuted);

    for (URIish uri : this.specification.getURIs()) {
        for (RemoteRefUpdate update : this.specification.getRefUpdates(uri))
            if (update.getStatus() != Status.NOT_ATTEMPTED)
                throw new IllegalStateException(CoreText.RemoteRefUpdateCantBeReused);
    }
    IProgressMonitor monitor;
    if (actMonitor == null)
        monitor = new NullProgressMonitor();
    else
        monitor = actMonitor;

    final int totalWork = specification.getURIsNumber() * WORK_UNITS_PER_TRANSPORT;
    if (dryRun)
        monitor.beginTask(CoreText.PushOperation_taskNameDryRun, totalWork);
    else
        monitor.beginTask(CoreText.PushOperation_taskNameNormalRun, totalWork);

    operationResult = new PushOperationResult();

    for (final URIish uri : specification.getURIs()) {
        final SubProgressMonitor subMonitor = new SubProgressMonitor(monitor, WORK_UNITS_PER_TRANSPORT,
                SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
        Transport transport = null;
        try {
            if (monitor.isCanceled()) {
                operationResult.addOperationResult(uri, CoreText.PushOperation_resultCancelled);
                continue;
            }
            transport = Transport.open(localDb, uri);
            if (credentialsProvider != null)
                transport.setCredentialsProvider(credentialsProvider);
            transport.setTimeout(this.timeout);

            if (rc != null)
                transport.applyConfig(rc);
            transport.setDryRun(dryRun);
            final EclipseGitProgressTransformer gitSubMonitor = new EclipseGitProgressTransformer(subMonitor);
            final PushResult pr = transport.push(gitSubMonitor, specification.getRefUpdates(uri));
            operationResult.addOperationResult(uri, pr);
            monitor.worked(WORK_UNITS_PER_TRANSPORT);
        } catch (final NoRemoteRepositoryException e) {
            operationResult.addOperationResult(uri,
                    NLS.bind(CoreText.PushOperation_resultNoServiceError, e.getMessage()));
        } catch (final TransportException e) {
            operationResult.addOperationResult(uri,
                    NLS.bind(CoreText.PushOperation_resultTransportError, e.getMessage()));
        } catch (final NotSupportedException e) {
            operationResult.addOperationResult(uri,
                    NLS.bind(CoreText.PushOperation_resultNotSupported, e.getMessage()));
        } finally {
            if (transport != null) {
                transport.close();
            }
            // Dirty trick to get things always working.
            subMonitor.beginTask("", WORK_UNITS_PER_TRANSPORT); //$NON-NLS-1$
            subMonitor.done();
            subMonitor.done();
        }
    }
    monitor.done();
}

From source file:org.kuali.student.git.importer.JGitPushMain.java

License:Educational Community License

public static void push(Repository repo, String remoteName, List<RemoteRefUpdate> refsToUpdate,
        String remoteUserName, String remotePassword) throws IOException, URISyntaxException {

    ArrayList<PushResult> pushResults = new ArrayList<PushResult>(3);

    RemoteConfig config = new RemoteConfig(repo.getConfig(), remoteName);

    final List<Transport> transports;
    transports = Transport.openAll(repo, config, Transport.Operation.PUSH);

    for (final Transport transport : transports) {
        transport.setPushThin(false);/*from  ww w  . ja va2s  .co m*/
        transport.setOptionReceivePack(RemoteConfig.DEFAULT_RECEIVE_PACK);
        transport.setDryRun(false);

        configure(transport, remoteUserName, remotePassword);

        try {
            PushResult result = transport.push(new TextProgressMonitor(), refsToUpdate, System.out);
            pushResults.add(result);

        } catch (TransportException e) {
            throw new TransportException(e.getMessage(), e);
        } finally {
            transport.close();
        }
    }

}