Package org.eclipse.jgit.api

## Class CloneCommand

- java.lang.Object
- - org.eclipse.jgit.api.GitCommand<T>
  - - org.eclipse.jgit.api.TransportCommand<CloneCommand,​Git>
    - - org.eclipse.jgit.api.CloneCommand

All Implemented Interfaces:
  `Callable<Git>`

    public class CloneCommand
    extends TransportCommand<CloneCommand,​Git>

Clone a repository into a new working directory

See Also:
  Git documentation about Clone

### Field Summary

### Fields inherited from class org.eclipse.jgit.api.TransportCommand

`credentialsProvider, timeout, transportConfigCallback`

### Fields inherited from class org.eclipse.jgit.api.GitCommand

`repo`

### Constructor Summary

Constructors
`CloneCommand()` Create clone command with no repository set

### Method Summary

All Methods Instance Methods Concrete Methods
`Git` `call()` Executes the `Clone` command.
`CloneCommand` `setBare​(boolean bare)`
`CloneCommand` `setBranch​(String branch)`
`CloneCommand` `setBranchesToClone​(Collection<String> branchesToClone)`
`CloneCommand` `setCloneAllBranches​(boolean cloneAllBranches)`
`CloneCommand` `setCloneSubmodules​(boolean cloneSubmodules)`
`CloneCommand` `setDirectory​(File directory)` The optional directory associated with the clone operation.
`CloneCommand` `setGitDir​(File gitDir)`
`CloneCommand` `setNoCheckout​(boolean noCheckout)`
`CloneCommand` `setProgressMonitor​(ProgressMonitor monitor)` The progress monitor associated with the clone operation.
`CloneCommand` `setRemote​(String remote)` The remote name used to keep track of the upstream repository for the clone operation.
`CloneCommand` `setURI​(String uri)`

### Methods inherited from class org.eclipse.jgit.api.TransportCommand

`configure, configure, self, setCredentialsProvider, setTimeout, setTransportConfigCallback`

### Methods inherited from class org.eclipse.jgit.api.GitCommand

`checkCallable, getRepository, setCallable`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### CloneCommand

    public CloneCommand()

Create clone command with no repository set

### Method Detail

#### call

    public Git call()
             throws GitAPIException,
                    InvalidRemoteException,
                    TransportException

Executes the `Clone` command. The Git instance returned by this command needs to be closed by the caller to free resources held by the underlying `Repository` instance. It is recommended to call this method as soon as you don't need a reference to this `Git` instance and the underlying `Repository` instance anymore.

Specified by:
  `call` in interface `Callable<Git>`
Specified by:
  `call` in class `GitCommand<Git>`
Returns:
  the newly created `Git` object with associated repository
Throws:
  `InvalidRemoteException`
  `TransportException`
  `GitAPIException`

#### setURI

    public CloneCommand setURI​(String uri)

Parameters:
  `uri` - the uri to clone from
Returns:
  this instance

#### setDirectory

    public CloneCommand setDirectory​(File directory)

The optional directory associated with the clone operation. If the directory isn't set, a name associated with the source uri will be used.

Parameters:
  `directory` - the directory to clone to
Returns:
  this instance
Throws:
  `IllegalStateException` - if the combination of directory, gitDir and bare is illegal. E.g. if for a non-bare repository directory and gitDir point to the same directory of if for a bare repository both directory and gitDir are specified
See Also:
  `URIish.getHumanishName()`

#### setGitDir

    public CloneCommand setGitDir​(File gitDir)

Parameters:
  `gitDir` - the repository meta directory
Returns:
  this instance
Throws:
  `IllegalStateException` - if the combination of directory, gitDir and bare is illegal. E.g. if for a non-bare repository directory and gitDir point to the same directory of if for a bare repository both directory and gitDir are specified
Since:
  3.6

#### setBare

    public CloneCommand setBare​(boolean bare)
                         throws IllegalStateException

Parameters:
  `bare` - whether the cloned repository is bare or not
Returns:
  this instance
Throws:
  `IllegalStateException` - if the combination of directory, gitDir and bare is illegal. E.g. if for a non-bare repository directory and gitDir point to the same directory of if for a bare repository both directory and gitDir are specified

#### setRemote

    public CloneCommand setRemote​(String remote)

The remote name used to keep track of the upstream repository for the clone operation. If no remote name is set, the default value of `Constants.DEFAULT_REMOTE_NAME` will be used.

Parameters:
  `remote` - name that keeps track of the upstream repository
Returns:
  this instance
See Also:
  `Constants.DEFAULT_REMOTE_NAME`

#### setBranch

    public CloneCommand setBranch​(String branch)

Parameters:
  `branch` - the initial branch to check out when cloning the repository. Can be specified as ref name (`refs/heads/master`), branch name (`master`) or tag name (`v1.2.3`).
Returns:
  this instance

#### setProgressMonitor

    public CloneCommand setProgressMonitor​(ProgressMonitor monitor)

The progress monitor associated with the clone operation. By default, this is set to `NullProgressMonitor`

Parameters:
  `monitor` -
Returns:
  `this`
See Also:
  `NullProgressMonitor`

#### setCloneAllBranches

    public CloneCommand setCloneAllBranches​(boolean cloneAllBranches)

Parameters:
  `cloneAllBranches` - true when all branches have to be fetched (indicates wildcard in created fetch refspec), false otherwise.
Returns:
  `this`

#### setCloneSubmodules

    public CloneCommand setCloneSubmodules​(boolean cloneSubmodules)

Parameters:
  `cloneSubmodules` - true to initialize and update submodules. Ignored when `setBare(boolean)` is set to true.
Returns:
  `this`

#### setBranchesToClone

    public CloneCommand setBranchesToClone​(Collection<String> branchesToClone)

Parameters:
  `branchesToClone` - collection of branches to clone. Ignored when allSelected is true. Must be specified as full ref names (e.g. `refs/heads/master`).
Returns:
  `this`

#### setNoCheckout

    public CloneCommand setNoCheckout​(boolean noCheckout)

Parameters:
  `noCheckout` - if set to `true` no branch will be checked out after the clone. This enhances performance of the clone command when there is no need for a checked out branch.
Returns:
  `this`