/*
 * Copyright (C) 2010, Christian Halstrick <christian.halstrick@sap.com>
 * Copyright (C) 2010, Chris Aniszczyk <caniszczyk@gmail.com>
 * and other copyright owners as documented in the project's IP log.
 *
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Distribution License v1.0 which
 * accompanies this distribution, is reproduced below, and is
 * available at http://www.eclipse.org/org/documents/edl-v10.php
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or
 * without modification, are permitted provided that the following
 * conditions are met:
 *
 * - Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 *
 * - Redistributions in binary form must reproduce the above
 *   copyright notice, this list of conditions and the following
 *   disclaimer in the documentation and/or other materials provided
 *   with the distribution.
 *
 * - Neither the name of the Eclipse Foundation, Inc. nor the
 *   names of its contributors may be used to endorse or promote
 *   products derived from this software without specific prior
 *   written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.eclipse.jgit.api;

import static java.util.Objects.requireNonNull;

import java.io.File;
import java.io.IOException;

import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryBuilder;
import org.eclipse.jgit.lib.RepositoryCache;
import org.eclipse.jgit.util.FS;

Offers a "GitPorcelain"-like API to interact with a git repository.

The GitPorcelain commands are described in the Git Documentation.

This class only offers methods to construct so-called command classes. Each GitPorcelain command is represented by one command class.
Example: this class offers a commit() method returning an instance of the CommitCommand class. The CommitCommand class has setters for all the arguments and options. The CommitCommand class also has a call method to actually execute the commit. The following code show's how to do a simple commit:

Git git = new Git(myRepo);
git.commit().setMessage("Fix393").setAuthor(developerIdent).call();
All mandatory parameters for commands have to be specified in the methods of this class, the optional parameters have to be specified by the setter-methods of the Command class.

This class is intended to be used internally (e.g. by JGit tests) or by external components (EGit, third-party tools) when they need exactly the functionality of a GitPorcelain command. There are use-cases where this class is not optimal and where you should use the more low-level JGit classes. The methods in this class may for example offer too much functionality or they offer the functionality with the wrong arguments.

/** * Offers a "GitPorcelain"-like API to interact with a git repository. * <p> * The GitPorcelain commands are described in the <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git.html#_high_level_commands_porcelain" * >Git Documentation</a>. * <p> * This class only offers methods to construct so-called command classes. Each * GitPorcelain command is represented by one command class.<br> * Example: this class offers a {@code commit()} method returning an instance of * the {@code CommitCommand} class. The {@code CommitCommand} class has setters * for all the arguments and options. The {@code CommitCommand} class also has a * {@code call} method to actually execute the commit. The following code show's * how to do a simple commit: * * <pre> * Git git = new Git(myRepo); * git.commit().setMessage(&quot;Fix393&quot;).setAuthor(developerIdent).call(); * </pre> * * All mandatory parameters for commands have to be specified in the methods of * this class, the optional parameters have to be specified by the * setter-methods of the Command class. * <p> * This class is intended to be used internally (e.g. by JGit tests) or by * external components (EGit, third-party tools) when they need exactly the * functionality of a GitPorcelain command. There are use-cases where this class * is not optimal and where you should use the more low-level JGit classes. The * methods in this class may for example offer too much functionality or they * offer the functionality with the wrong arguments. */
public class Git implements AutoCloseable {
The git repository this class is interacting with
/** The git repository this class is interacting with */
private final Repository repo; private final boolean closeRepo;
Open repository
Params:
  • dir – the repository to open. May be either the GIT_DIR, or the working tree directory that contains .git.
Throws:
Returns:a Git object for the existing git repository
/** * Open repository * * @param dir * the repository to open. May be either the GIT_DIR, or the * working tree directory that contains {@code .git}. * @return a {@link org.eclipse.jgit.api.Git} object for the existing git * repository * @throws java.io.IOException */
public static Git open(File dir) throws IOException { return open(dir, FS.DETECTED); }
Open repository
Params:
  • dir – the repository to open. May be either the GIT_DIR, or the working tree directory that contains .git.
  • fs – filesystem abstraction to use when accessing the repository.
Throws:
Returns:a Git object for the existing git repository. Closing this instance will close the repo.
/** * Open repository * * @param dir * the repository to open. May be either the GIT_DIR, or the * working tree directory that contains {@code .git}. * @param fs * filesystem abstraction to use when accessing the repository. * @return a {@link org.eclipse.jgit.api.Git} object for the existing git * repository. Closing this instance will close the repo. * @throws java.io.IOException */
public static Git open(File dir, FS fs) throws IOException { RepositoryCache.FileKey key; key = RepositoryCache.FileKey.lenient(dir, fs); Repository db = new RepositoryBuilder().setFS(fs).setGitDir(key.getFile()) .setMustExist(true).build(); return new Git(db, true); }
Wrap repository
Params:
  • repo – the git repository this class is interacting with; null is not allowed.
Returns:a Git object for the existing git repository. The caller is responsible for closing the repository; close() on this instance does not close the repo.
/** * Wrap repository * * @param repo * the git repository this class is interacting with; * {@code null} is not allowed. * @return a {@link org.eclipse.jgit.api.Git} object for the existing git * repository. The caller is responsible for closing the repository; * {@link #close()} on this instance does not close the repo. */
public static Git wrap(Repository repo) { return new Git(repo); }
{@inheritDoc}

Free resources associated with this instance.

If the repository was opened by a static factory method in this class, then this method calls Repository.close() on the underlying repository instance. (Whether this actually releases underlying resources, such as file handles, may vary; see Repository for more details.)

If the repository was created by a caller and passed into Git(Repository) or a static factory method in this class, then this method does not call close on the underlying repository.

In all cases, after calling this method you should not use this Git instance anymore.

Since:3.2
/** * {@inheritDoc} * <p> * Free resources associated with this instance. * <p> * If the repository was opened by a static factory method in this class, * then this method calls {@link Repository#close()} on the underlying * repository instance. (Whether this actually releases underlying * resources, such as file handles, may vary; see {@link Repository} for * more details.) * <p> * If the repository was created by a caller and passed into * {@link #Git(Repository)} or a static factory method in this class, then * this method does not call close on the underlying repository. * <p> * In all cases, after calling this method you should not use this * {@link Git} instance anymore. * * @since 3.2 */
@Override public void close() { if (closeRepo) repo.close(); }
Return a command object to execute a clone command
See Also:
Returns:a CloneCommand used to collect all optional parameters and to finally execute the clone command
/** * Return a command object to execute a {@code clone} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-clone.html" * >Git documentation about clone</a> * @return a {@link org.eclipse.jgit.api.CloneCommand} used to collect all * optional parameters and to finally execute the {@code clone} * command */
public static CloneCommand cloneRepository() { return new CloneCommand(); }
Return a command to list remote branches/tags without a local repository.
Returns:a LsRemoteCommand
Since:3.1
/** * Return a command to list remote branches/tags without a local repository. * * @return a {@link org.eclipse.jgit.api.LsRemoteCommand} * @since 3.1 */
public static LsRemoteCommand lsRemoteRepository() { return new LsRemoteCommand(null); }
Return a command object to execute a init command
See Also:
Returns:a InitCommand used to collect all optional parameters and to finally execute the init command
/** * Return a command object to execute a {@code init} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-init.html" >Git * documentation about init</a> * @return a {@link org.eclipse.jgit.api.InitCommand} used to collect all * optional parameters and to finally execute the {@code init} * command */
public static InitCommand init() { return new InitCommand(); }
Construct a new Git object which can interact with the specified git repository.

All command classes returned by methods of this class will always interact with this git repository.

The caller is responsible for closing the repository; close() on this instance does not close the repo.

Params:
  • repo – the git repository this class is interacting with; null is not allowed.
/** * Construct a new {@link org.eclipse.jgit.api.Git} object which can * interact with the specified git repository. * <p> * All command classes returned by methods of this class will always * interact with this git repository. * <p> * The caller is responsible for closing the repository; {@link #close()} on * this instance does not close the repo. * * @param repo * the git repository this class is interacting with; * {@code null} is not allowed. */
public Git(Repository repo) { this(repo, false); } Git(Repository repo, boolean closeRepo) { this.repo = requireNonNull(repo); this.closeRepo = closeRepo; }
Return a command object to execute a Commit command
See Also:
Returns:a CommitCommand used to collect all optional parameters and to finally execute the Commit command
/** * Return a command object to execute a {@code Commit} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-commit.html" * >Git documentation about Commit</a> * @return a {@link org.eclipse.jgit.api.CommitCommand} used to collect all * optional parameters and to finally execute the {@code Commit} * command */
public CommitCommand commit() { return new CommitCommand(repo); }
Return a command object to execute a Log command
See Also:
Returns:a LogCommand used to collect all optional parameters and to finally execute the Log command
/** * Return a command object to execute a {@code Log} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-log.html" >Git * documentation about Log</a> * @return a {@link org.eclipse.jgit.api.LogCommand} used to collect all * optional parameters and to finally execute the {@code Log} * command */
public LogCommand log() { return new LogCommand(repo); }
Return a command object to execute a Merge command
See Also:
Returns:a MergeCommand used to collect all optional parameters and to finally execute the Merge command
/** * Return a command object to execute a {@code Merge} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-merge.html" * >Git documentation about Merge</a> * @return a {@link org.eclipse.jgit.api.MergeCommand} used to collect all * optional parameters and to finally execute the {@code Merge} * command */
public MergeCommand merge() { return new MergeCommand(repo); }
Return a command object to execute a Pull command
Returns:a PullCommand
/** * Return a command object to execute a {@code Pull} command * * @return a {@link org.eclipse.jgit.api.PullCommand} */
public PullCommand pull() { return new PullCommand(repo); }
Return a command object used to create branches
Returns:a CreateBranchCommand
/** * Return a command object used to create branches * * @return a {@link org.eclipse.jgit.api.CreateBranchCommand} */
public CreateBranchCommand branchCreate() { return new CreateBranchCommand(repo); }
Return a command object used to delete branches
Returns:a DeleteBranchCommand
/** * Return a command object used to delete branches * * @return a {@link org.eclipse.jgit.api.DeleteBranchCommand} */
public DeleteBranchCommand branchDelete() { return new DeleteBranchCommand(repo); }
Return a command object used to list branches
Returns:a ListBranchCommand
/** * Return a command object used to list branches * * @return a {@link org.eclipse.jgit.api.ListBranchCommand} */
public ListBranchCommand branchList() { return new ListBranchCommand(repo); }
Return a command object used to list tags
Returns:a ListTagCommand
/** * * Return a command object used to list tags * * @return a {@link org.eclipse.jgit.api.ListTagCommand} */
public ListTagCommand tagList() { return new ListTagCommand(repo); }
Return a command object used to rename branches
Returns:a RenameBranchCommand
/** * Return a command object used to rename branches * * @return a {@link org.eclipse.jgit.api.RenameBranchCommand} */
public RenameBranchCommand branchRename() { return new RenameBranchCommand(repo); }
Return a command object to execute a Add command
See Also:
Returns:a AddCommand used to collect all optional parameters and to finally execute the Add command
/** * Return a command object to execute a {@code Add} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-add.html" >Git * documentation about Add</a> * @return a {@link org.eclipse.jgit.api.AddCommand} used to collect all * optional parameters and to finally execute the {@code Add} * command */
public AddCommand add() { return new AddCommand(repo); }
Return a command object to execute a Tag command
See Also:
Returns:a TagCommand used to collect all optional parameters and to finally execute the Tag command
/** * Return a command object to execute a {@code Tag} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-tag.html" >Git * documentation about Tag</a> * @return a {@link org.eclipse.jgit.api.TagCommand} used to collect all * optional parameters and to finally execute the {@code Tag} * command */
public TagCommand tag() { return new TagCommand(repo); }
Return a command object to execute a Fetch command
See Also:
Returns:a FetchCommand used to collect all optional parameters and to finally execute the Fetch command
/** * Return a command object to execute a {@code Fetch} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-fetch.html" * >Git documentation about Fetch</a> * @return a {@link org.eclipse.jgit.api.FetchCommand} used to collect all * optional parameters and to finally execute the {@code Fetch} * command */
public FetchCommand fetch() { return new FetchCommand(repo); }
Return a command object to execute a Push command
See Also:
Returns:a PushCommand used to collect all optional parameters and to finally execute the Push command
/** * Return a command object to execute a {@code Push} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-push.html" >Git * documentation about Push</a> * @return a {@link org.eclipse.jgit.api.PushCommand} used to collect all * optional parameters and to finally execute the {@code Push} * command */
public PushCommand push() { return new PushCommand(repo); }
Return a command object to execute a cherry-pick command
See Also:
Returns:a CherryPickCommand used to collect all optional parameters and to finally execute the cherry-pick command
/** * Return a command object to execute a {@code cherry-pick} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html" * >Git documentation about cherry-pick</a> * @return a {@link org.eclipse.jgit.api.CherryPickCommand} used to collect * all optional parameters and to finally execute the * {@code cherry-pick} command */
public CherryPickCommand cherryPick() { return new CherryPickCommand(repo); }
Return a command object to execute a revert command
See Also:
Returns:a RevertCommand used to collect all optional parameters and to finally execute the cherry-pick command
/** * Return a command object to execute a {@code revert} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-revert.html" * >Git documentation about reverting changes</a> * @return a {@link org.eclipse.jgit.api.RevertCommand} used to collect all * optional parameters and to finally execute the * {@code cherry-pick} command */
public RevertCommand revert() { return new RevertCommand(repo); }
Return a command object to execute a Rebase command
See Also:
Returns:a RebaseCommand used to collect all optional parameters and to finally execute the rebase command
/** * Return a command object to execute a {@code Rebase} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html" * >Git documentation about rebase</a> * @return a {@link org.eclipse.jgit.api.RebaseCommand} used to collect all * optional parameters and to finally execute the {@code rebase} * command */
public RebaseCommand rebase() { return new RebaseCommand(repo); }
Return a command object to execute a rm command
See Also:
Returns:a RmCommand used to collect all optional parameters and to finally execute the rm command
/** * Return a command object to execute a {@code rm} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-rm.html" >Git * documentation about rm</a> * @return a {@link org.eclipse.jgit.api.RmCommand} used to collect all * optional parameters and to finally execute the {@code rm} command */
public RmCommand rm() { return new RmCommand(repo); }
Return a command object to execute a checkout command
See Also:
Returns:a CheckoutCommand used to collect all optional parameters and to finally execute the checkout command
/** * Return a command object to execute a {@code checkout} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html" * >Git documentation about checkout</a> * @return a {@link org.eclipse.jgit.api.CheckoutCommand} used to collect * all optional parameters and to finally execute the * {@code checkout} command */
public CheckoutCommand checkout() { return new CheckoutCommand(repo); }
Return a command object to execute a reset command
See Also:
Returns:a ResetCommand used to collect all optional parameters and to finally execute the reset command
/** * Return a command object to execute a {@code reset} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-reset.html" * >Git documentation about reset</a> * @return a {@link org.eclipse.jgit.api.ResetCommand} used to collect all * optional parameters and to finally execute the {@code reset} * command */
public ResetCommand reset() { return new ResetCommand(repo); }
Return a command object to execute a status command
See Also:
Returns:a StatusCommand used to collect all optional parameters and to finally execute the status command
/** * Return a command object to execute a {@code status} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-status.html" * >Git documentation about status</a> * @return a {@link org.eclipse.jgit.api.StatusCommand} used to collect all * optional parameters and to finally execute the {@code status} * command */
public StatusCommand status() { return new StatusCommand(repo); }
Return a command to create an archive from a tree
Returns:a ArchiveCommand
Since:3.1
/** * Return a command to create an archive from a tree * * @return a {@link org.eclipse.jgit.api.ArchiveCommand} * @since 3.1 */
public ArchiveCommand archive() { return new ArchiveCommand(repo); }
Return a command to add notes to an object
Returns:a AddNoteCommand
/** * Return a command to add notes to an object * * @return a {@link org.eclipse.jgit.api.AddNoteCommand} */
public AddNoteCommand notesAdd() { return new AddNoteCommand(repo); }
Return a command to remove notes on an object
Returns:a RemoveNoteCommand
/** * Return a command to remove notes on an object * * @return a {@link org.eclipse.jgit.api.RemoveNoteCommand} */
public RemoveNoteCommand notesRemove() { return new RemoveNoteCommand(repo); }
Return a command to list all notes
Returns:a ListNotesCommand
/** * Return a command to list all notes * * @return a {@link org.eclipse.jgit.api.ListNotesCommand} */
public ListNotesCommand notesList() { return new ListNotesCommand(repo); }
Return a command to show notes on an object
Returns:a ShowNoteCommand
/** * Return a command to show notes on an object * * @return a {@link org.eclipse.jgit.api.ShowNoteCommand} */
public ShowNoteCommand notesShow() { return new ShowNoteCommand(repo); }
Return a command object to execute a ls-remote command
See Also:
Returns:a LsRemoteCommand used to collect all optional parameters and to finally execute the status command
/** * Return a command object to execute a {@code ls-remote} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-ls-remote.html" * >Git documentation about ls-remote</a> * @return a {@link org.eclipse.jgit.api.LsRemoteCommand} used to collect * all optional parameters and to finally execute the {@code status} * command */
public LsRemoteCommand lsRemote() { return new LsRemoteCommand(repo); }
Return a command object to execute a clean command
See Also:
Returns:a CleanCommand used to collect all optional parameters and to finally execute the clean command
/** * Return a command object to execute a {@code clean} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-clean.html" * >Git documentation about Clean</a> * @return a {@link org.eclipse.jgit.api.CleanCommand} used to collect all * optional parameters and to finally execute the {@code clean} * command */
public CleanCommand clean() { return new CleanCommand(repo); }
Return a command object to execute a blame command
See Also:
Returns:a BlameCommand used to collect all optional parameters and to finally execute the blame command
/** * Return a command object to execute a {@code blame} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-blame.html" * >Git documentation about Blame</a> * @return a {@link org.eclipse.jgit.api.BlameCommand} used to collect all * optional parameters and to finally execute the {@code blame} * command */
public BlameCommand blame() { return new BlameCommand(repo); }
Return a command object to execute a reflog command
See Also:
Returns:a ReflogCommand used to collect all optional parameters and to finally execute the reflog command
/** * Return a command object to execute a {@code reflog} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-reflog.html" * >Git documentation about reflog</a> * @return a {@link org.eclipse.jgit.api.ReflogCommand} used to collect all * optional parameters and to finally execute the {@code reflog} * command */
public ReflogCommand reflog() { return new ReflogCommand(repo); }
Return a command object to execute a diff command
See Also:
Returns:a DiffCommand used to collect all optional parameters and to finally execute the diff command
/** * Return a command object to execute a {@code diff} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-diff.html" >Git * documentation about diff</a> * @return a {@link org.eclipse.jgit.api.DiffCommand} used to collect all * optional parameters and to finally execute the {@code diff} * command */
public DiffCommand diff() { return new DiffCommand(repo); }
Return a command object used to delete tags
Returns:a DeleteTagCommand
/** * Return a command object used to delete tags * * @return a {@link org.eclipse.jgit.api.DeleteTagCommand} */
public DeleteTagCommand tagDelete() { return new DeleteTagCommand(repo); }
Return a command object to execute a submodule add command
Returns:a SubmoduleAddCommand used to add a new submodule to a parent repository
/** * Return a command object to execute a {@code submodule add} command * * @return a {@link org.eclipse.jgit.api.SubmoduleAddCommand} used to add a * new submodule to a parent repository */
public SubmoduleAddCommand submoduleAdd() { return new SubmoduleAddCommand(repo); }
Return a command object to execute a submodule init command
Returns:a SubmoduleInitCommand used to initialize the repository's config with settings from the .gitmodules file in the working tree
/** * Return a command object to execute a {@code submodule init} command * * @return a {@link org.eclipse.jgit.api.SubmoduleInitCommand} used to * initialize the repository's config with settings from the * .gitmodules file in the working tree */
public SubmoduleInitCommand submoduleInit() { return new SubmoduleInitCommand(repo); }
Returns a command object to execute a submodule deinit command
Returns:a SubmoduleDeinitCommand used to remove a submodule's working tree manifestation
Since:4.10
/** * Returns a command object to execute a {@code submodule deinit} command * * @return a {@link org.eclipse.jgit.api.SubmoduleDeinitCommand} used to * remove a submodule's working tree manifestation * @since 4.10 */
public SubmoduleDeinitCommand submoduleDeinit() { return new SubmoduleDeinitCommand(repo); }
Returns a command object to execute a submodule status command
Returns:a SubmoduleStatusCommand used to report the status of a repository's configured submodules
/** * Returns a command object to execute a {@code submodule status} command * * @return a {@link org.eclipse.jgit.api.SubmoduleStatusCommand} used to * report the status of a repository's configured submodules */
public SubmoduleStatusCommand submoduleStatus() { return new SubmoduleStatusCommand(repo); }
Return a command object to execute a submodule sync command
Returns:a SubmoduleSyncCommand used to update the URL of a submodule from the parent repository's .gitmodules file
/** * Return a command object to execute a {@code submodule sync} command * * @return a {@link org.eclipse.jgit.api.SubmoduleSyncCommand} used to * update the URL of a submodule from the parent repository's * .gitmodules file */
public SubmoduleSyncCommand submoduleSync() { return new SubmoduleSyncCommand(repo); }
Return a command object to execute a submodule update command
Returns:a SubmoduleUpdateCommand used to update the submodules in a repository to the configured revision
/** * Return a command object to execute a {@code submodule update} command * * @return a {@link org.eclipse.jgit.api.SubmoduleUpdateCommand} used to * update the submodules in a repository to the configured revision */
public SubmoduleUpdateCommand submoduleUpdate() { return new SubmoduleUpdateCommand(repo); }
Return a command object used to list stashed commits
Returns:a StashListCommand
/** * Return a command object used to list stashed commits * * @return a {@link org.eclipse.jgit.api.StashListCommand} */
public StashListCommand stashList() { return new StashListCommand(repo); }
Return a command object used to create a stashed commit
Returns:a StashCreateCommand
Since:2.0
/** * Return a command object used to create a stashed commit * * @return a {@link org.eclipse.jgit.api.StashCreateCommand} * @since 2.0 */
public StashCreateCommand stashCreate() { return new StashCreateCommand(repo); }
Returs a command object used to apply a stashed commit
Returns:a StashApplyCommand
Since:2.0
/** * Returs a command object used to apply a stashed commit * * @return a {@link org.eclipse.jgit.api.StashApplyCommand} * @since 2.0 */
public StashApplyCommand stashApply() { return new StashApplyCommand(repo); }
Return a command object used to drop a stashed commit
Returns:a StashDropCommand
Since:2.0
/** * Return a command object used to drop a stashed commit * * @return a {@link org.eclipse.jgit.api.StashDropCommand} * @since 2.0 */
public StashDropCommand stashDrop() { return new StashDropCommand(repo); }
Return a command object to execute a apply command
See Also:
Returns:a ApplyCommand used to collect all optional parameters and to finally execute the apply command
Since:2.0
/** * Return a command object to execute a {@code apply} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-apply.html" * >Git documentation about apply</a> * @return a {@link org.eclipse.jgit.api.ApplyCommand} used to collect all * optional parameters and to finally execute the {@code apply} * command * @since 2.0 */
public ApplyCommand apply() { return new ApplyCommand(repo); }
Return a command object to execute a gc command
See Also:
Returns:a GarbageCollectCommand used to collect all optional parameters and to finally execute the gc command
Since:2.2
/** * Return a command object to execute a {@code gc} command * * @see <a href= * "http://www.kernel.org/pub/software/scm/git/docs/git-gc.html" >Git * documentation about gc</a> * @return a {@link org.eclipse.jgit.api.GarbageCollectCommand} used to * collect all optional parameters and to finally execute the * {@code gc} command * @since 2.2 */
public GarbageCollectCommand gc() { return new GarbageCollectCommand(repo); }
Return a command object to find human-readable names of revisions.
Returns:a NameRevCommand.
Since:3.0
/** * Return a command object to find human-readable names of revisions. * * @return a {@link org.eclipse.jgit.api.NameRevCommand}. * @since 3.0 */
public NameRevCommand nameRev() { return new NameRevCommand(repo); }
Return a command object to come up with a short name that describes a commit in terms of the nearest git tag.
Returns:a DescribeCommand.
Since:3.2
/** * Return a command object to come up with a short name that describes a * commit in terms of the nearest git tag. * * @return a {@link org.eclipse.jgit.api.DescribeCommand}. * @since 3.2 */
public DescribeCommand describe() { return new DescribeCommand(repo); }
Return a command used to list the available remotes.
Returns:a RemoteListCommand
Since:4.2
/** * Return a command used to list the available remotes. * * @return a {@link org.eclipse.jgit.api.RemoteListCommand} * @since 4.2 */
public RemoteListCommand remoteList() { return new RemoteListCommand(repo); }
Return a command used to add a new remote.
Returns:a RemoteAddCommand
Since:4.2
/** * Return a command used to add a new remote. * * @return a {@link org.eclipse.jgit.api.RemoteAddCommand} * @since 4.2 */
public RemoteAddCommand remoteAdd() { return new RemoteAddCommand(repo); }
Return a command used to remove an existing remote.
Returns:a RemoteRemoveCommand
Since:4.2
/** * Return a command used to remove an existing remote. * * @return a {@link org.eclipse.jgit.api.RemoteRemoveCommand} * @since 4.2 */
public RemoteRemoveCommand remoteRemove() { return new RemoteRemoveCommand(repo); }
Return a command used to change the URL of an existing remote.
Returns:a RemoteSetUrlCommand
Since:4.2
/** * Return a command used to change the URL of an existing remote. * * @return a {@link org.eclipse.jgit.api.RemoteSetUrlCommand} * @since 4.2 */
public RemoteSetUrlCommand remoteSetUrl() { return new RemoteSetUrlCommand(repo); }
Get repository
Returns:the git repository this class is interacting with; see close() for notes on closing this repository.
/** * Get repository * * @return the git repository this class is interacting with; see * {@link #close()} for notes on closing this repository. */
public Repository getRepository() { return repo; }
{@inheritDoc}
/** {@inheritDoc} */
@Override public String toString() { return "Git[" + repo + "]"; //$NON-NLS-1$//$NON-NLS-2$ } }