aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2025-03-04 08:34:24 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2025-03-04 08:34:24 +0100
commit1468a80ff7859995c3a2e2018bbfea81312c76e9 (patch)
tree53db6efb33be1066953f2e588b74c1463b3e192e
parent1b70d59fcd6e1d30c39317689c68c441aac7356c (diff)
parent4ef88700db1da4ab07917b084057769a43735682 (diff)
downloadjgit-1468a80ff7859995c3a2e2018bbfea81312c76e9.tar.gz
jgit-1468a80ff7859995c3a2e2018bbfea81312c76e9.zip
Merge branch 'master' into stable-7.2
* master: Ensure access to autoRefresh is thread-safe FileReftableStack: use FileSnapshot to detect modification FileReftableDatabase: consider ref updates by another process BlameRegionMerger: report invalid regions with checked exception. [ssh known_hosts] Handle unknown keys better [releng] Remove unused target platform definitions Change-Id: I2e49d582a5be9f1383b4f1713e33cb378b4f6118
-rw-r--r--Documentation/config-options.md10
-rw-r--r--org.eclipse.jgit.benchmarks/pom.xml4
-rw-r--r--org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/GetRefsBenchmark.java15
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20200831200620-2020-09.tpd66
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20201130205003-2020-12.tpd66
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210223232630-2021-03.tpd66
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210602031627-2021-06.tpd66
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210825222808-2021-09.tpd73
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20211122181901-2021-12.tpd71
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20211213173813-2021-12.tpd69
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220302172233-2022-03.tpd69
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220531185310-2022-06.tpd69
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220830213456-2022-09.tpd69
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20221123021534-2022-12.tpd69
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230302014618-2023-03.tpd27
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd25
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.29.tpd27
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.30.tpd27
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.31.tpd27
-rw-r--r--org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabaseTest.java26
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java56
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameRegionMergerTest.java2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileReftableTest.java134
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java55
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java40
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java22
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java24
28 files changed, 363 insertions, 913 deletions
diff --git a/Documentation/config-options.md b/Documentation/config-options.md
index 807d4a8002..4dde8f8c15 100644
--- a/Documentation/config-options.md
+++ b/Documentation/config-options.md
@@ -58,9 +58,10 @@ For details on native git options see also the official [git config documentatio
| ~~`core.trustFolderStat`~~ | `true` | &#x20DE; | __Deprecated__, use `core.trustStat` instead. If set to `true` translated to `core.trustStat=always`, if `false` translated to `core.trustStat=never`, see below. If both `core.trustFolderStat` and `core.trustStat` are configured then `trustStat` takes precedence and `trustFolderStat` is ignored. |
| `core.trustLooseRefStat` | `inherit` | &#x20DE; | Whether to trust the file attributes of loose refs and its fan-out parent directory. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `trustStat`. |
| `core.trustPackedRefsStat` | `inherit` | &#x20DE; | Whether to trust the file attributes of the packed-refs file. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`. |
+| `core.trustTablesListStat` | `inherit` | &#x20DE; | Whether to trust the file attributes of the `tables.list` file used by the reftable ref storage backend to store the list of reftable filenames. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`. The reftable backend is used if `extensions.refStorage = reftable`. |
| `core.trustLooseObjectStat` | `inherit` | &#x20DE; | Whether to trust the file attributes of the loose object file and its fan-out parent directory. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`. |
| `core.trustPackStat` | `inherit` | &#x20DE; | Whether to trust the file attributes of the `objects/pack` directory. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`. |
-| `core.trustStat` | `always` | &#x20DE; | Global option to configure whether to trust file attributes (Java equivalent of stat command on Unix) of files storing git objects. Can be overridden for specific files by configuring `core.trustLooseRefStat, core.trustPackedRefsStat, core.trustLooseObjectStat, core.trustPackStat`. If `never` JGit will ignore the file attributes of the file and always read it. If `always` JGit will trust the file attributes and will only read it if a file attribute has changed. `after_open` behaves the same as `always`, but file attributes are only considered *after* the file itself and any transient parent directories have been opened and closed. An open/close of the file/directory is known to refresh its file attributes, at least on some NFS clients. |
+| `core.trustStat` | `always` | &#x20DE; | Global option to configure whether to trust file attributes (Java equivalent of stat command on Unix) of files storing git objects. Can be overridden for specific files by configuring `core.trustLooseRefStat, core.trustPackedRefsStat, core.trustLooseObjectStat, core.trustPackStat,core.trustTablesListStat`. If `never` JGit will ignore the file attributes of the file and always read it. If `always` JGit will trust the file attributes and will only read it if a file attribute has changed. `after_open` behaves the same as `always`, but file attributes are only considered *after* the file itself and any transient parent directories have been opened and closed. An open/close of the file/directory is known to refresh its file attributes, at least on some NFS clients. |
| `core.worktree` | Root directory of the working tree if it is not the parent directory of the `.git` directory | &#x2705; | The path to the root of the working tree. |
## __fetch__ options
@@ -134,6 +135,13 @@ Proxy configuration uses the standard Java mechanisms via class `java.net.ProxyS
| `pack.window` | `10` | &#x2705; | Number of objects to try when looking for a delta base per thread searching for deltas. |
| `pack.windowMemory` | `0` (unlimited) | &#x2705; | Maximum number of bytes to put into the delta search window. |
+## reftable options
+
+| option | default | git option | description |
+|---------|---------|------------|-------------|
+| `reftable.autoRefresh` | `false` | &#x20DE; | Whether to auto-refresh the reftable stack if it is out of date. |
+
+
## __repack__ options
| option | default | git option | description |
diff --git a/org.eclipse.jgit.benchmarks/pom.xml b/org.eclipse.jgit.benchmarks/pom.xml
index c92fa9f156..e531245971 100644
--- a/org.eclipse.jgit.benchmarks/pom.xml
+++ b/org.eclipse.jgit.benchmarks/pom.xml
@@ -52,6 +52,10 @@
<artifactId>org.eclipse.jgit.junit</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git a/org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/GetRefsBenchmark.java b/org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/GetRefsBenchmark.java
index ea279fbba9..44e862e7c8 100644
--- a/org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/GetRefsBenchmark.java
+++ b/org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/GetRefsBenchmark.java
@@ -24,6 +24,7 @@ import java.util.stream.IntStream;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
+import org.eclipse.jgit.internal.storage.file.FileReftableDatabase;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.lib.BatchRefUpdate;
import org.eclipse.jgit.lib.ConfigConstants;
@@ -39,8 +40,10 @@ import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
+import org.junit.Assume;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
@@ -67,6 +70,9 @@ public class GetRefsBenchmark {
@Param({ "true", "false" })
boolean useRefTable;
+ @Param({ "true", "false" })
+ boolean autoRefresh;
+
@Param({ "100", "1000", "10000", "100000" })
int numBranches;
@@ -82,6 +88,9 @@ public class GetRefsBenchmark {
@Setup
@SuppressWarnings("boxing")
public void setupBenchmark() throws IOException, GitAPIException {
+ // if we use RefDirectory skip autoRefresh = false
+ Assume.assumeTrue(useRefTable || autoRefresh);
+
String firstBranch = "firstbranch";
testDir = Files.createDirectory(Paths.get("testrepos"));
String repoName = "branches-" + numBranches + "-trustStat-"
@@ -98,6 +107,9 @@ public class GetRefsBenchmark {
((FileRepository) git.getRepository()).convertRefStorage(
ConfigConstants.CONFIG_REF_STORAGE_REFTABLE, false,
false);
+ FileReftableDatabase refdb = (FileReftableDatabase) git
+ .getRepository().getRefDatabase();
+ refdb.setAutoRefresh(autoRefresh);
} else {
cfg.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
ConfigConstants.CONFIG_KEY_TRUST_STAT,
@@ -113,6 +125,7 @@ public class GetRefsBenchmark {
System.out.println("Preparing test");
System.out.println("- repository: \t\t" + repoPath);
System.out.println("- refDatabase: \t\t" + refDatabaseType());
+ System.out.println("- autoRefresh: \t\t" + autoRefresh);
System.out.println("- trustStat: \t" + trustStat);
System.out.println("- branches: \t\t" + numBranches);
@@ -154,6 +167,7 @@ public class GetRefsBenchmark {
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@Warmup(iterations = 2, time = 100, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 2, time = 5, timeUnit = TimeUnit.SECONDS)
+ @Fork(2)
public void testGetExactRef(Blackhole blackhole, BenchmarkState state)
throws IOException {
String branchName = state.branches
@@ -166,6 +180,7 @@ public class GetRefsBenchmark {
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@Warmup(iterations = 2, time = 100, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 2, time = 5, timeUnit = TimeUnit.SECONDS)
+ @Fork(2)
public void testGetRefsByPrefix(Blackhole blackhole, BenchmarkState state)
throws IOException {
String branchPrefix = "refs/heads/branch/" + branchIndex.nextInt(100)
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20200831200620-2020-09.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20200831200620-2020-09.tpd
deleted file mode 100644
index 22e2b01207..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20200831200620-2020-09.tpd
+++ /dev/null
@@ -1,66 +0,0 @@
-target "R20200831200620-2020-09" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20200831200620/repository" {
- com.google.gson [2.8.2.v20180104-1110,2.8.2.v20180104-1110]
- com.google.gson.source [2.8.2.v20180104-1110,2.8.2.v20180104-1110]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.1.v201205102305,1.1.1.v201205102305]
- com.jcraft.jzlib.source [1.1.1.v201205102305,1.1.1.v201205102305]
- javaewah [1.1.7.v20200107-0831,1.1.7.v20200107-0831]
- javaewah.source [1.1.7.v20200107-0831,1.1.7.v20200107-0831]
- javax.servlet [3.1.0.v201410161800,3.1.0.v201410161800]
- javax.servlet.source [3.1.0.v201410161800,3.1.0.v201410161800]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- net.i2p.crypto.eddsa.source [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- org.apache.ant [1.10.8.v20200515-1239,1.10.8.v20200515-1239]
- org.apache.ant.source [1.10.8.v20200515-1239,1.10.8.v20200515-1239]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.19.0.v20200106-2343,1.19.0.v20200106-2343]
- org.apache.commons.compress.source [1.19.0.v20200106-2343,1.19.0.v20200106-2343]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.10.v20200830-2311,4.5.10.v20200830-2311]
- org.apache.httpcomponents.httpclient.source [4.5.10.v20200830-2311,4.5.10.v20200830-2311]
- org.apache.httpcomponents.httpcore [4.4.12.v20200108-1212,4.4.12.v20200108-1212]
- org.apache.httpcomponents.httpcore.source [4.4.12.v20200108-1212,4.4.12.v20200108-1212]
- org.apache.log4j [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.log4j.source [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.sshd.osgi [2.4.0.v20200318-1614,2.4.0.v20200318-1614]
- org.apache.sshd.osgi.source [2.4.0.v20200318-1614,2.4.0.v20200318-1614]
- org.apache.sshd.sftp [2.4.0.v20200319-1547,2.4.0.v20200319-1547]
- org.apache.sshd.sftp.source [2.4.0.v20200319-1547,2.4.0.v20200319-1547]
- org.assertj [3.14.0.v20200120-1926,3.14.0.v20200120-1926]
- org.assertj.source [3.14.0.v20200120-1926,3.14.0.v20200120-1926]
- org.bouncycastle.bcpg [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpg.source [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpkix [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpkix.source [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcprov [1.65.1.v20200529-1514,1.65.1.v20200529-1514]
- org.bouncycastle.bcprov.source [1.65.1.v20200529-1514,1.65.1.v20200529-1514]
- org.hamcrest [1.1.0.v20090501071000,1.1.0.v20090501071000]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.junit.source [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.2.v20121108-1250,1.7.2.v20121108-1250]
- org.slf4j.api.source [1.7.2.v20121108-1250,1.7.2.v20121108-1250]
- org.slf4j.impl.log4j12 [1.7.2.v20131105-2200,1.7.2.v20131105-2200]
- org.slf4j.impl.log4j12.source [1.7.2.v20131105-2200,1.7.2.v20131105-2200]
- org.tukaani.xz [1.8.0.v20180207-1613,1.8.0.v20180207-1613]
- org.tukaani.xz.source [1.8.0.v20180207-1613,1.8.0.v20180207-1613]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20201130205003-2020-12.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20201130205003-2020-12.tpd
deleted file mode 100644
index 08a0846de7..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20201130205003-2020-12.tpd
+++ /dev/null
@@ -1,66 +0,0 @@
-target "R20201130205003-2020-12" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20201130205003/repository" {
- com.google.gson [2.8.2.v20180104-1110,2.8.2.v20180104-1110]
- com.google.gson.source [2.8.2.v20180104-1110,2.8.2.v20180104-1110]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.1.v201205102305,1.1.1.v201205102305]
- com.jcraft.jzlib.source [1.1.1.v201205102305,1.1.1.v201205102305]
- javaewah [1.1.7.v20200107-0831,1.1.7.v20200107-0831]
- javaewah.source [1.1.7.v20200107-0831,1.1.7.v20200107-0831]
- javax.servlet [3.1.0.v201410161800,3.1.0.v201410161800]
- javax.servlet.source [3.1.0.v201410161800,3.1.0.v201410161800]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- net.i2p.crypto.eddsa.source [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- org.apache.ant [1.10.9.v20201106-1946,1.10.9.v20201106-1946]
- org.apache.ant.source [1.10.9.v20201106-1946,1.10.9.v20201106-1946]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.19.0.v20200106-2343,1.19.0.v20200106-2343]
- org.apache.commons.compress.source [1.19.0.v20200106-2343,1.19.0.v20200106-2343]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.10.v20200830-2311,4.5.10.v20200830-2311]
- org.apache.httpcomponents.httpclient.source [4.5.10.v20200830-2311,4.5.10.v20200830-2311]
- org.apache.httpcomponents.httpcore [4.4.12.v20200108-1212,4.4.12.v20200108-1212]
- org.apache.httpcomponents.httpcore.source [4.4.12.v20200108-1212,4.4.12.v20200108-1212]
- org.apache.log4j [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.log4j.source [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.sshd.osgi [2.4.0.v20200318-1614,2.4.0.v20200318-1614]
- org.apache.sshd.osgi.source [2.4.0.v20200318-1614,2.4.0.v20200318-1614]
- org.apache.sshd.sftp [2.4.0.v20200319-1547,2.4.0.v20200319-1547]
- org.apache.sshd.sftp.source [2.4.0.v20200319-1547,2.4.0.v20200319-1547]
- org.assertj [3.14.0.v20200120-1926,3.14.0.v20200120-1926]
- org.assertj.source [3.14.0.v20200120-1926,3.14.0.v20200120-1926]
- org.bouncycastle.bcpg [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpg.source [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpkix [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpkix.source [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcprov [1.65.1.v20200529-1514,1.65.1.v20200529-1514]
- org.bouncycastle.bcprov.source [1.65.1.v20200529-1514,1.65.1.v20200529-1514]
- org.hamcrest [1.1.0.v20090501071000,1.1.0.v20090501071000]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.junit.source [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.log4j12 [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.slf4j.binding.log4j12.source [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.tukaani.xz [1.8.0.v20180207-1613,1.8.0.v20180207-1613]
- org.tukaani.xz.source [1.8.0.v20180207-1613,1.8.0.v20180207-1613]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210223232630-2021-03.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210223232630-2021-03.tpd
deleted file mode 100644
index 605a43bb13..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210223232630-2021-03.tpd
+++ /dev/null
@@ -1,66 +0,0 @@
-target "R20210223232630-2021-03" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20210223232630/repository" {
- com.google.gson [2.8.6.v20201231-1626,2.8.6.v20201231-1626]
- com.google.gson.source [2.8.6.v20201231-1626,2.8.6.v20201231-1626]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.1.v201205102305,1.1.1.v201205102305]
- com.jcraft.jzlib.source [1.1.1.v201205102305,1.1.1.v201205102305]
- javaewah [1.1.7.v20200107-0831,1.1.7.v20200107-0831]
- javaewah.source [1.1.7.v20200107-0831,1.1.7.v20200107-0831]
- javax.servlet [3.1.0.v201410161800,3.1.0.v201410161800]
- javax.servlet.source [3.1.0.v201410161800,3.1.0.v201410161800]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- net.i2p.crypto.eddsa.source [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- org.apache.ant [1.10.9.v20201106-1946,1.10.9.v20201106-1946]
- org.apache.ant.source [1.10.9.v20201106-1946,1.10.9.v20201106-1946]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.19.0.v20200106-2343,1.19.0.v20200106-2343]
- org.apache.commons.compress.source [1.19.0.v20200106-2343,1.19.0.v20200106-2343]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpcore [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.httpcomponents.httpcore.source [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.log4j [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.log4j.source [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.sshd.osgi [2.6.0.v20210201-2003,2.6.0.v20210201-2003]
- org.apache.sshd.osgi.source [2.6.0.v20210201-2003,2.6.0.v20210201-2003]
- org.apache.sshd.sftp [2.6.0.v20210201-2003,2.6.0.v20210201-2003]
- org.apache.sshd.sftp.source [2.6.0.v20210201-2003,2.6.0.v20210201-2003]
- org.assertj [3.14.0.v20200120-1926,3.14.0.v20200120-1926]
- org.assertj.source [3.14.0.v20200120-1926,3.14.0.v20200120-1926]
- org.bouncycastle.bcpg [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpg.source [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpkix [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpkix.source [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcprov [1.65.1.v20200529-1514,1.65.1.v20200529-1514]
- org.bouncycastle.bcprov.source [1.65.1.v20200529-1514,1.65.1.v20200529-1514]
- org.hamcrest [1.1.0.v20090501071000,1.1.0.v20090501071000]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.junit.source [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.log4j12 [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.slf4j.binding.log4j12.source [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.tukaani.xz [1.8.0.v20180207-1613,1.8.0.v20180207-1613]
- org.tukaani.xz.source [1.8.0.v20180207-1613,1.8.0.v20180207-1613]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210602031627-2021-06.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210602031627-2021-06.tpd
deleted file mode 100644
index 83b5bb3fd2..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210602031627-2021-06.tpd
+++ /dev/null
@@ -1,66 +0,0 @@
-target "R20210602031627-2021-06" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20210602031627/repository" {
- com.google.gson [2.8.6.v20201231-1626,2.8.6.v20201231-1626]
- com.google.gson.source [2.8.6.v20201231-1626,2.8.6.v20201231-1626]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.1.v201205102305,1.1.1.v201205102305]
- com.jcraft.jzlib.source [1.1.1.v201205102305,1.1.1.v201205102305]
- javaewah [1.1.7.v20200107-0831,1.1.7.v20200107-0831]
- javaewah.source [1.1.7.v20200107-0831,1.1.7.v20200107-0831]
- javax.servlet [3.1.0.v201410161800,3.1.0.v201410161800]
- javax.servlet.source [3.1.0.v201410161800,3.1.0.v201410161800]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- net.i2p.crypto.eddsa.source [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- org.apache.ant [1.10.10.v20210426-1926,1.10.10.v20210426-1926]
- org.apache.ant.source [1.10.10.v20210426-1926,1.10.10.v20210426-1926]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.19.0.v20200106-2343,1.19.0.v20200106-2343]
- org.apache.commons.compress.source [1.19.0.v20200106-2343,1.19.0.v20200106-2343]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpcore [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.httpcomponents.httpcore.source [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.log4j [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.log4j.source [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.sshd.osgi [2.6.0.v20210201-2003,2.6.0.v20210201-2003]
- org.apache.sshd.osgi.source [2.6.0.v20210201-2003,2.6.0.v20210201-2003]
- org.apache.sshd.sftp [2.6.0.v20210201-2003,2.6.0.v20210201-2003]
- org.apache.sshd.sftp.source [2.6.0.v20210201-2003,2.6.0.v20210201-2003]
- org.assertj [3.14.0.v20200120-1926,3.14.0.v20200120-1926]
- org.assertj.source [3.14.0.v20200120-1926,3.14.0.v20200120-1926]
- org.bouncycastle.bcpg [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpg.source [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpkix [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcpkix.source [1.65.0.v20200527-1955,1.65.0.v20200527-1955]
- org.bouncycastle.bcprov [1.65.1.v20200529-1514,1.65.1.v20200529-1514]
- org.bouncycastle.bcprov.source [1.65.1.v20200529-1514,1.65.1.v20200529-1514]
- org.hamcrest [1.1.0.v20090501071000,1.1.0.v20090501071000]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.junit.source [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.log4j12 [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.slf4j.binding.log4j12.source [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.tukaani.xz [1.8.0.v20180207-1613,1.8.0.v20180207-1613]
- org.tukaani.xz.source [1.8.0.v20180207-1613,1.8.0.v20180207-1613]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210825222808-2021-09.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210825222808-2021-09.tpd
deleted file mode 100644
index 99f352011b..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20210825222808-2021-09.tpd
+++ /dev/null
@@ -1,73 +0,0 @@
-target "R20210825222808-2021-09" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20210825222808/repository" {
- com.google.gson [2.8.7.v20210624-1215,2.8.7.v20210624-1215]
- com.google.gson.source [2.8.7.v20210624-1215,2.8.7.v20210624-1215]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.1.v201205102305,1.1.1.v201205102305]
- com.jcraft.jzlib.source [1.1.1.v201205102305,1.1.1.v201205102305]
- com.sun.jna [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.source [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.platform [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- com.sun.jna.platform.source [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- javaewah [1.1.12.v20210622-2206,1.1.12.v20210622-2206]
- javaewah.source [1.1.12.v20210622-2206,1.1.12.v20210622-2206]
- javax.servlet [3.1.0.v201410161800,3.1.0.v201410161800]
- javax.servlet.source [3.1.0.v201410161800,3.1.0.v201410161800]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- net.i2p.crypto.eddsa.source [0.3.0.v20181102-1323,0.3.0.v20181102-1323]
- org.apache.ant [1.10.11.v20210720-1445,1.10.11.v20210720-1445]
- org.apache.ant.source [1.10.11.v20210720-1445,1.10.11.v20210720-1445]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.20.0.v20210713-1928,1.20.0.v20210713-1928]
- org.apache.commons.compress.source [1.20.0.v20210713-1928,1.20.0.v20210713-1928]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpcore [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.httpcomponents.httpcore.source [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.log4j [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.log4j.source [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.sshd.osgi [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.osgi.source [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.sftp [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.sftp.source [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.assertj [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.assertj.source [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.bouncycastle.bcpg [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpg.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpkix [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpkix.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcprov [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcprov.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcutil [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcutil.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.hamcrest [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.source [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.junit.source [4.13.0.v20200204-1500,4.13.0.v20200204-1500]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.log4j12 [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.slf4j.binding.log4j12.source [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.tukaani.xz [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
- org.tukaani.xz.source [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20211122181901-2021-12.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20211122181901-2021-12.tpd
deleted file mode 100644
index cd1d1c08fa..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20211122181901-2021-12.tpd
+++ /dev/null
@@ -1,71 +0,0 @@
-target "R20211122181901-2021-12" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20211122181901/repository" {
- com.google.gson [2.8.8.v20211029-0838,2.8.8.v20211029-0838]
- com.google.gson.source [2.8.8.v20211029-0838,2.8.8.v20211029-0838]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.1.v201205102305,1.1.1.v201205102305]
- com.jcraft.jzlib.source [1.1.1.v201205102305,1.1.1.v201205102305]
- com.sun.jna [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.source [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.platform [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- com.sun.jna.platform.source [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- javaewah [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- javaewah.source [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20210923-1401,0.3.0.v20210923-1401]
- net.i2p.crypto.eddsa.source [0.3.0.v20210923-1401,0.3.0.v20210923-1401]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.compress.source [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpcore [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.httpcomponents.httpcore.source [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.log4j [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.log4j.source [1.2.15.v201012070815,1.2.15.v201012070815]
- org.apache.sshd.osgi [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.osgi.source [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.sftp [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.sftp.source [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.assertj [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.assertj.source [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.bouncycastle.bcpg [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpg.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpkix [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpkix.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcprov [1.69.0.v20210923-1401,1.69.0.v20210923-1401]
- org.bouncycastle.bcprov.source [1.69.0.v20210923-1401,1.69.0.v20210923-1401]
- org.bouncycastle.bcutil [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcutil.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.hamcrest [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.source [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.log4j12 [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.slf4j.binding.log4j12.source [1.7.30.v20201108-2042,1.7.30.v20201108-2042]
- org.tukaani.xz [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
- org.tukaani.xz.source [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20211213173813-2021-12.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20211213173813-2021-12.tpd
deleted file mode 100644
index 0c7c846738..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20211213173813-2021-12.tpd
+++ /dev/null
@@ -1,69 +0,0 @@
-target "R20211213173813-2021-12" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20211213173813/repository" {
- com.google.gson [2.8.8.v20211029-0838,2.8.8.v20211029-0838]
- com.google.gson.source [2.8.8.v20211029-0838,2.8.8.v20211029-0838]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.1.v201205102305,1.1.1.v201205102305]
- com.jcraft.jzlib.source [1.1.1.v201205102305,1.1.1.v201205102305]
- com.sun.jna [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.source [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.platform [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- com.sun.jna.platform.source [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- javaewah [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- javaewah.source [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20210923-1401,0.3.0.v20210923-1401]
- net.i2p.crypto.eddsa.source [0.3.0.v20210923-1401,0.3.0.v20210923-1401]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.compress.source [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpcore [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.httpcomponents.httpcore.source [4.4.14.v20210128-2225,4.4.14.v20210128-2225]
- org.apache.sshd.osgi [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.osgi.source [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.sftp [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.apache.sshd.sftp.source [2.7.0.v20210623-0618,2.7.0.v20210623-0618]
- org.assertj [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.assertj.source [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.bouncycastle.bcpg [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpg.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpkix [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcpkix.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcprov [1.69.0.v20210923-1401,1.69.0.v20210923-1401]
- org.bouncycastle.bcprov.source [1.69.0.v20210923-1401,1.69.0.v20210923-1401]
- org.bouncycastle.bcutil [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.bouncycastle.bcutil.source [1.69.0.v20210713-1924,1.69.0.v20210713-1924]
- org.hamcrest [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.source [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.simple [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.simple.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.tukaani.xz [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
- org.tukaani.xz.source [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220302172233-2022-03.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220302172233-2022-03.tpd
deleted file mode 100644
index fafc689268..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220302172233-2022-03.tpd
+++ /dev/null
@@ -1,69 +0,0 @@
-target "R20220302172233" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20220302172233/repository" {
- com.google.gson [2.8.9.v20220111-1409,2.8.9.v20220111-1409]
- com.google.gson.source [2.8.9.v20220111-1409,2.8.9.v20220111-1409]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.1.v201205102305,1.1.1.v201205102305]
- com.jcraft.jzlib.source [1.1.1.v201205102305,1.1.1.v201205102305]
- com.sun.jna [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.source [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.platform [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- com.sun.jna.platform.source [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- javaewah [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- javaewah.source [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20210923-1401,0.3.0.v20210923-1401]
- net.i2p.crypto.eddsa.source [0.3.0.v20210923-1401,0.3.0.v20210923-1401]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.compress.source [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpcore [4.4.15.v20220209-2345,4.4.15.v20220209-2345]
- org.apache.httpcomponents.httpcore.source [4.4.15.v20220209-2345,4.4.15.v20220209-2345]
- org.apache.sshd.osgi [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.osgi.source [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.sftp [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.sftp.source [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.assertj [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.assertj.source [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.bouncycastle.bcpg [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcpg.source [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcpkix [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcpkix.source [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcprov [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcprov.source [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcutil [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcutil.source [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.hamcrest [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.source [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.simple [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.simple.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.tukaani.xz [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
- org.tukaani.xz.source [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220531185310-2022-06.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220531185310-2022-06.tpd
deleted file mode 100644
index 3c74497c21..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220531185310-2022-06.tpd
+++ /dev/null
@@ -1,69 +0,0 @@
-target "R20220531185310-2022-06" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20220531185310/repository" {
- com.google.gson [2.8.9.v20220111-1409,2.8.9.v20220111-1409]
- com.google.gson.source [2.8.9.v20220111-1409,2.8.9.v20220111-1409]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.jcraft.jzlib.source [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.sun.jna [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.source [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.platform [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- com.sun.jna.platform.source [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- javaewah [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- javaewah.source [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- net.i2p.crypto.eddsa.source [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.compress.source [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpcore [4.4.15.v20220209-2345,4.4.15.v20220209-2345]
- org.apache.httpcomponents.httpcore.source [4.4.15.v20220209-2345,4.4.15.v20220209-2345]
- org.apache.sshd.osgi [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.osgi.source [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.sftp [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.sftp.source [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.assertj [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.assertj.source [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.bouncycastle.bcpg [1.70.0.v20220507-1208,1.70.0.v20220507-1208]
- org.bouncycastle.bcpg.source [1.70.0.v20220507-1208,1.70.0.v20220507-1208]
- org.bouncycastle.bcpkix [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcpkix.source [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcprov [1.70.0.v20220507-1208,1.70.0.v20220507-1208]
- org.bouncycastle.bcprov.source [1.70.0.v20220507-1208,1.70.0.v20220507-1208]
- org.bouncycastle.bcutil [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.bouncycastle.bcutil.source [1.70.0.v20220105-1522,1.70.0.v20220105-1522]
- org.hamcrest [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.source [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.simple [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.simple.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.tukaani.xz [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
- org.tukaani.xz.source [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220830213456-2022-09.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220830213456-2022-09.tpd
deleted file mode 100644
index 8db1018ffb..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20220830213456-2022-09.tpd
+++ /dev/null
@@ -1,69 +0,0 @@
-target "R20220830213456-2022-09" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20220830213456/repository" {
- com.google.gson [2.8.9.v20220111-1409,2.8.9.v20220111-1409]
- com.google.gson.source [2.8.9.v20220111-1409,2.8.9.v20220111-1409]
- com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jsch.source [0.1.55.v20190404-1902,0.1.55.v20190404-1902]
- com.jcraft.jzlib [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.jcraft.jzlib.source [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.sun.jna [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.source [5.8.0.v20210503-0343,5.8.0.v20210503-0343]
- com.sun.jna.platform [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- com.sun.jna.platform.source [5.8.0.v20210406-1004,5.8.0.v20210406-1004]
- javaewah [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- javaewah.source [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- net.bytebuddy.byte-buddy [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.bytebuddy.byte-buddy-agent [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy-agent.source [1.9.0.v20181106-1534,1.9.0.v20181106-1534]
- net.bytebuddy.byte-buddy.source [1.9.0.v20181107-1410,1.9.0.v20181107-1410]
- net.i2p.crypto.eddsa [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- net.i2p.crypto.eddsa.source [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.commons.codec [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.codec.source [1.14.0.v20200818-1422,1.14.0.v20200818-1422]
- org.apache.commons.compress [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.compress.source [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20210128-2225,4.5.13.v20210128-2225]
- org.apache.httpcomponents.httpcore [4.4.15.v20220209-2345,4.4.15.v20220209-2345]
- org.apache.httpcomponents.httpcore.source [4.4.15.v20220209-2345,4.4.15.v20220209-2345]
- org.apache.sshd.osgi [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.osgi.source [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.sftp [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.apache.sshd.sftp.source [2.8.0.v20211227-1750,2.8.0.v20211227-1750]
- org.assertj [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.assertj.source [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.bouncycastle.bcpg [1.71.0.v20220723-1943,1.71.0.v20220723-1943]
- org.bouncycastle.bcpg.source [1.71.0.v20220723-1943,1.71.0.v20220723-1943]
- org.bouncycastle.bcpkix [1.71.0.v20220723-1943,1.71.0.v20220723-1943]
- org.bouncycastle.bcpkix.source [1.71.0.v20220723-1943,1.71.0.v20220723-1943]
- org.bouncycastle.bcprov [1.71.0.v20220723-1943,1.71.0.v20220723-1943]
- org.bouncycastle.bcprov.source [1.71.0.v20220723-1943,1.71.0.v20220723-1943]
- org.bouncycastle.bcutil [1.71.0.v20220723-1943,1.71.0.v20220723-1943]
- org.bouncycastle.bcutil.source [1.71.0.v20220723-1943,1.71.0.v20220723-1943]
- org.hamcrest [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.source [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.mockito.source [2.23.0.v20200310-1642,2.23.0.v20200310-1642]
- org.objenesis [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.objenesis.source [2.6.0.v20180420-1519,2.6.0.v20180420-1519]
- org.slf4j.api [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.api.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.simple [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.slf4j.binding.simple.source [1.7.30.v20200204-2150,1.7.30.v20200204-2150]
- org.tukaani.xz [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
- org.tukaani.xz.source [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20221123021534-2022-12.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20221123021534-2022-12.tpd
deleted file mode 100644
index 378b84873f..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20221123021534-2022-12.tpd
+++ /dev/null
@@ -1,69 +0,0 @@
-target "S20230101190934" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20221123021534/repository" {
- com.google.gson [2.9.1.v20220915-1632,2.9.1.v20220915-1632]
- com.google.gson.source [2.9.1.v20220915-1632,2.9.1.v20220915-1632]
- com.jcraft.jsch [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
- com.jcraft.jsch.source [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
- com.jcraft.jzlib [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.jcraft.jzlib.source [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.sun.jna [5.12.1.v20221103-2317,5.12.1.v20221103-2317]
- com.sun.jna.source [5.12.1.v20221103-2317,5.12.1.v20221103-2317]
- com.sun.jna.platform [5.12.1.v20221103-2317,5.12.1.v20221103-2317]
- com.sun.jna.platform.source [5.12.1.v20221103-2317,5.12.1.v20221103-2317]
- javaewah [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- javaewah.source [1.1.13.v20211029-0839,1.1.13.v20211029-0839]
- net.bytebuddy.byte-buddy [1.12.18.v20221114-2102,1.12.18.v20221114-2102]
- net.bytebuddy.byte-buddy.source [1.12.18.v20221114-2102,1.12.18.v20221114-2102]
- net.bytebuddy.byte-buddy-agent [1.12.18.v20221114-2102,1.12.18.v20221114-2102]
- net.bytebuddy.byte-buddy-agent.source [1.12.18.v20221114-2102,1.12.18.v20221114-2102]
- net.i2p.crypto.eddsa [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- net.i2p.crypto.eddsa.source [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.commons.codec [1.14.0.v20221112-0806,1.14.0.v20221112-0806]
- org.apache.commons.codec.source [1.14.0.v20221112-0806,1.14.0.v20221112-0806]
- org.apache.commons.compress [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.compress.source [1.21.0.v20211103-2100,1.21.0.v20211103-2100]
- org.apache.commons.logging [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.commons.logging.source [1.2.0.v20180409-1502,1.2.0.v20180409-1502]
- org.apache.httpcomponents.httpclient [4.5.13.v20221112-0806,4.5.13.v20221112-0806]
- org.apache.httpcomponents.httpclient.source [4.5.13.v20221112-0806,4.5.13.v20221112-0806]
- org.apache.httpcomponents.httpcore [4.4.15.v20220209-2345,4.4.15.v20220209-2345]
- org.apache.httpcomponents.httpcore.source [4.4.15.v20220209-2345,4.4.15.v20220209-2345]
- org.apache.sshd.osgi [2.9.2.v20221117-1942,2.9.2.v20221117-1942]
- org.apache.sshd.osgi.source [2.9.2.v20221117-1942,2.9.2.v20221117-1942]
- org.apache.sshd.sftp [2.9.2.v20221117-1942,2.9.2.v20221117-1942]
- org.apache.sshd.sftp.source [2.9.2.v20221117-1942,2.9.2.v20221117-1942]
- org.assertj [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.assertj.source [3.20.2.v20210706-1104,3.20.2.v20210706-1104]
- org.bouncycastle.bcpg [1.72.0.v20221013-1810,1.72.0.v20221013-1810]
- org.bouncycastle.bcpg.source [1.72.0.v20221013-1810,1.72.0.v20221013-1810]
- org.bouncycastle.bcpkix [1.72.0.v20221013-1810,1.72.0.v20221013-1810]
- org.bouncycastle.bcpkix.source [1.72.0.v20221013-1810,1.72.0.v20221013-1810]
- org.bouncycastle.bcprov [1.72.0.v20221013-1810,1.72.0.v20221013-1810]
- org.bouncycastle.bcprov.source [1.72.0.v20221013-1810,1.72.0.v20221013-1810]
- org.bouncycastle.bcutil [1.72.0.v20221013-1810,1.72.0.v20221013-1810]
- org.bouncycastle.bcutil.source [1.72.0.v20221013-1810,1.72.0.v20221013-1810]
- org.hamcrest [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.source [2.2.0.v20210711-0821,2.2.0.v20210711-0821]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.kohsuke.args4j [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.kohsuke.args4j.source [2.33.0.v20160323-2218,2.33.0.v20160323-2218]
- org.mockito.mockito-core [4.8.1.v20221103-2317,4.8.1.v20221103-2317]
- org.mockito.mockito-core.source [4.8.1.v20221103-2317,4.8.1.v20221103-2317]
- org.objenesis [3.3.0.v20221103-2317,3.3.0.v20221103-2317]
- org.objenesis.source [3.3.0.v20221103-2317,3.3.0.v20221103-2317]
- org.slf4j.api [1.7.30.v20221112-0806,1.7.30.v20221112-0806]
- org.slf4j.api.source [1.7.30.v20221112-0806,1.7.30.v20221112-0806]
- org.slf4j.binding.simple [1.7.30.v20221112-0806,1.7.30.v20221112-0806]
- org.slf4j.binding.simple.source [1.7.30.v20221112-0806,1.7.30.v20221112-0806]
- org.tukaani.xz [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
- org.tukaani.xz.source [1.9.0.v20210624-1259,1.9.0.v20210624-1259]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230302014618-2023-03.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230302014618-2023-03.tpd
deleted file mode 100644
index 8578b2cdf5..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230302014618-2023-03.tpd
+++ /dev/null
@@ -1,27 +0,0 @@
-target "R20230302014618-2023-03" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20230302014618/repository" {
- com.jcraft.jsch [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
- com.jcraft.jsch.source [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
- com.jcraft.jzlib [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.jcraft.jzlib.source [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- net.i2p.crypto.eddsa [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- net.i2p.crypto.eddsa.source [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.httpcomponents.httpclient [4.5.14.v20221207-1049,4.5.14.v20221207-1049]
- org.apache.httpcomponents.httpclient.source [4.5.14.v20221207-1049,4.5.14.v20221207-1049]
- org.apache.httpcomponents.httpcore [4.4.16.v20221207-1049,4.4.16.v20221207-1049]
- org.apache.httpcomponents.httpcore.source [4.4.16.v20221207-1049,4.4.16.v20221207-1049]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.mockito.mockito-core [4.8.1.v20221103-2317,4.8.1.v20221103-2317]
- org.mockito.mockito-core.source [4.8.1.v20221103-2317,4.8.1.v20221103-2317]
- org.objenesis [3.3.0.v20221103-2317,3.3.0.v20221103-2317]
- org.objenesis.source [3.3.0.v20221103-2317,3.3.0.v20221103-2317]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd
deleted file mode 100644
index 46055d3728..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd
+++ /dev/null
@@ -1,25 +0,0 @@
-target "R20230531010532-2023-06" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository" {
- com.jcraft.jsch [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
- com.jcraft.jsch.source [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
- com.jcraft.jzlib [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.jcraft.jzlib.source [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- net.i2p.crypto.eddsa [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- net.i2p.crypto.eddsa.source [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.httpcomponents.httpclient [4.5.14.v20230516-1249,4.5.14.v20230516-1249]
- org.apache.httpcomponents.httpclient.source [4.5.14.v20230516-1249,4.5.14.v20230516-1249]
- org.apache.httpcomponents.httpcore [4.4.16.v20221207-1049,4.4.16.v20221207-1049]
- org.apache.httpcomponents.httpcore.source [4.4.16.v20221207-1049,4.4.16.v20221207-1049]
- org.hamcrest.core [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.core.source [1.3.0.v20180420-1519,1.3.0.v20180420-1519]
- org.hamcrest.library [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
- org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.objenesis [3.3.0.v20221103-2317,3.3.0.v20221103-2317]
- org.objenesis.source [3.3.0.v20221103-2317,3.3.0.v20221103-2317]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.29.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.29.tpd
deleted file mode 100644
index 70a17a1ddc..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.29.tpd
+++ /dev/null
@@ -1,27 +0,0 @@
-target "orbit-4.29" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0" {
- com.jcraft.jsch [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
- com.jcraft.jsch.source [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
- com.jcraft.jzlib [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- com.jcraft.jzlib.source [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
- net.i2p.crypto.eddsa [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- net.i2p.crypto.eddsa.source [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
- org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
- org.apache.httpcomponents.httpclient [4.5.14,4.5.14]
- org.apache.httpcomponents.httpclient.source [4.5.14,4.5.14]
- org.apache.httpcomponents.httpcore [4.4.16,4.4.16]
- org.apache.httpcomponents.httpcore.source [4.4.16,4.4.16]
- org.hamcrest.core [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.core.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.library [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.library.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.junit [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
- org.junit.source [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
- org.objenesis [3.3,3.3]
- org.objenesis.source [3.3,3.3]
- org.osgi.service.cm [1.6.1.202109301733,1.6.1.202109301733]
- org.osgi.service.cm.source [1.6.1.202109301733,1.6.1.202109301733]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.30.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.30.tpd
deleted file mode 100644
index 0554a8578c..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.30.tpd
+++ /dev/null
@@ -1,27 +0,0 @@
-target "orbit-4.30" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2023-12" {
- com.jcraft.jsch [0.1.55.v20230916-1400,0.1.55.v20230916-1400]
- com.jcraft.jsch.source [0.1.55.v20230916-1400,0.1.55.v20230916-1400]
- com.jcraft.jzlib [1.1.3.v20230916-1400,1.1.3.v20230916-1400]
- com.jcraft.jzlib.source [1.1.3.v20230916-1400,1.1.3.v20230916-1400]
- net.i2p.crypto.eddsa [0.3.0,0.3.0]
- net.i2p.crypto.eddsa.source [0.3.0,0.3.0]
- org.apache.ant [1.10.14.v20230922-1200,1.10.14.v20230922-1200]
- org.apache.ant.source [1.10.14.v20230922-1200,1.10.14.v20230922-1200]
- org.apache.httpcomponents.httpclient [4.5.14,4.5.14]
- org.apache.httpcomponents.httpclient.source [4.5.14,4.5.14]
- org.apache.httpcomponents.httpcore [4.4.16,4.4.16]
- org.apache.httpcomponents.httpcore.source [4.4.16,4.4.16]
- org.hamcrest.core [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.core.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.library [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.library.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.junit [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
- org.junit.source [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
- org.objenesis [3.3,3.3]
- org.objenesis.source [3.3,3.3]
- org.osgi.service.cm [1.6.1.202109301733,1.6.1.202109301733]
- org.osgi.service.cm.source [1.6.1.202109301733,1.6.1.202109301733]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.31.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.31.tpd
deleted file mode 100644
index 9d00cb4c4f..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.31.tpd
+++ /dev/null
@@ -1,27 +0,0 @@
-target "orbit-4.31" with source configurePhase
-// see https://download.eclipse.org/tools/orbit/downloads/
-
-location "https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2023-12" {
- com.jcraft.jsch [0.1.55.v20230916-1400,0.1.55.v20230916-1400]
- com.jcraft.jsch.source [0.1.55.v20230916-1400,0.1.55.v20230916-1400]
- com.jcraft.jzlib [1.1.3.v20230916-1400,1.1.3.v20230916-1400]
- com.jcraft.jzlib.source [1.1.3.v20230916-1400,1.1.3.v20230916-1400]
- net.i2p.crypto.eddsa [0.3.0,0.3.0]
- net.i2p.crypto.eddsa.source [0.3.0,0.3.0]
- org.apache.ant [1.10.14.v20230922-1200,1.10.14.v20230922-1200]
- org.apache.ant.source [1.10.14.v20230922-1200,1.10.14.v20230922-1200]
- org.apache.httpcomponents.httpclient [4.5.14,4.5.14]
- org.apache.httpcomponents.httpclient.source [4.5.14,4.5.14]
- org.apache.httpcomponents.httpcore [4.4.16,4.4.16]
- org.apache.httpcomponents.httpcore.source [4.4.16,4.4.16]
- org.hamcrest.core [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.core.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.library [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.hamcrest.library.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
- org.junit [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
- org.junit.source [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
- org.objenesis [3.3,3.3]
- org.objenesis.source [3.3,3.3]
- org.osgi.service.cm [1.6.1.202109301733,1.6.1.202109301733]
- org.osgi.service.cm.source [1.6.1.202109301733,1.6.1.202109301733]
-}
diff --git a/org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabaseTest.java b/org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabaseTest.java
index b2e6401816..6b61821a0f 100644
--- a/org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabaseTest.java
+++ b/org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabaseTest.java
@@ -478,6 +478,29 @@ public class OpenSshServerKeyDatabaseTest {
new KnownHostsConfig(), null));
}
+ @Test
+ public void testUnknownKeyType() throws Exception {
+ List<String> initialKnownHosts = List.of(
+ "localhost,127.0.0.1 " + PublicKeyEntry.toString(ec384)
+ .replace("ecdsa", "foo"),
+ "some.other.com " + PublicKeyEntry.toString(ec384));
+ Files.write(knownHosts, initialKnownHosts);
+ TestCredentialsProvider ui = new TestCredentialsProvider(true, true);
+ assertTrue(database.accept("localhost", LOCAL, ec384,
+ new KnownHostsConfig(
+ ServerKeyDatabase.Configuration.StrictHostKeyChecking.ASK),
+ ui));
+ assertEquals(1, ui.invocations);
+ // The "modified key" dialog has two questions; whereas the "add new
+ // key" is just a simple question.
+ assertEquals(2, ui.questions);
+ List<String> expected = new ArrayList<>(initialKnownHosts);
+ expected.add("localhost,127.0.0.1 " + PublicKeyEntry.toString(ec384));
+ assertFile(knownHosts, expected);
+ assertTrue(database.accept("127.0.0.1:22", LOCAL, ec384,
+ new KnownHostsConfig(), null));
+ }
+
private void assertFile(Path path, List<String> lines) throws Exception {
assertEquals(lines, Files.readAllLines(path).stream()
.filter(s -> !s.isBlank()).toList());
@@ -489,6 +512,8 @@ public class OpenSshServerKeyDatabaseTest {
int invocations = 0;
+ int questions = 0;
+
TestCredentialsProvider(boolean accept, boolean store) {
values = new boolean[] { accept, store };
}
@@ -512,6 +537,7 @@ public class OpenSshServerKeyDatabaseTest {
if (item instanceof CredentialItem.YesNoType) {
((CredentialItem.YesNoType) item)
.setValue(i < values.length && values[i++]);
+ questions++;
}
}
return true;
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java
index 40d8d3f04c..acb77c5bb7 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java
@@ -53,6 +53,7 @@ import org.apache.sshd.common.config.keys.KeyUtils;
import org.apache.sshd.common.config.keys.OpenSshCertificate;
import org.apache.sshd.common.config.keys.PublicKeyEntry;
import org.apache.sshd.common.config.keys.PublicKeyEntryResolver;
+import org.apache.sshd.common.config.keys.UnsupportedSshPublicKey;
import org.apache.sshd.common.digest.BuiltinDigests;
import org.apache.sshd.common.mac.Mac;
import org.apache.sshd.common.util.io.ModifiableFileWatcher;
@@ -185,6 +186,9 @@ public class OpenSshServerKeyDatabase
for (HostKeyFile file : filesToUse) {
for (HostEntryPair current : file.get()) {
KnownHostEntry entry = current.getHostEntry();
+ if (current.getServerKey() instanceof UnsupportedSshPublicKey) {
+ continue;
+ }
if (!isRevoked(entry) && !isCertificateAuthority(entry)) {
for (SshdSocketAddress host : candidates) {
if (entry.isHostMatch(host.getHostName(),
@@ -235,12 +239,20 @@ public class OpenSshServerKeyDatabase
remoteAddress, modified[0].getServerKey(),
serverKey, path);
if (toDo == AskUser.ModifiedKeyHandling.ALLOW_AND_STORE) {
- try {
- updateModifiedServerKey(serverKey, modified[0], path);
- knownHostsFiles.get(path).resetReloadAttributes();
- } catch (IOException e) {
- LOG.warn(format(SshdText.get().knownHostsCouldNotUpdate,
- path));
+ if (modified[0]
+ .getServerKey() instanceof UnsupportedSshPublicKey) {
+ // Never update a line containing an unknown key type,
+ // always add.
+ addKeyToFile(filesToUse.get(0), candidates, serverKey, ask,
+ config);
+ } else {
+ try {
+ updateModifiedServerKey(serverKey, modified[0], path);
+ knownHostsFiles.get(path).resetReloadAttributes();
+ } catch (IOException e) {
+ LOG.warn(format(SshdText.get().knownHostsCouldNotUpdate,
+ path));
+ }
}
}
if (toDo == AskUser.ModifiedKeyHandling.DENY) {
@@ -253,19 +265,8 @@ public class OpenSshServerKeyDatabase
return true;
} else if (ask.acceptUnknownKey(remoteAddress, serverKey)) {
if (!filesToUse.isEmpty()) {
- HostKeyFile toUpdate = filesToUse.get(0);
- path = toUpdate.getPath();
- try {
- if (Files.exists(path) || !askAboutNewFile
- || ask.createNewFile(path)) {
- updateKnownHostsFile(candidates, serverKey, path,
- config);
- toUpdate.resetReloadAttributes();
- }
- } catch (Exception e) {
- LOG.warn(format(SshdText.get().knownHostsCouldNotUpdate,
- path), e);
- }
+ addKeyToFile(filesToUse.get(0), candidates, serverKey, ask,
+ config);
}
return true;
}
@@ -379,6 +380,21 @@ public class OpenSshServerKeyDatabase
return userFiles;
}
+ private void addKeyToFile(HostKeyFile file,
+ Collection<SshdSocketAddress> candidates, PublicKey serverKey,
+ AskUser ask, Configuration config) {
+ Path path = file.getPath();
+ try {
+ if (Files.exists(path) || !askAboutNewFile
+ || ask.createNewFile(path)) {
+ updateKnownHostsFile(candidates, serverKey, path, config);
+ file.resetReloadAttributes();
+ }
+ } catch (Exception e) {
+ LOG.warn(format(SshdText.get().knownHostsCouldNotUpdate, path), e);
+ }
+ }
+
private void updateKnownHostsFile(Collection<SshdSocketAddress> candidates,
PublicKey serverKey, Path path, Configuration config)
throws Exception {
@@ -663,7 +679,7 @@ public class OpenSshServerKeyDatabase
}
try {
PublicKey serverKey = keyPart.resolvePublicKey(null,
- PublicKeyEntryResolver.IGNORING);
+ PublicKeyEntryResolver.UNSUPPORTED);
if (serverKey == null) {
LOG.warn(format(
SshdText.get().knownHostsUnknownKeyType,
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameRegionMergerTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameRegionMergerTest.java
index cf0dc452e7..1b28676fbf 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameRegionMergerTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameRegionMergerTest.java
@@ -174,7 +174,7 @@ public class BlameRegionMergerTest extends RepositoryTestCase {
public void blame_corruptedIndex() {
Region outOfRange = new Region(0, 43, 4);
// This region is out of the blamed area
- assertThrows(IllegalStateException.class,
+ assertThrows(IOException.class,
() -> blamer.mergeOneRegion(outOfRange));
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileReftableTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileReftableTest.java
index 758ee93c30..5756b41442 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileReftableTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileReftableTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
import java.io.File;
import java.io.FileOutputStream;
@@ -33,8 +34,15 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
-
import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.NullProgressMonitor;
@@ -51,6 +59,10 @@ import org.eclipse.jgit.lib.RepositoryCache;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.test.resources.SampleDataRepositoryTestCase;
import org.eclipse.jgit.transport.ReceiveCommand;
+import org.eclipse.jgit.util.FS;
+import org.eclipse.jgit.util.FS.ExecutionResult;
+import org.eclipse.jgit.util.RawParseUtils;
+import org.eclipse.jgit.util.TemporaryBuffer;
import org.junit.Test;
public class FileReftableTest extends SampleDataRepositoryTestCase {
@@ -66,6 +78,30 @@ public class FileReftableTest extends SampleDataRepositoryTestCase {
@SuppressWarnings("boxing")
@Test
+ public void testReloadIfNecessary() throws Exception {
+ ObjectId id = db.resolve("master");
+ try (FileRepository repo1 = new FileRepository(db.getDirectory());
+ FileRepository repo2 = new FileRepository(db.getDirectory())) {
+ ((FileReftableDatabase) repo1.getRefDatabase())
+ .setAutoRefresh(true);
+ ((FileReftableDatabase) repo2.getRefDatabase())
+ .setAutoRefresh(true);
+ FileRepository repos[] = { repo1, repo2 };
+ for (int i = 0; i < 10; i++) {
+ for (int j = 0; j < 2; j++) {
+ FileRepository repo = repos[j];
+ RefUpdate u = repo.getRefDatabase().newUpdate(
+ String.format("branch%d", i * 10 + j), false);
+ u.setNewObjectId(id);
+ RefUpdate.Result r = u.update();
+ assertEquals(Result.NEW, r);
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("boxing")
+ @Test
public void testRacyReload() throws Exception {
ObjectId id = db.resolve("master");
int retry = 0;
@@ -98,6 +134,54 @@ public class FileReftableTest extends SampleDataRepositoryTestCase {
}
@Test
+ public void testConcurrentRacyReload() throws Exception {
+ ObjectId id = db.resolve("master");
+ final CyclicBarrier barrier = new CyclicBarrier(2);
+
+ class UpdateRef implements Callable<RefUpdate.Result> {
+
+ private RefUpdate u;
+
+ UpdateRef(FileRepository repo, String branchName)
+ throws IOException {
+ u = repo.getRefDatabase().newUpdate(branchName,
+ false);
+ u.setNewObjectId(id);
+ }
+
+ @Override
+ public RefUpdate.Result call() throws Exception {
+ barrier.await(); // wait for the other thread to prepare
+ return u.update();
+ }
+ }
+
+ ExecutorService pool = Executors.newFixedThreadPool(2);
+ try (FileRepository repo1 = new FileRepository(db.getDirectory());
+ FileRepository repo2 = new FileRepository(db.getDirectory())) {
+ ((FileReftableDatabase) repo1.getRefDatabase())
+ .setAutoRefresh(true);
+ ((FileReftableDatabase) repo2.getRefDatabase())
+ .setAutoRefresh(true);
+ for (int i = 0; i < 10; i++) {
+ String branchName = String.format("branch%d",
+ Integer.valueOf(i));
+ Future<RefUpdate.Result> ru1 = pool
+ .submit(new UpdateRef(repo1, branchName));
+ Future<RefUpdate.Result> ru2 = pool
+ .submit(new UpdateRef(repo2, branchName));
+ assertTrue((ru1.get() == Result.NEW
+ && ru2.get() == Result.LOCK_FAILURE)
+ || (ru1.get() == Result.LOCK_FAILURE
+ && ru2.get() == Result.NEW));
+ }
+ } finally {
+ pool.shutdown();
+ pool.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
+ }
+ }
+
+ @Test
public void testCompactFully() throws Exception {
ObjectId c1 = db.resolve("master^^");
ObjectId c2 = db.resolve("master^");
@@ -651,6 +735,54 @@ public class FileReftableTest extends SampleDataRepositoryTestCase {
checkContainsRef(refs, db.exactRef("HEAD"));
}
+ @Test
+ public void testExternalUpdate_bug_102() throws Exception {
+ ((FileReftableDatabase) db.getRefDatabase()).setAutoRefresh(true);
+ assumeTrue(atLeastGitVersion(2, 45));
+ Git git = Git.wrap(db);
+ git.tag().setName("foo").call();
+ Ref ref = db.exactRef("refs/tags/foo");
+ assertNotNull(ref);
+ runGitCommand("tag", "--force", "foo", "e");
+ Ref e = db.exactRef("refs/heads/e");
+ Ref foo = db.exactRef("refs/tags/foo");
+ assertEquals(e.getObjectId(), foo.getObjectId());
+ }
+
+ private String toString(TemporaryBuffer b) throws IOException {
+ return RawParseUtils.decode(b.toByteArray());
+ }
+
+ private ExecutionResult runGitCommand(String... args)
+ throws IOException, InterruptedException {
+ FS fs = db.getFS();
+ ProcessBuilder pb = fs.runInShell("git", args);
+ pb.directory(db.getWorkTree());
+ System.err.println("PATH=" + pb.environment().get("PATH"));
+ ExecutionResult result = fs.execute(pb, null);
+ assertEquals(0, result.getRc());
+ String err = toString(result.getStderr());
+ if (!err.isEmpty()) {
+ System.err.println(err);
+ }
+ String out = toString(result.getStdout());
+ if (!out.isEmpty()) {
+ System.out.println(out);
+ }
+ return result;
+ }
+
+ private boolean atLeastGitVersion(int minMajor, int minMinor)
+ throws IOException, InterruptedException {
+ String version = toString(runGitCommand("version").getStdout())
+ .split(" ")[2];
+ System.out.println(version);
+ String[] digits = version.split("\\.");
+ int major = Integer.parseInt(digits[0]);
+ int minor = Integer.parseInt(digits[1]);
+ return (major >= minMajor) && (minor >= minMinor);
+ }
+
private RefUpdate updateRef(String name) throws IOException {
final RefUpdate ref = db.updateRef(name);
ref.setNewObjectId(db.resolve(Constants.HEAD));
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java
index bf7e0ff736..67bc6fb789 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java
@@ -72,7 +72,7 @@ class BlameRegionMerger {
List<Candidate> mergeOneRegion(Region region) throws IOException {
List<CacheRegion> overlaps = findOverlaps(region);
if (overlaps.isEmpty()) {
- throw new IllegalStateException(
+ throw new IOException(
"Cached blame should cover all lines");
}
/*
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
index 6040ad554d..e9782e2e18 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
@@ -16,6 +16,7 @@ import static org.eclipse.jgit.lib.Ref.Storage.PACKED;
import java.io.File;
import java.io.IOException;
+import java.io.UncheckedIOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -23,6 +24,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
@@ -37,6 +39,7 @@ import org.eclipse.jgit.internal.storage.reftable.ReftableBatchRefUpdate;
import org.eclipse.jgit.internal.storage.reftable.ReftableDatabase;
import org.eclipse.jgit.internal.storage.reftable.ReftableWriter;
import org.eclipse.jgit.lib.BatchRefUpdate;
+import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectIdRef;
@@ -70,6 +73,8 @@ public class FileReftableDatabase extends RefDatabase {
private final FileReftableStack reftableStack;
+ private final AtomicBoolean autoRefresh;
+
FileReftableDatabase(FileRepository repo) throws IOException {
this(repo, new File(new File(repo.getCommonDirectory(), Constants.REFTABLE),
Constants.TABLES_LIST));
@@ -77,6 +82,9 @@ public class FileReftableDatabase extends RefDatabase {
FileReftableDatabase(FileRepository repo, File refstackName) throws IOException {
this.fileRepository = repo;
+ this.autoRefresh = new AtomicBoolean(repo.getConfig().getBoolean(
+ ConfigConstants.CONFIG_REFTABLE_SECTION,
+ ConfigConstants.CONFIG_KEY_AUTOREFRESH, false));
this.reftableStack = new FileReftableStack(refstackName,
new File(fileRepository.getCommonDirectory(), Constants.REFTABLE),
() -> fileRepository.fireEvent(new RefsChangedEvent()),
@@ -183,6 +191,7 @@ public class FileReftableDatabase extends RefDatabase {
@Override
public Ref exactRef(String name) throws IOException {
+ autoRefresh();
return reftableDatabase.exactRef(name);
}
@@ -193,6 +202,7 @@ public class FileReftableDatabase extends RefDatabase {
@Override
public Map<String, Ref> getRefs(String prefix) throws IOException {
+ autoRefresh();
List<Ref> refs = reftableDatabase.getRefsByPrefix(prefix);
RefList.Builder<Ref> builder = new RefList.Builder<>(refs.size());
for (Ref r : refs) {
@@ -205,6 +215,7 @@ public class FileReftableDatabase extends RefDatabase {
@Override
public List<Ref> getRefsByPrefixWithExclusions(String include, Set<String> excludes)
throws IOException {
+ autoRefresh();
return reftableDatabase.getRefsByPrefixWithExclusions(include, excludes);
}
@@ -223,6 +234,50 @@ public class FileReftableDatabase extends RefDatabase {
}
+ /**
+ * Whether to auto-refresh the reftable stack if it is out of date.
+ *
+ * @param autoRefresh
+ * whether to auto-refresh the reftable stack if it is out of
+ * date.
+ */
+ public void setAutoRefresh(boolean autoRefresh) {
+ this.autoRefresh.set(autoRefresh);
+ }
+
+ /**
+ * Whether the reftable stack is auto-refreshed if it is out of date.
+ *
+ * @return whether the reftable stack is auto-refreshed if it is out of
+ * date.
+ */
+ public boolean isAutoRefresh() {
+ return autoRefresh.get();
+ }
+
+ private void autoRefresh() {
+ if (autoRefresh.get()) {
+ refresh();
+ }
+ }
+
+ /**
+ * Check if the reftable stack is up to date, and if not, reload it.
+ * <p>
+ * {@inheritDoc}
+ */
+ @Override
+ public void refresh() {
+ try {
+ if (!reftableStack.isUpToDate()) {
+ reftableDatabase.clearCache();
+ reftableStack.reload();
+ }
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
private Ref doPeel(Ref leaf) throws IOException {
try (RevWalk rw = new RevWalk(fileRepository)) {
RevObject obj = rw.parseAny(leaf.getObjectId());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java
index 0f5ff0f9f7..b2c88922b8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java
@@ -18,8 +18,10 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
import java.nio.file.StandardCopyOption;
import java.security.SecureRandom;
import java.util.ArrayList;
@@ -27,6 +29,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@@ -39,6 +42,8 @@ import org.eclipse.jgit.internal.storage.reftable.ReftableConfig;
import org.eclipse.jgit.internal.storage.reftable.ReftableReader;
import org.eclipse.jgit.internal.storage.reftable.ReftableWriter;
import org.eclipse.jgit.lib.Config;
+import org.eclipse.jgit.lib.CoreConfig;
+import org.eclipse.jgit.lib.CoreConfig.TrustStat;
import org.eclipse.jgit.util.FileUtils;
import org.eclipse.jgit.util.SystemReader;
@@ -59,6 +64,9 @@ public class FileReftableStack implements AutoCloseable {
private List<StackEntry> stack;
+ private AtomicReference<FileSnapshot> snapshot = new AtomicReference<>(
+ FileSnapshot.DIRTY);
+
private long lastNextUpdateIndex;
private final File stackPath;
@@ -98,6 +106,8 @@ public class FileReftableStack implements AutoCloseable {
private final CompactionStats stats;
+ private final TrustStat trustTablesListStat;
+
/**
* Creates a stack corresponding to the list of reftables in the argument
*
@@ -126,6 +136,8 @@ public class FileReftableStack implements AutoCloseable {
reload();
stats = new CompactionStats();
+ trustTablesListStat = configSupplier.get().get(CoreConfig.KEY)
+ .getTrustTablesListStat();
}
CompactionStats getStats() {
@@ -272,8 +284,9 @@ public class FileReftableStack implements AutoCloseable {
}
private List<String> readTableNames() throws IOException {
+ FileSnapshot old;
List<String> names = new ArrayList<>(stack.size() + 1);
-
+ old = snapshot.get();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(stackPath), UTF_8))) {
String line;
@@ -282,8 +295,10 @@ public class FileReftableStack implements AutoCloseable {
names.add(line);
}
}
+ snapshot.compareAndSet(old, FileSnapshot.save(stackPath));
} catch (FileNotFoundException e) {
// file isn't there: empty repository.
+ snapshot.compareAndSet(old, FileSnapshot.MISSING_FILE);
}
return names;
}
@@ -294,9 +309,28 @@ public class FileReftableStack implements AutoCloseable {
* on IO problem
*/
boolean isUpToDate() throws IOException {
- // We could use FileSnapshot to avoid reading the file, but the file is
- // small so it's probably a minor optimization.
try {
+ switch (trustTablesListStat) {
+ case NEVER:
+ break;
+ case AFTER_OPEN:
+ try (InputStream stream = Files
+ .newInputStream(stackPath.toPath())) {
+ // open the tables.list file to refresh attributes (on some
+ // NFS clients)
+ } catch (FileNotFoundException | NoSuchFileException e) {
+ // ignore
+ }
+ //$FALL-THROUGH$
+ case ALWAYS:
+ if (!snapshot.get().isModified(stackPath)) {
+ return true;
+ }
+ break;
+ case INHERIT:
+ // only used in CoreConfig internally
+ throw new IllegalStateException();
+ }
List<String> names = readTableNames();
if (names.size() != stack.size()) {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
index 30e7de47c3..c4550329d3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
@@ -1045,6 +1045,14 @@ public final class ConfigConstants {
* @since 7.2
*/
public static final String CONFIG_KEY_TRUST_LOOSE_OBJECT_STAT = "trustLooseObjectStat";
+
+ /**
+ * The "trustTablesListStat" key
+ *
+ * @since 7.2
+ */
+ public static final String CONFIG_KEY_TRUST_TABLESLIST_STAT = "trustTablesListStat";
+
/**
* The "pack.preserveOldPacks" key
*
@@ -1093,4 +1101,18 @@ public final class ConfigConstants {
* @since 7.1
*/
public static final String CONFIG_KEY_LOAD_REV_INDEX_IN_PARALLEL = "loadRevIndexInParallel";
+
+ /**
+ * The "reftable" section
+ *
+ * @since 7.2
+ */
+ public static final String CONFIG_REFTABLE_SECTION = "reftable";
+
+ /**
+ * The "autorefresh" key
+ *
+ * @since 7.2
+ */
+ public static final String CONFIG_KEY_AUTOREFRESH = "autorefresh";
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
index e43c9653dd..0e27b2743c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
@@ -215,6 +215,8 @@ public class CoreConfig {
private final TrustStat trustLooseObjectStat;
+ private final TrustStat trustTablesListStat;
+
/**
* Options for symlink handling
*
@@ -268,6 +270,7 @@ public class CoreConfig {
trustLooseRefStat = parseTrustLooseRefStat(rc);
trustPackStat = parseTrustPackFileStat(rc);
trustLooseObjectStat = parseTrustLooseObjectFileStat(rc);
+ trustTablesListStat = parseTablesListStat(rc);
}
private static TrustStat parseTrustStat(Config rc) {
@@ -318,6 +321,13 @@ public class CoreConfig {
return t == TrustStat.INHERIT ? trustStat : t;
}
+ private TrustStat parseTablesListStat(Config rc) {
+ TrustStat t = rc.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
+ ConfigConstants.CONFIG_KEY_TRUST_TABLESLIST_STAT,
+ TrustStat.INHERIT);
+ return t == TrustStat.INHERIT ? trustStat : t;
+ }
+
/**
* Get the compression level to use when storing loose objects
*
@@ -418,4 +428,18 @@ public class CoreConfig {
public TrustStat getTrustLooseObjectStat() {
return trustLooseObjectStat;
}
+
+ /**
+ * Get how far we can trust file attributes of the "tables.list" file which
+ * is used to store the list of filenames of the files storing
+ * {@link org.eclipse.jgit.internal.storage.reftable.Reftable}s in
+ * {@link org.eclipse.jgit.internal.storage.file.FileReftableDatabase}.
+ *
+ * @return how far we can trust file attributes of the "tables.list" file.
+ *
+ * @since 7.2
+ */
+ public TrustStat getTrustTablesListStat() {
+ return trustTablesListStat;
+ }
}