aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java
Commit message (Collapse)AuthorAgeFilesLines
* Replace usage of deprecated Config#getEnum methodMatthias Sohn2025-02-171-2/+2
| | | | | | | Need to make DirCacheVersions public otherwise Config#allValuesOf cannot invoke its #values method via introspection. Change-Id: Id11a6fdbe7ce3d84f04bf47e98746424dcc761b4
* [errorprone] Rename method parameter to silence InvalidParamMatthias Sohn2023-09-251-3/+3
| | | | | | See https://errorprone.info/bugpattern/InvalidParam Change-Id: I53279bc5e0fc59788d42994be9931857b918414b
* Merge branch 'stable-6.3' into stable-6.4Matthias Sohn2023-02-011-0/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.3: Shortcut during git fetch for avoiding looping through all local refs FetchCommand: fix fetchSubmodules to work on a Ref to a blob Silence API warnings introduced by I466dcde6 Allow the exclusions of refs prefixes from bitmap PackWriterBitmapPreparer: do not include annotated tags in bitmap BatchingProgressMonitor: avoid int overflow when computing percentage Speedup GC listing objects referenced from reflogs FileSnapshotTest: Add more MISSING_FILE coverage Change-Id: Iefcf5d832bd0087c1027876f2200689e1150abce
| * Merge branch 'stable-6.2' into stable-6.3Matthias Sohn2023-02-011-0/+3
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.2: Shortcut during git fetch for avoiding looping through all local refs FetchCommand: fix fetchSubmodules to work on a Ref to a blob Silence API warnings introduced by I466dcde6 Allow the exclusions of refs prefixes from bitmap PackWriterBitmapPreparer: do not include annotated tags in bitmap BatchingProgressMonitor: avoid int overflow when computing percentage Speedup GC listing objects referenced from reflogs FileSnapshotTest: Add more MISSING_FILE coverage Change-Id: I2ff386d9a096277360e6c7bd5535b49984620fb3
| | * FetchCommand: fix fetchSubmodules to work on a Ref to a blobMatthias Sohn2023-01-311-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | FetchCommand#fetchSubmodules assumed that FETCH_HEAD can always be parsed as a tree. This isn't true if it refers to a Ref referring to a BLOB. This is e.g. used in Gerrit for Refs like refs/sequences/changes which are used to implement sequences stored in git. Change-Id: I414f5b7d9f2184b2d7d53af1dfcd68cccb725ca4
* | | Pass on shallowSince only if not nullThomas Wolf2022-09-181-1/+3
|/ / | | | | | | | | | | | | FetchCommand.setShallowSince() and Transport.setDeepenSince() require a non-null argument. Change-Id: I1c3a20be518374e380a4e90787ed834438da40ee Signed-off-by: Thomas Wolf <twolf@apache.org>
* / Fetch: add support for shallowRobin Müller2022-07-311-6/+127
|/ | | | | | | | | | This adds support for shallow cloning. The CloneCommand and the FetchCommand now have the new methods setDepth, setShallowSince and addShallowExclude to tell the server that the client doesn't want to download the complete history. Bug: 475615 Change-Id: Ic80fb6efb5474543ae59be590ebe385bec21cc0d
* Fail clone if initial branch doesn't exist in remote repositoryMatthias Sohn2021-02-221-1/+21
| | | | | | | | | | jgit clone --branch foo <url> did not fail if the remote branch "foo" didn't exist in the remote repository being cloned. Bug: 546580 Change-Id: I55648ad3a39da4a5711dfa8e6d6682bb8190a6d6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* ErrorProne: Enable and fix UnusedException checkDavid Pursehouse2020-01-271-1/+1
| | | | | | | | | | | | | | | | | | | | | Enable UnusedException at ERROR level which causes the build to fail in many places with: [UnusedException] This catch block catches an symbol and re-throws another, but swallows the caught symbol rather than setting it as a cause. This can make debugging harder. Fix it by setting the caught exception as cause on the subsequently thrown exception. Note: The grammatically incorrect error message is copy-pasted as-is from the version of ErrorProne currently used in Bazel; it has been fixed by [1] in the latest version. [1] https://github.com/google/error-prone/commit/d57a39c Change-Id: I11ed38243091fc12f64f1b2db404ba3f1d2e98b5 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Update EDL 1.0 license headers to new short SPDX compliant formatMatthias Sohn2020-01-041-38/+5
| | | | | | | | | | This is the format given by the Eclipse legal doc generator [1]. [1] https://www.eclipse.org/projects/tools/documentation.php?id=technology.jgit Bug: 548298 Change-Id: I8d8cabc998ba1b083e3f0906a8d558d391ffb6c4 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Enable and fix "Statement unnecessarily nested within else clause" warningsDavid Pursehouse2019-10-171-9/+9
| | | | | | | | | | | | | | | Since [1] the gerrit project includes jgit as a submodule, and has this warning enabled, resulting in 100s of warnings in the console. Also enable the warning here, and fix them. At the same time, add missing braces around adjacent and nearby one-line blocks. [1] https://gerrit-review.googlesource.com/c/gerrit/+/227897 Change-Id: I81df3fc7ed6eedf6874ce1a3bedfa727a1897e4c Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Deprecate Repository#hasObjectJonathan Nieder2019-01-041-1/+2
| | | | | | | | | | | | | | | Its implementation contains } catch (IOException e) { // Legacy API, assume error means "no" return false; } Better to use ObjectDatabase#has, which throws IOException to report errors. Change-Id: I7de02f7ceb8f57b2a8ebdb16d2aa4376775ff933 Signed-off-by: Jonathan Nieder <jrn@google.com>
* Implement --force option in FetchCommand and CLI fetch commandMatthias Sohn2018-03-131-3/+40
| | | | Change-Id: I42cdb57b8fb54ce466d1958391f12f911045327f Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix file handle leak in FetchCommand#fetchSubmodulesTim Hosey2018-01-041-30/+34
| | | | | | | | | | | | The private fetchSubmodules method in the FetchCommand class creates a Repository instance for each submodule being fetched, but never calls closes on it. This leads to the leaking of file handles. Bug: 526494 Change-Id: I7070388b8b62063d9d5cd31afae3015a8388044f Signed-off-by: Tim Hosey <timhoseydev@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix javadoc in org.eclipse.jgit annotations and api packagesMatthias Sohn2017-12-181-13/+37
| | | | Change-Id: I2761ea91f8dfed16ea54e7a6646af03a30c15ec9 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Add FetchCommand#setRefSpecs(String...) variantDave Borowitz2017-09-071-5/+16
| | | | | | | | Much of the time the caller can specify a RefSpec succinctly using a string, and doesn't care about calling setters. Add a convenience method for this case, and use it where applicable in JGit core. Change-Id: Ic3fac7fc568eee4759236a5264d2e7e5f9b9716d
* FetchCommand: pass on CredentialsProvider to submodule fetchesThomas Wolf2017-08-271-0/+1
| | | | | | | | | | When a JGit API command is implemented in terms of other API commands, the child command must "inherit" all relevant settings. Calling configure() ensures that the CredentialsProvider and the connection timeout are propagated correctly. Bug: 515325 Change-Id: I948e306693a9edb7b199a735877413b6eddcfba4 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Fetch/PullCommand: Improve Javadoc of setRecurseSubmodulesDavid Pursehouse2017-06-161-1/+10
| | | | | | | | Annotate the `recurse` parameter as @Nullable and expand the Javadoc to clarify the precedence of options. Change-Id: I7aee800cdbf8243133a0d353ef79b97b67ce011e Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Fetch: Add --recurse-submodules and --no-recurse-submodules optionsDavid Pursehouse2017-06-111-0/+34
| | | | | | | | | | Add options to control recursion into submodules on fetch. Add a callback interface on FetchCommand, to allow Fetch to display an update "Fetching submodule XYZ" for each submodule. Change-Id: Id805044b57289ee0f384b434aba1dbd2fd317e5b Signed-off-by: David Pursehouse <david.pursehouse@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* FetchCommand: Fix detection of submodule recursion modeDavid Pursehouse2017-03-101-13/+19
| | | | | | | | | | | | | | | | | | | The submodule.name.fetchRecurseSubmodules value was being read from the configuration of the submodule, but it should be read from the config of the parent repository. Also, the fetch.recurseSubmodules value from the parent repository's configuration was not being considered at all. Fix both of these and add tests. Now the precedence of the recurse mode is determined as follows: 1. Value passed to the API 2. Value configured in submodule.name.fetchRecurseSubmodules 3. Value configured in fetch.recurseSubmodules 4. Default to "on demand" Change-Id: Ic23b7c40b5f39135fb3fd754c597dd4bcc94240c
* FetchCommand: Add basic support for recursing into submodulesDavid Pursehouse2017-03-041-1/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extend FetchCommand to expose a new method, setRecurseSubmodules(mode), which allows to set the mode to ON, OFF or ON_DEMAND. After fetching a repository, its submodules are recursively fetched: - When the mode is YES, submodules are always fetched. - When the mode is NO, submodules are not fetched. - When the mode is ON_DEMAND, submodules are only fetched when the parent repository receives an update of the submodule and the new revision is not already in the submodule. The mode is determined in the following order of precedence: - Value specified in the API call using setRecurseSubmodules. - Value specified in the repository's config under the key submodule.name.fetchRecurseSubmodules - Defaults to ON_DEMAND if neither of the previous is set. Extend FetchResult to recursively include results for submodules, as a map of the submodule path to an instance of FetchResult. Test setup is based on testCloneRepositoryWithNestedSubmodules. Change-Id: Ibc841683763307cb76e78e142e0da5b11b1add2a Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Enable and fix warnings about redundant specification of type argumentsDavid Pursehouse2017-02-201-1/+1
| | | | | | | | | | Since the introduction of generic type parameter inference in Java 7, it's not necessary to explicitly specify the type of generic parameters. Enable the warning in Eclipse, and fix all occurrences. Change-Id: I9158caf1beca5e4980b6240ac401f3868520aad0 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Enable and fix 'Should be tagged with @Override' warningDavid Pursehouse2017-02-191-0/+1
| | | | | | | | | | | | | | | | | | | | | | | Set missingOverrideAnnotation=warning in Eclipse compiler preferences which enables the warning: The method <method> of type <type> should be tagged with @Override since it actually overrides a superclass method Justification for this warning is described in: http://stackoverflow.com/a/94411/381622 Enabling this causes in excess of 1000 warnings across the entire code-base. They are very easy to fix automatically with Eclipse's "Quick Fix" tool. Fix all of them except 2 which cause compilation failure when the project is built with mvn; add TODO comments on those for further investigation. Change-Id: I5772061041fd361fe93137fd8b0ad356e748a29c Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Transport: Implement AutoCloseableShawn Pearce2016-01-191-16/+11
| | | | | | | | After creating a Transport instance callers should always call its close() method. Use AutoCloseable to document this idiom and allow use of try-with-resources. Change-Id: I0c6ff3e39ebecdd7a028dbcae1856a818937b186
* Handle null in ProgressMonitor settersJonathan Nieder2015-06-111-0/+3
| | | | | | | | | | | These commands' monitor fields can never be null unless someone passes null to setProgressMonitor. Anyone passing null probably meant to disable the ProgressMonitor, so do that (by falling back to NullProgressMonitor.INSTANCE) instead of saving a null and eventually producing NullPointerException. Change-Id: I63ad93ea8ad669fd333a5fd40880e7583ba24827 Signed-off-by: Jonathan Nieder <jrn@google.com>
* Use fetch.prune and remote.<name>.prune to set prune mode when fetchingKonrad Kügler2014-02-131-4/+16
| | | | | | | | | | | When no explicit value is set via FetchCommand.setRemoveDeletedRefs() checks if pruning is enabled in the configuration. The following commit introduced the prune config to C Git: https://github.com/git/git/commit/737c5a9cde708d6995c765b7c2e95033edd0a896 Change-Id: Ida79d335218e1c9f5c6e2ce03386ac8a1c0b212e Signed-off-by: Konrad Kügler <swamblumat-eclipsebugs@yahoo.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Further cleanup of exceptions in Git APIRobin Rosenberg2012-06-051-2/+1
| | | | | | | | | - Translate internal exceptions to corresponding API exception - Do not catch GitAPI exceptions internally to an internal exception. Just pass them to caller - Mention thrown exceptions in javadoc Change-Id: I9044cf86d2b0bcc8b63b7cc016e1bf0055a62053 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Git API does not declare GitAPIException call() and related cleanupsRobin Rosenberg2012-05-301-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | All commands should throw a GitAPIException so new exceptions can be added without breaking the builds of old code, i.e. anyone that calls a Git API should catch GitAPIException and not just the currently known exceptions. Now the only checked exceptions on Git API calls are GitException and subclasses of it. New checked exceptions that are subclasses of GitException may be added without breaking the API. Javadoc for GitAPIException is declared on GitCommand and inherited to subclasses. JGitInternalException is not explicitly documented anymore. Unfortunately this change itself breaks the API. The intention is that it shall be possible to add new checked subclasses of GitAPIException without breaking the API. Bug: 366914 EGit-Change-Id: I50380f13fc82c22d0036f47c7859cc3a77e767c5 Change-Id: I50380f13fc82c22d0036f47c7859cc3a77e767c5 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Move JGitText to an internal packageRobin Rosenberg2012-03-121-1/+1
| | | | Change-Id: I763590a45d75f00a09097ab6f89581a3bbd3c797
* Support a configured credentials provider in LsRemoteCommandKevin Sawicki2011-11-101-51/+2
| | | | | | | | | | | | Refactored the three common transport configuration options: credentials provider, timeout, and transport config callback into a new TransportCommand base class which is now extended by all commands that use a Transport object during execution. Bug: 349188 Change-Id: I90c2c14fb4e3cc4712905158f9047153a0c235c2 Signed-off-by: Kevin Sawicki <kevin@github.com> Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* Enable full Transport configuration for JGit API commandsRoberto Tyley2011-09-161-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a TransportConfigCallback parameter to JGit API commands, to allow consumers of the JGit command API to perform custom Transport configuration that would be otherwise difficult to anticipate & expose on the API command builders. My specific use-case is configuring additional properties on SshTransport - I need to take over the SshSessionFactory used by the transport. Using TransportConfigCallback I can simply do this (rather than reimplement the API command classes): public void configure(Transport tn) { if (tn instanceof SshTransport) { ((SshTransport) tn).setSshSessionFactory(factoryProvider.get()); } } Adding an explicit setSshSessionFactory() method to the JGit command classes would bloat the API. Also, creating the replacement SshSessionFactory is unnecessary if the transport is not SSH, but the type of the Transport is only known once the remote has been resolved and the URI parsed - consequently it makes sense to perform this step in a callback, where the transport instance can be inspected to determine if it's of a relevant type. A note about where this leaves the API - there are now 4 commands: CloneCommand PullCommand FetchCommand PushCommand -that share 3 identical transport-related parameters: timeout credentialsProvider transportConfigurator I think there's potential for introducing an interface or val-object to identify/encapsulate this repetition, which I'd be happy to do in a subsequent commit. Change-Id: I8983c3627cdd7d7b2aeb0b6a3dadee553378b951 Signed-off-by: Roberto Tyley <roberto.tyley@gmail.com>
* Make the supported Transports extensible and discoverableShawn O. Pearce2011-03-131-15/+18
| | | | | | | | | | | | | | | The new TransportProtocol type describes what a particular Transport implementation wants in order to support a connection. 3rd parties can now plug into the Transport.open() logic by implementing their own TransportProtocol and Transport classes, and registering with Transport.register(). GUI applications can help the user configure a connection by looking at the supported fields of a particular TransportProtocol type, which makes the GUI more dynamic and may better support new Transports. Change-Id: Iafd8e3a6285261412aac6cba8e2c333f8b7b76a5 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* FetchCommand: do not set a null credentials providerMatthias Sohn2011-02-241-1/+2
| | | | | | | | | FetchCommand now does not set a null credentials provider on Transport because in this case the default provider is replaced with null and the default mechanism for providing credentials is not working. Change-Id: I44096aa856f031545df39d4b09af198caa2c21f6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* FetchCommand: allow to set "TagOpt"Mathias Kinzler2011-01-261-0/+16
| | | | | | | This is needed for implementing Fetch in EGit using the API. Change-Id: Ibdcc95906ef0f93e3798ae20d4de353fb394f2e2 Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
* Make setCredentialsProvider more convenient to useMathias Kinzler2011-01-261-1/+5
| | | | | Change-Id: I984836ea7d6a67fd2d1d05f270afa7c29f30971c Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
* Allow to set a CredentialsProvider on relevant API commandsMathias Kinzler2011-01-251-0/+11
| | | | | | | | This is needed for commands that use Transport internally. Change-Id: I9417c85255b160723968c647063b9c7e05995ea4 Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com> Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
* Update FetchCommand with dry run and thin optionsChris Aniszczyk2010-09-241-0/+46
| | | | | | | | FetchCommand was missing the ability to set dry run and thin preferences on the transport operation. Change-Id: I0bef388a9b8f2e3a01ecc9e7782aaed7f9ac82ce Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
* Add FetchCommandChris Aniszczyk2010-09-171-0/+275
Adds API for performing git fetch operations. Change-Id: Idd95664fd4e3bca03211e4ffda3e354849f92a35 Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>