Example usage for org.eclipse.jgit.transport RemoteConfig setPushRefSpecs

List of usage examples for org.eclipse.jgit.transport RemoteConfig setPushRefSpecs

Introduction

In this page you can find the example usage for org.eclipse.jgit.transport RemoteConfig setPushRefSpecs.

Prototype

public void setPushRefSpecs(List<RefSpec> specs) 

Source Link

Document

Override existing push specifications with new ones.

Usage

From source file:org.eclipse.che.git.impl.jgit.JGitConnection.java

License:Open Source License

@Override
public void remoteUpdate(RemoteUpdateRequest request) throws GitException {
    String remoteName = request.getName();
    if (isNullOrEmpty(remoteName)) {
        throw new IllegalArgumentException(ERROR_UPDATE_REMOTE_NAME_MISSING);
    }/*from   w  w  w. j  av  a 2 s .c  o m*/

    StoredConfig config = repository.getConfig();
    Set<String> remoteNames = config.getSubsections(ConfigConstants.CONFIG_KEY_REMOTE);
    if (!remoteNames.contains(remoteName)) {
        throw new IllegalArgumentException("Remote " + remoteName + " not found. ");
    }

    RemoteConfig remoteConfig;
    try {
        remoteConfig = new RemoteConfig(config, remoteName);
    } catch (URISyntaxException e) {
        throw new GitException(e.getMessage(), e);
    }

    List<String> branches = request.getBranches();
    if (!branches.isEmpty()) {
        if (!request.isAddBranches()) {
            remoteConfig.setFetchRefSpecs(Collections.emptyList());
            remoteConfig.setPushRefSpecs(Collections.emptyList());
        } else {
            // Replace wildcard refSpec if any.
            remoteConfig.removeFetchRefSpec(
                    new RefSpec(Constants.R_HEADS + "*" + ":" + Constants.R_REMOTES + remoteName + "/*")
                            .setForceUpdate(true));
            remoteConfig.removeFetchRefSpec(
                    new RefSpec(Constants.R_HEADS + "*" + ":" + Constants.R_REMOTES + remoteName + "/*"));
        }

        // Add new refSpec.
        for (String branch : branches) {
            remoteConfig.addFetchRefSpec(new RefSpec(
                    Constants.R_HEADS + branch + ":" + Constants.R_REMOTES + remoteName + "/" + branch)
                            .setForceUpdate(true));
        }
    }

    // Remove URLs first.
    for (String url : request.getRemoveUrl()) {
        try {
            remoteConfig.removeURI(new URIish(url));
        } catch (URISyntaxException e) {
            LOG.debug(ERROR_REMOVING_INVALID_URL);
        }
    }

    // Add new URLs.
    for (String url : request.getAddUrl()) {
        try {
            remoteConfig.addURI(new URIish(url));
        } catch (URISyntaxException e) {
            throw new IllegalArgumentException("Remote url " + url + " is invalid. ");
        }
    }

    // Remove URLs for pushing.
    for (String url : request.getRemovePushUrl()) {
        try {
            remoteConfig.removePushURI(new URIish(url));
        } catch (URISyntaxException e) {
            LOG.debug(ERROR_REMOVING_INVALID_URL);
        }
    }

    // Add URLs for pushing.
    for (String url : request.getAddPushUrl()) {
        try {
            remoteConfig.addPushURI(new URIish(url));
        } catch (URISyntaxException e) {
            throw new IllegalArgumentException("Remote push url " + url + " is invalid. ");
        }
    }

    remoteConfig.update(config);

    try {
        config.save();
    } catch (IOException exception) {
        throw new GitException(exception.getMessage(), exception);
    }
}

From source file:org.eclipse.egit.ui.internal.push.PushWizard.java

License:Open Source License

private void saveRefSpecs() {
    final RemoteConfig rc = repoPage.getSelection().getConfig();
    rc.setPushRefSpecs(refSpecPage.getRefSpecs());
    final StoredConfig config = localDb.getConfig();
    rc.update(config);//from   w ww .  j  a  va2  s . co  m
    try {
        config.save();
    } catch (final IOException e) {
        ErrorDialog.openError(getShell(), UIText.PushWizard_cantSaveTitle, UIText.PushWizard_cantSaveMessage,
                new Status(IStatus.WARNING, Activator.getPluginId(), e.getMessage(), e));
        // Continue, it's not critical.
    }
}

From source file:org.eclipse.egit.ui.internal.repository.NewRemoteWizard.java

License:Open Source License

@Override
public boolean performFinish() {
    RemoteConfig config;

    try {//from   ww w  .ja  va 2  s  .c  o m
        config = new RemoteConfig(myConfiguration, selNamePage.remoteName.getText());
    } catch (URISyntaxException e1) {
        // TODO better Exception handling
        return false;
    }

    if (selNamePage.configureFetch.getSelection()) {
        config.addURI(configureFetchUriPage.getUri());
        config.setFetchRefSpecs(configureFetchSpecPage.getRefSpecs());
        config.setTagOpt(configureFetchSpecPage.getTagOpt());
    }

    if (selNamePage.configurePush.getSelection()) {
        for (URIish uri : configurePushUriPage.getUris())
            config.addPushURI(uri);
        config.setPushRefSpecs(configurePushSpecPage.getRefSpecs());
    }

    config.update(myConfiguration);

    try {
        myConfiguration.save();
        return true;
    } catch (IOException e) {
        // TODO better Exception handling
        return false;
    }
}