/*
 * Copyright (C) 2015, Kaloyan Raev <kaloyan.r@zend.com> and others
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Distribution License v. 1.0 which is available at
 * https://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */
package org.eclipse.jgit.api;

import java.io.IOException;
import java.net.URISyntaxException;

import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.transport.RefSpec;
import org.eclipse.jgit.transport.RemoteConfig;
import org.eclipse.jgit.transport.URIish;

Used to add a new remote. This class has setters for all supported options and arguments of this command and a call() method to finally execute the command.
See Also:
Since:4.2
/** * Used to add a new remote. * * This class has setters for all supported options and arguments of this * command and a {@link #call()} method to finally execute the command. * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-remote.html" > Git * documentation about Remote</a> * @since 4.2 */
public class RemoteAddCommand extends GitCommand<RemoteConfig> { private String name; private URIish uri;
Constructor for RemoteAddCommand.
Params:
/** * Constructor for RemoteAddCommand. * * @param repo * the {@link org.eclipse.jgit.lib.Repository} */
protected RemoteAddCommand(Repository repo) { super(repo); }
The name of the remote to add.
Params:
  • name – a remote name
Returns:this instance
Since:5.0
/** * The name of the remote to add. * * @param name * a remote name * @return this instance * @since 5.0 */
public RemoteAddCommand setName(String name) { this.name = name; return this; }
The URL of the repository for the new remote.
Params:
  • uri – an URL for the remote
Returns:this instance
Since:5.0
/** * The URL of the repository for the new remote. * * @param uri * an URL for the remote * @return this instance * @since 5.0 */
public RemoteAddCommand setUri(URIish uri) { this.uri = uri; return this; }
{@inheritDoc}

Executes the remote add command with all the options and parameters collected by the setter methods of this class.

/** * {@inheritDoc} * <p> * Executes the {@code remote add} command with all the options and * parameters collected by the setter methods of this class. */
@Override public RemoteConfig call() throws GitAPIException { checkCallable(); try { StoredConfig config = repo.getConfig(); RemoteConfig remote = new RemoteConfig(config, name); RefSpec refSpec = new RefSpec(); refSpec = refSpec.setForceUpdate(true); refSpec = refSpec.setSourceDestination(Constants.R_HEADS + "*", //$NON-NLS-1$ Constants.R_REMOTES + name + "/*"); //$NON-NLS-1$ remote.addFetchRefSpec(refSpec); remote.addURI(uri); remote.update(config); config.save(); return remote; } catch (IOException | URISyntaxException e) { throw new JGitInternalException(e.getMessage(), e); } } }