Merge branch 'master' into servlet-4
* master:
PendingGenerator: drop only buffers loaded in the generator
Prepare 7.4.0-SNAPSHOT builds
JGit v7.4.0.202508261455-rc1
Update apache sshd to 2.16.0
Do not include 3rd party dependencies in features
Ensure pack files are closed after git.close()
Prepare 7.4.0-SNAPSHOT builds
JGit v7.4.0.202508191000-m3
Update mockito to 5.19.0
Update jetty to 12.1.0
Update org.assertj:assertj-core to 3.27.4
Update bytebuddy to 1.17.7
util.Iterators: suppress warning about object arrays
util.Iterators: private constructor for utility class
pgm: new command for the object size index
WindowCursor: honor pack.useObjectSizeIndex
Prevent CommitGraphWriter.write() from closing its stream
Make CancellableDigestOutputStream extend FilterOutputStream
Shortcut PackWriter reuse selection when possible
Update org.apache.commons:commons-compress to 1.28.0
SmartHttpFetchConnection: suppress errors on close()
Mark Git(Repository repo, boolean closeRepo) public
Don't use Yoda style conditions to improve readability
Change-Id: Ibcda7d4a3ea49bbd502195ee3cd5c2172acb3442
diff --git a/Documentation/config-options.md b/Documentation/config-options.md
index 4dde8f8..4c74855 100644
--- a/Documentation/config-options.md
+++ b/Documentation/config-options.md
@@ -131,6 +131,7 @@
| `pack.searchForReuseTimeout` | | ⃞ | Search for reuse phase timeout. Expressed as a `Duration`, i.e.: `50sec`. |
| `pack.singlePack` | `false` | ⃞ | Whether all of `refs/*` should be packed in a single pack. |
| `pack.threads` | `0` (auto-detect number of processors) | ✅ | Number of threads to use for delta compression. |
+| `pack.useObjectSizeIndex` | `false` | ⃞ | Whether to use the object size index when available. |
| `pack.waitPreventRacyPack` | `false` | ⃞ | Whether we wait before opening a newly written pack to prevent its lastModified timestamp could be racy. |
| `pack.window` | `10` | ✅ | Number of objects to try when looking for a delta base per thread searching for deltas. |
| `pack.windowMemory` | `0` (unlimited) | ✅ | Maximum number of bytes to put into the delta search window. |
diff --git a/WORKSPACE b/WORKSPACE
index 51340cf..ba37f3b 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -102,18 +102,18 @@
sha1 = "51cf043c87253c9f58b539c9f7e44c8894223850",
)
-SSHD_VERS = "2.15.0"
+SSHD_VERS = "2.16.0"
maven_jar(
name = "sshd-osgi",
artifact = "org.apache.sshd:sshd-osgi:" + SSHD_VERS,
- sha1 = "aa76898fe47eab7da0878dd60e6f3be5631e076c",
+ sha1 = "87cab2aaa6e06c5d48d746e90f0b3635f8c06419",
)
maven_jar(
name = "sshd-sftp",
artifact = "org.apache.sshd:sshd-sftp:" + SSHD_VERS,
- sha1 = "2e226055ed060c64ed76256a9c45de6d0109eef8",
+ sha1 = "09d9e7024535fb4a3f74367ba7e0a2f5093af638",
)
JNA_VERS = "5.17.0"
@@ -162,8 +162,8 @@
maven_jar(
name = "commons-compress",
- artifact = "org.apache.commons:commons-compress:1.27.1",
- sha1 = "a19151084758e2fbb6b41eddaa88e7b8ff4e6599",
+ artifact = "org.apache.commons:commons-compress:1.28.0",
+ sha1 = "e482f2c7a88dac3c497e96aa420b6a769f59c8d7",
)
maven_jar(
@@ -204,28 +204,28 @@
maven_jar(
name = "mockito",
- artifact = "org.mockito:mockito-core:5.18.0",
- sha1 = "ab47dbbf954ffa2501f29000600742098617272d",
+ artifact = "org.mockito:mockito-core:5.19.0",
+ sha1 = "82b320935809e3c8ff92c2007dae5dff88d76f32",
)
maven_jar(
name = "assertj-core",
- artifact = "org.assertj:assertj-core:3.27.3",
- sha1 = "31f5d58a202bd5df4993fb10fa2cffd610c20d6f",
+ artifact = "org.assertj:assertj-core:3.27.4",
+ sha1 = "65e62575f7e422df6d290dc1cb15f3c97108b2b1",
)
-BYTE_BUDDY_VERSION = "1.17.6"
+BYTE_BUDDY_VERSION = "1.17.7"
maven_jar(
name = "bytebuddy",
artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
- sha1 = "8c70cbc6950b2ae5291a98d5003e06406d633803",
+ sha1 = "3856bfab61beb23e099a0d6629f2ba8de4b98ace",
)
maven_jar(
name = "bytebuddy-agent",
artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
- sha1 = "17b32fd9f57deef02842f7f05abc4ad8127fe34e",
+ sha1 = "fbf3d6d649ed37fc9e9c59480a05be0a26e3c2da",
)
maven_jar(
@@ -240,66 +240,66 @@
sha1 = "853ce06c11316b33a8eae5e9095da096a9528b8f",
)
-JETTY_VER = "12.0.23"
+JETTY_VER = "12.1.0"
maven_jar(
name = "jetty-servlet",
artifact = "org.eclipse.jetty.ee8:jetty-ee8-servlet:" + JETTY_VER,
- sha1 = "87eb6b1fc7c6f6f130984288ce0ba311c7ebc48b",
+ sha1 = "881b69b15540215aace32ab7c985abb6e4fe0c25",
)
maven_jar(
name = "jetty-nested",
artifact = "org.eclipse.jetty.ee8:jetty-ee8-nested:" + JETTY_VER,
- sha1 = "88a49929c83964263ce1350f7ed414abfda6a936",
+ sha1 = "8118cdcdf9cdf163584d47e136e1cee17b547985",
)
maven_jar(
name = "jetty-security",
artifact = "org.eclipse.jetty:jetty-security:" + JETTY_VER,
- sha1 = "c6e862c78ce45dca1374d157e92eedc4450aa141",
+ sha1 = "5fb2a02cc342fd132e5a358ecbb4479aabf58a3a",
)
maven_jar(
name = "jetty-ee8-security",
artifact = "org.eclipse.jetty.ee8:jetty-ee8-security:" + JETTY_VER,
- sha1 = "0f7d8c859095af69cb350b72659c5e0efddc80e0",
+ sha1 = "d25c84218ef00b7e54f537acdee3fda8f20be975",
)
maven_jar(
name = "jetty-server",
artifact = "org.eclipse.jetty:jetty-server:" + JETTY_VER,
- sha1 = "c8618ac7741fd278dba2ff77c3cf5229e2235356",
+ sha1 = "a53a5d0d03aaeab03908ff854cdd5e9ee256efca",
)
maven_jar(
name = "jetty-session",
artifact = "org.eclipse.jetty:jetty-session:" + JETTY_VER,
- sha1 = "a8fb8b2d7c85a6d7d7fc317cb8c7ecd3b31e5e27",
+ sha1 = "be1be354522861b72fdaade01f798ad7f6ffbac4",
)
maven_jar(
name = "jetty-http",
artifact = "org.eclipse.jetty:jetty-http:" + JETTY_VER,
- sha1 = "d4d3aa4670df0ec8a9b3abe15e14bf340f7e044e",
+ sha1 = "d74935bc8eb25780453dfd0a2e93c2729b566e79",
)
maven_jar(
name = "jetty-io",
artifact = "org.eclipse.jetty:jetty-io:" + JETTY_VER,
- sha1 = "a9175176e1ace74311f91d9a5f491efc387b4e90",
+ sha1 = "611910afde7e9a2cfda3cad1ec1466cdba55e444",
)
maven_jar(
name = "jetty-util",
artifact = "org.eclipse.jetty:jetty-util:" + JETTY_VER,
- sha1 = "aa47d314a3af553d9797ec0a89ab60c0b069fea2",
+ sha1 = "e0d96b47d0289006941757352c6fe7e5d9370c3b",
)
maven_jar(
name = "jetty-util-ajax",
artifact = "org.eclipse.jetty:jetty-util-ajax:" + JETTY_VER,
- sha1 = "bb9da9974fcb8029ba3538e35ca9efbfe4e19fa8",
+ sha1 = "26c44a954086af8518fcb311c94c5703f1d3093b",
)
BOUNCYCASTLE_VER = "1.81"
diff --git a/org.eclipse.jgit.http.server/.settings/.api_filters b/org.eclipse.jgit.http.server/.settings/.api_filters
index 3a22bef..4675956 100644
--- a/org.eclipse.jgit.http.server/.settings/.api_filters
+++ b/org.eclipse.jgit.http.server/.settings/.api_filters
@@ -14,6 +14,13 @@
<message_argument value="hasChunkedEncodingRequestBug(int[], HttpServletRequest)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="hasChunkedEncodingRequestBug(int[], HttpServletRequest)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/GitFilter.java" type="org.eclipse.jgit.http.server.GitFilter">
<filter id="337682486">
@@ -54,6 +61,20 @@
<message_argument value="addUploadPackFilter(Filter)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="addReceivePackFilter(Filter)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="addUploadPackFilter(Filter)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/GitServlet.java" type="org.eclipse.jgit.http.server.GitServlet">
<filter id="337682486">
@@ -94,6 +115,20 @@
<message_argument value="addUploadPackFilter(Filter)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="addReceivePackFilter(Filter)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="addUploadPackFilter(Filter)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/GitSmartHttpTools.java" type="org.eclipse.jgit.http.server.GitSmartHttpTools">
<filter id="338792546">
@@ -187,6 +222,55 @@
<message_argument value="sendError(HttpServletRequest, HttpServletResponse, int, String)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="getResponseContentType(HttpServletRequest)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="isGitClient(HttpServletRequest)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="isInfoRefs(HttpServletRequest)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="isReceivePack(HttpServletRequest)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="isUploadPack(HttpServletRequest)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="sendError(HttpServletRequest, HttpServletResponse, int)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="sendError(HttpServletRequest, HttpServletResponse, int, String)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java" type="org.eclipse.jgit.http.server.ReceivePackErrorHandler">
<filter id="403804204">
@@ -208,6 +292,13 @@
<message_argument value="receive(HttpServletRequest, HttpServletResponse, ReceivePackErrorHandler.ReceivePackRunnable)"/>
</message_arguments>
</filter>
+ <filter id="1209008130">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="receive(HttpServletRequest, HttpServletResponse, ReceivePackErrorHandler.ReceivePackRunnable)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/RepositoryFilter.java" type="org.eclipse.jgit.http.server.RepositoryFilter">
<filter id="337682486">
@@ -295,6 +386,41 @@
<message_argument value="sendPlainText(String, HttpServletRequest, HttpServletResponse)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="consumeRequestBody(HttpServletRequest)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="getInputStream(HttpServletRequest)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="getRepository(ServletRequest)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="send(byte[], HttpServletRequest, HttpServletResponse)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="sendPlainText(String, HttpServletRequest, HttpServletResponse)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java" type="org.eclipse.jgit.http.server.UploadPackErrorHandler">
<filter id="403804204">
@@ -316,6 +442,13 @@
<message_argument value="upload(HttpServletRequest, HttpServletResponse, UploadPackErrorHandler.UploadPackRunnable)"/>
</message_arguments>
</filter>
+ <filter id="1209008130">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="upload(HttpServletRequest, HttpServletResponse, UploadPackErrorHandler.UploadPackRunnable)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/glue/ErrorServlet.java" type="org.eclipse.jgit.http.server.glue.ErrorServlet">
<filter id="337682486">
@@ -440,6 +573,20 @@
<message_argument value="with(HttpServlet)"/>
</message_arguments>
</filter>
+ <filter id="1209008130">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="through(Filter)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1209008130">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="with(HttpServlet)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/glue/WrappedRequest.java" type="org.eclipse.jgit.http.server.glue.WrappedRequest">
<filter id="337682486">
@@ -466,6 +613,13 @@
<message_argument value="WrappedRequest(HttpServletRequest, String, String)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="WrappedRequest(HttpServletRequest, String, String)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/resolver/AsIsFileService.java" type="org.eclipse.jgit.http.server.resolver.AsIsFileService">
<filter id="338792546">
@@ -481,6 +635,13 @@
<message_argument value="access(HttpServletRequest, Repository)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="access(HttpServletRequest, Repository)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java" type="org.eclipse.jgit.http.server.resolver.DefaultReceivePackFactory">
<filter id="338792546">
@@ -496,6 +657,13 @@
<message_argument value="create(HttpServletRequest, Repository)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="create(HttpServletRequest, Repository)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/http/server/resolver/DefaultUploadPackFactory.java" type="org.eclipse.jgit.http.server.resolver.DefaultUploadPackFactory">
<filter id="338792546">
@@ -511,5 +679,12 @@
<message_argument value="create(HttpServletRequest, Repository)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="create(HttpServletRequest, Repository)"/>
+ </message_arguments>
+ </filter>
</resource>
</component>
diff --git a/org.eclipse.jgit.junit.http/.settings/.api_filters b/org.eclipse.jgit.junit.http/.settings/.api_filters
index e756a79..f7c1069 100644
--- a/org.eclipse.jgit.junit.http/.settings/.api_filters
+++ b/org.eclipse.jgit.junit.http/.settings/.api_filters
@@ -27,6 +27,20 @@
<message_argument value="authBasic(ServletContextHandler, String[])"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="addContext(String)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="authBasic(ServletContextHandler, String[])"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/junit/http/HttpTestCase.java" type="org.eclipse.jgit.junit.http.HttpTestCase">
<filter id="338792546">
@@ -42,6 +56,13 @@
<message_argument value="toURIish(ServletContextHandler, String)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="toURIish(ServletContextHandler, String)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/junit/http/MockServletConfig.java" type="org.eclipse.jgit.junit.http.MockServletConfig">
<filter id="338792546">
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
index 81d381c..2d2362b 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
@@ -9,31 +9,31 @@
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Import-Package: org.apache.sshd.common;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.config.keys;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.file.virtualfs;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.helpers;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.io;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.kex;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.keyprovider;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.session;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.signature;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.buffer;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.logging;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.security;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.threads;version="[2.15.0,2.16.0)",
- org.apache.sshd.core;version="[2.15.0,2.16.0)",
- org.apache.sshd.server;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.auth;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.auth.gss;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.auth.keyboard;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.auth.password;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.command;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.session;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.shell;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.subsystem;version="[2.15.0,2.16.0)",
- org.apache.sshd.sftp;version="[2.15.0,2.16.0)",
- org.apache.sshd.sftp.server;version="[2.15.0,2.16.0)",
+Import-Package: org.apache.sshd.common;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.config.keys;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.file.virtualfs;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.helpers;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.io;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.kex;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.keyprovider;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.session;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.signature;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.buffer;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.logging;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.security;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.threads;version="[2.16.0,2.17.0)",
+ org.apache.sshd.core;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.auth;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.auth.gss;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.auth.keyboard;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.auth.password;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.command;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.session;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.shell;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.subsystem;version="[2.16.0,2.17.0)",
+ org.apache.sshd.sftp;version="[2.16.0,2.17.0)",
+ org.apache.sshd.sftp.server;version="[2.16.0,2.17.0)",
org.eclipse.jgit.annotations;version="[7.4.0,7.5.0)",
org.eclipse.jgit.api;version="[7.4.0,7.5.0)",
org.eclipse.jgit.api.errors;version="[7.4.0,7.5.0)",
diff --git a/org.eclipse.jgit.lfs.server/.settings/.api_filters b/org.eclipse.jgit.lfs.server/.settings/.api_filters
index 46106ee..2a81240 100644
--- a/org.eclipse.jgit.lfs.server/.settings/.api_filters
+++ b/org.eclipse.jgit.lfs.server/.settings/.api_filters
@@ -69,6 +69,20 @@
<message_argument value="sendError(HttpServletResponse, int, String)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="getObjectToTransfer(HttpServletRequest, HttpServletResponse)"/>
+ </message_arguments>
+ </filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="sendError(HttpServletResponse, int, String)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/lfs/server/fs/ObjectDownloadListener.java" type="org.eclipse.jgit.lfs.server.fs.ObjectDownloadListener">
<filter id="337682486">
@@ -90,6 +104,13 @@
<message_argument value="ObjectDownloadListener(FileLfsRepository, AsyncContext, HttpServletResponse, AnyLongObjectId)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="ObjectDownloadListener(FileLfsRepository, AsyncContext, HttpServletResponse, AnyLongObjectId)"/>
+ </message_arguments>
+ </filter>
</resource>
<resource path="src/org/eclipse/jgit/lfs/server/fs/ObjectUploadListener.java" type="org.eclipse.jgit.lfs.server.fs.ObjectUploadListener">
<filter id="337682486">
@@ -111,5 +132,12 @@
<message_argument value="ObjectUploadListener(FileLfsRepository, AsyncContext, HttpServletRequest, HttpServletResponse, AnyLongObjectId)"/>
</message_arguments>
</filter>
+ <filter id="1141899266">
+ <message_arguments>
+ <message_argument value="7.0"/>
+ <message_argument value="7.4"/>
+ <message_argument value="ObjectUploadListener(FileLfsRepository, AsyncContext, HttpServletRequest, HttpServletResponse, AnyLongObjectId)"/>
+ </message_arguments>
+ </filter>
</resource>
</component>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
index 79cd1ba..fc3a907 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
@@ -54,26 +54,4 @@
install-size="0"
version="0.0.0"
unpack="false"/>
-
- <plugin
- id="org.apache.commons.logging"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.apache.sshd.osgi"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.apache.sshd.sftp"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
</feature>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target
index 8f28f99..fda816e 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.32" sequenceNumber="1753881720">
+<target name="jgit-4.32" sequenceNumber="1756460383">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -61,13 +61,13 @@
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-osgi</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -77,7 +77,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>5.18.0</version>
+ <version>5.19.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -103,61 +103,61 @@
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-servlet</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-nested</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-session</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -203,13 +203,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -247,7 +247,7 @@
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>3.27.3</version>
+ <version>3.27.4</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -273,7 +273,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
- <version>1.27.1</version>
+ <version>1.28.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target
index 546e8d0..4a0ca74 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.33" sequenceNumber="1753881721">
+<target name="jgit-4.33" sequenceNumber="1756460383">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -61,13 +61,13 @@
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-osgi</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -77,7 +77,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>5.18.0</version>
+ <version>5.19.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -103,61 +103,61 @@
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-servlet</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-nested</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-session</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -203,13 +203,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -247,7 +247,7 @@
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>3.27.3</version>
+ <version>3.27.4</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -273,7 +273,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
- <version>1.27.1</version>
+ <version>1.28.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
index 394698a..e7fb7e2 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.34" sequenceNumber="1753881720">
+<target name="jgit-4.34" sequenceNumber="1756460383">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -61,13 +61,13 @@
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-osgi</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -77,7 +77,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>5.18.0</version>
+ <version>5.19.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -103,61 +103,61 @@
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-servlet</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-nested</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-session</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -203,13 +203,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -247,7 +247,7 @@
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>3.27.3</version>
+ <version>3.27.4</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -273,7 +273,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
- <version>1.27.1</version>
+ <version>1.28.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
index 2c2a0e4..337ae70 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.35" sequenceNumber="1753881720">
+<target name="jgit-4.35" sequenceNumber="1756460383">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -61,13 +61,13 @@
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-osgi</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -77,7 +77,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>5.18.0</version>
+ <version>5.19.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -103,61 +103,61 @@
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-servlet</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-nested</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-session</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -203,13 +203,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -247,7 +247,7 @@
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>3.27.3</version>
+ <version>3.27.4</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -273,7 +273,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
- <version>1.27.1</version>
+ <version>1.28.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
index 099e672..e89e43f 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.36" sequenceNumber="1753881720">
+<target name="jgit-4.36" sequenceNumber="1756460383">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -61,13 +61,13 @@
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-osgi</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -77,7 +77,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>5.18.0</version>
+ <version>5.19.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -103,61 +103,61 @@
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-servlet</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-nested</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-session</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -203,13 +203,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -247,7 +247,7 @@
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>3.27.3</version>
+ <version>3.27.4</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -273,7 +273,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
- <version>1.27.1</version>
+ <version>1.28.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
index ce15c41..d99e9e3 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.37" sequenceNumber="1753881721">
+<target name="jgit-4.37" sequenceNumber="1756460383">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -61,13 +61,13 @@
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-osgi</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
- <version>2.15.0</version>
+ <version>2.16.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -77,7 +77,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>5.18.0</version>
+ <version>5.19.0</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -103,61 +103,61 @@
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-servlet</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-nested</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-session</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
- <version>12.0.23</version>
+ <version>12.1.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -203,13 +203,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.17.6</version>
+ <version>1.17.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -247,7 +247,7 @@
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>3.27.3</version>
+ <version>3.27.4</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -273,7 +273,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
- <version>1.27.1</version>
+ <version>1.28.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
index a8d9d22..2af627f 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
@@ -15,7 +15,7 @@
dependency {
groupId = "org.apache.commons"
artifactId = "commons-compress"
- version = "1.27.1"
+ version = "1.28.0"
}
dependency {
groupId = "org.apache.commons"
@@ -56,7 +56,7 @@
dependency {
groupId = "org.assertj"
artifactId = "assertj-core"
- version = "3.27.3"
+ version = "3.27.4"
}
}
@@ -97,12 +97,12 @@
dependency {
groupId = "net.bytebuddy"
artifactId = "byte-buddy"
- version = "1.17.6"
+ version = "1.17.7"
}
dependency {
groupId = "net.bytebuddy"
artifactId = "byte-buddy-agent"
- version = "1.17.6"
+ version = "1.17.7"
}
}
@@ -154,52 +154,52 @@
dependency {
groupId = "org.eclipse.jetty.ee8"
artifactId = "jetty-ee8-servlet"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty.ee8"
artifactId = "jetty-ee8-nested"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty.ee8"
artifactId = "jetty-ee8-security"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty"
artifactId = "jetty-http"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty"
artifactId = "jetty-io"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty"
artifactId = "jetty-security"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty"
artifactId = "jetty-server"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty"
artifactId = "jetty-session"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty"
artifactId = "jetty-util"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "org.eclipse.jetty"
artifactId = "jetty-util-ajax"
- version = "12.0.23"
+ version = "12.1.0"
}
dependency {
groupId = "jakarta.servlet"
@@ -235,7 +235,7 @@
dependency {
groupId = "org.mockito"
artifactId = "mockito-core"
- version = "5.18.0"
+ version = "5.19.0"
}
}
@@ -248,12 +248,12 @@
dependency {
groupId = "org.apache.sshd"
artifactId = "sshd-osgi"
- version = "2.15.0"
+ version = "2.16.0"
}
dependency {
groupId = "org.apache.sshd"
artifactId = "sshd-sftp"
- version = "2.15.0"
+ version = "2.16.0"
}
}
diff --git a/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin b/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
index 6bf88d9..0749e7b 100644
--- a/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
+++ b/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
@@ -27,6 +27,7 @@
org.eclipse.jgit.pgm.MergeBase
org.eclipse.jgit.pgm.MergeTool
org.eclipse.jgit.pgm.MultiPackIndex
+org.eclipse.jgit.pgm.ObjectSizeIndex
org.eclipse.jgit.pgm.PackRefs
org.eclipse.jgit.pgm.Push
org.eclipse.jgit.pgm.ReceivePack
diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
index e9630e9..606b29d 100644
--- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
+++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
@@ -305,6 +305,7 @@
usage_MergeBase=Find as good common ancestors as possible for a merge
usage_MergesTwoDevelopmentHistories=Merges two development histories
usage_MultiPackIndex=Operations over the multipack index
+usage_ObjectSizeIndex=Operations over the object size index
usage_PackKeptObjects=Include objects in packs locked by a ".keep" file when repacking
usage_PackRefs=Pack heads and tags for efficient repository access
usage_PreserveOldPacks=Preserve old pack files by moving them into the preserved subdirectory instead of deleting them after repacking
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ObjectSizeIndex.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ObjectSizeIndex.java
new file mode 100644
index 0000000..a40c396
--- /dev/null
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ObjectSizeIndex.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2025, Google LLC.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.pgm;
+
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_USE_OBJECT_SIZE_INDEX;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_PACK_SECTION;
+
+import java.io.IOException;
+
+import org.eclipse.jgit.internal.storage.file.ObjectDirectory;
+import org.eclipse.jgit.internal.storage.file.Pack;
+import org.eclipse.jgit.internal.storage.file.PackObjectSizeIndexHelper;
+import org.eclipse.jgit.lib.TextProgressMonitor;
+import org.kohsuke.args4j.Argument;
+
+@Command(common = true, usage = "usage_ObjectSizeIndex")
+@SuppressWarnings("nls")
+class ObjectSizeIndex extends TextBuiltin {
+ @Argument(index = 0, required = true, usage = "write, check")
+ private String command;
+
+ @Override
+ protected void run() throws IOException {
+ switch (command) {
+ case "write":
+ writeObjectSizeIndex();
+ break;
+ case "check":
+ checkObjectSizeIndex();
+ break;
+ default:
+ outw.println("Unknown command " + command);
+ }
+ }
+
+ private void writeObjectSizeIndex() throws IOException {
+ if (!(db.getObjectDatabase() instanceof ObjectDirectory)) {
+ throw die("This repository object db doesn't have packs");
+ }
+ PackObjectSizeIndexHelper.forAllPacks(
+ (ObjectDirectory) db.getObjectDatabase(),
+ new TextProgressMonitor());
+ }
+
+ private void checkObjectSizeIndex() throws IOException {
+ if (!(db.getObjectDatabase() instanceof ObjectDirectory)) {
+ throw die("This repository object db doesn't have packs");
+ }
+
+ outw.println("Object size index configuration for this repo:");
+ outw.println("\n* Writing:");
+ printInt(CONFIG_PACK_SECTION, CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX);
+
+ outw.println("\n* Reading:");
+ printBoolean(CONFIG_PACK_SECTION, CONFIG_KEY_USE_OBJECT_SIZE_INDEX);
+
+ outw.println("\n* Packs - have object size index:");
+ for (Pack pack : ((ObjectDirectory) db.getObjectDatabase())
+ .getPacks()) {
+ String name = pack.getPackName();
+ boolean hasObjectSizeIndex = pack.hasObjectSizeIndex();
+ outw.println(
+ String.format(" - %s - %b", name, hasObjectSizeIndex));
+ }
+ }
+
+ private void printInt(String section, String name) throws IOException {
+ Integer value = db.getConfig().getInt(section, name);
+ String key = String.join(".", section, name);
+ outw.println(" - " + key + " = " + value);
+ }
+
+ private void printBoolean(String section, String name) throws IOException {
+ Boolean value = db.getConfig().getBoolean(section, name);
+ String key = String.join(".", section, name);
+ outw.println(" - " + key + " = " + value);
+ }
+}
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
index 74e322f..80d3503 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
@@ -71,8 +71,9 @@ protected void run() throws Exception {
PackWriter pw = new PackWriter(new PackConfig(), reader) {
@Override
- public void select(ObjectToPack otp, StoredObjectRepresentation next) {
+ public boolean select(ObjectToPack otp, StoredObjectRepresentation next) {
otp.select(next);
+ return true;
}
};
diff --git a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
index 78dfd14..b2ed4ca 100644
--- a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
@@ -9,23 +9,23 @@
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)"
-Import-Package: org.apache.sshd.certificate;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.config.hosts;version="[2.15.0,2.16.0)",
- org.apache.sshd.common;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.auth;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.cipher;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.config.keys;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.helpers;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.kex;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.keyprovider;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.session;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.signature;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.buffer;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.net;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.security;version="[2.15.0,2.16.0)",
- org.apache.sshd.core;version="[2.15.0,2.16.0)",
- org.apache.sshd.server;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.forward;version="[2.15.0,2.16.0)",
+Import-Package: org.apache.sshd.certificate;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.config.hosts;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.auth;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.cipher;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.config.keys;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.helpers;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.kex;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.keyprovider;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.session;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.signature;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.buffer;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.net;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.security;version="[2.16.0,2.17.0)",
+ org.apache.sshd.core;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.forward;version="[2.16.0,2.17.0)",
org.eclipse.jgit.annotations;version="[7.4.0,7.5.0)",
org.eclipse.jgit.api;version="[7.4.0,7.5.0)",
org.eclipse.jgit.api.errors;version="[7.4.0,7.5.0)",
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
index e9f18d9..5153cc2 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
@@ -39,58 +39,58 @@
org.apache.sshd.client.keyverifier",
org.eclipse.jgit.transport.sshd.agent;version="7.4.0"
Import-Package: org.bouncycastle.jce.provider;version="[1.80.0,2.0.0)",
- org.apache.sshd.agent;version="[2.15.0,2.16.0)",
- org.apache.sshd.client;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.auth;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.auth.keyboard;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.auth.password;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.auth.pubkey;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.channel;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.config.hosts;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.config.keys;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.future;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.keyverifier;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.session;version="[2.15.0,2.16.0)",
- org.apache.sshd.client.session.forward;version="[2.15.0,2.16.0)",
- org.apache.sshd.common;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.auth;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.channel;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.cipher;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.compression;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.config.keys;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.config.keys.loader;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.config.keys.loader.openssh.kdf;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.config.keys.u2f;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.digest;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.forward;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.future;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.helpers;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.io;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.kex;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.kex.extension;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.kex.extension.parser;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.keyprovider;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.mac;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.random;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.session;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.session.helpers;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.signature;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.buffer;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.buffer.keys;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.closeable;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.io;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.io.der;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.io.functors;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.io.resource;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.logging;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.net;version="[2.15.0,2.16.0)",
- org.apache.sshd.common.util.security;version="[2.15.0,2.16.0)",
- org.apache.sshd.core;version="[2.15.0,2.16.0)",
- org.apache.sshd.server.auth;version="[2.15.0,2.16.0)",
- org.apache.sshd.sftp;version="[2.15.0,2.16.0)",
- org.apache.sshd.sftp.client;version="[2.15.0,2.16.0)",
- org.apache.sshd.sftp.common;version="[2.15.0,2.16.0)",
+ org.apache.sshd.agent;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.auth;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.auth.keyboard;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.auth.password;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.auth.pubkey;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.channel;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.config.hosts;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.config.keys;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.future;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.keyverifier;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.session;version="[2.16.0,2.17.0)",
+ org.apache.sshd.client.session.forward;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.auth;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.channel;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.cipher;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.compression;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.config.keys;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.config.keys.loader;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.config.keys.loader.openssh.kdf;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.config.keys.u2f;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.digest;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.forward;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.future;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.helpers;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.io;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.kex;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.kex.extension;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.kex.extension.parser;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.keyprovider;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.mac;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.random;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.session;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.session.helpers;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.signature;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.buffer;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.buffer.keys;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.closeable;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.io;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.io.der;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.io.functors;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.io.resource;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.logging;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.net;version="[2.16.0,2.17.0)",
+ org.apache.sshd.common.util.security;version="[2.16.0,2.17.0)",
+ org.apache.sshd.core;version="[2.16.0,2.17.0)",
+ org.apache.sshd.server.auth;version="[2.16.0,2.17.0)",
+ org.apache.sshd.sftp;version="[2.16.0,2.17.0)",
+ org.apache.sshd.sftp.client;version="[2.16.0,2.17.0)",
+ org.apache.sshd.sftp.common;version="[2.16.0,2.17.0)",
org.eclipse.jgit.annotations;version="[7.4.0,7.5.0)",
org.eclipse.jgit.api.errors;version="[7.4.0,7.5.0)",
org.eclipse.jgit.errors;version="[7.4.0,7.5.0)",
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/BasePackWriterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/BasePackWriterTest.java
index 92d7465..cd73c6a 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/BasePackWriterTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/BasePackWriterTest.java
@@ -19,7 +19,7 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -702,13 +702,29 @@ public void testShallowFetchShallowAncestorDepth2() throws Exception {
}
@Test
- public void testTotalPackFilesScanWhenSearchForReuseTimeoutNotSet()
+ public void testTotalPackFilesScanWhenSearchForReuseTimeoutNotSetTrue()
throws Exception {
+ totalPackFilesScanWhenSearchForReuseTimeoutNotSet(true);
+ }
+
+ @Test
+ public void testTotalPackFilesScanWhenSearchForReuseTimeoutNotSetFalse()
+ throws Exception {
+ totalPackFilesScanWhenSearchForReuseTimeoutNotSet(false);
+ }
+
+ public void totalPackFilesScanWhenSearchForReuseTimeoutNotSet(boolean doReturn) throws Exception {
FileRepository fileRepository = setUpRepoWithMultiplePackfiles();
+ int numberOfPackFiles = (int) new GC(fileRepository).getStatistics().numberOfPackFiles;
+ int objectsInMultiplePacks = 2;
+ int objectsInOnePacks = 1;
+ int expectedSelectCalls = objectsInMultiplePacks * (doReturn ? numberOfPackFiles : 1)
+ + objectsInOnePacks;
+
PackWriter mockedPackWriter = Mockito
.spy(new PackWriter(config, fileRepository.newObjectReader()));
- doNothing().when(mockedPackWriter).select(any(), any());
+ doReturn(doReturn).when(mockedPackWriter).select(any(), any());
try (FileOutputStream packOS = new FileOutputStream(
getPackFileToWrite(fileRepository, mockedPackWriter))) {
@@ -716,27 +732,37 @@ public void testTotalPackFilesScanWhenSearchForReuseTimeoutNotSet()
NullProgressMonitor.INSTANCE, packOS);
}
- long numberOfPackFiles = new GC(fileRepository)
- .getStatistics().numberOfPackFiles;
- int expectedSelectCalls =
- // Objects contained in multiple packfiles * number of packfiles
- 2 * (int) numberOfPackFiles +
- // Objects in single packfile
- 1;
verify(mockedPackWriter, times(expectedSelectCalls)).select(any(),
any());
}
@Test
- public void testTotalPackFilesScanWhenSkippingSearchForReuseTimeoutCheck()
+ public void testTotalPackFilesScanWhenSkippingSearchForReuseTimeoutCheckTrue()
throws Exception {
+ totalPackFilesScanWhenSkippingSearchForReuseTimeoutCheck(true);
+ }
+
+ @Test
+ public void testTotalPackFilesScanWhenSkippingSearchForReuseTimeoutCheckFalse()
+ throws Exception {
+ totalPackFilesScanWhenSkippingSearchForReuseTimeoutCheck(false);
+ }
+
+ public void totalPackFilesScanWhenSkippingSearchForReuseTimeoutCheck(
+ boolean doReturn) throws Exception {
FileRepository fileRepository = setUpRepoWithMultiplePackfiles();
+ int numberOfPackFiles = (int) new GC(fileRepository).getStatistics().numberOfPackFiles;
+ int objectsInMultiplePacks = 2;
+ int objectsInOnePacks = 1;
+ int expectedSelectCalls = objectsInMultiplePacks * (doReturn ? numberOfPackFiles : 1)
+ + objectsInOnePacks;
+
PackConfig packConfig = new PackConfig();
packConfig.setSearchForReuseTimeout(Duration.ofSeconds(-1));
PackWriter mockedPackWriter = Mockito.spy(
new PackWriter(packConfig, fileRepository.newObjectReader()));
- doNothing().when(mockedPackWriter).select(any(), any());
+ doReturn(doReturn).when(mockedPackWriter).select(any(), any());
try (FileOutputStream packOS = new FileOutputStream(
getPackFileToWrite(fileRepository, mockedPackWriter))) {
@@ -744,28 +770,31 @@ public void testTotalPackFilesScanWhenSkippingSearchForReuseTimeoutCheck()
NullProgressMonitor.INSTANCE, packOS);
}
- long numberOfPackFiles = new GC(fileRepository)
- .getStatistics().numberOfPackFiles;
- int expectedSelectCalls =
- // Objects contained in multiple packfiles * number of packfiles
- 2 * (int) numberOfPackFiles +
- // Objects contained in single packfile
- 1;
verify(mockedPackWriter, times(expectedSelectCalls)).select(any(),
any());
}
@Test
- public void testPartialPackFilesScanWhenDoingSearchForReuseTimeoutCheck()
+ public void partialPackFilesScanWhenDoingSearchForReuseTimeoutCheck()
throws Exception {
+ int objectsInMultiplePacks = 2;
+ int objectsInOnePacks = 1;
+ int expectedSelectCalls = objectsInMultiplePacks + objectsInOnePacks;
+ testPartialPackFilesScanWhenDoingSearchForReuseTimeoutCheck(true, expectedSelectCalls);
+ testPartialPackFilesScanWhenDoingSearchForReuseTimeoutCheck(false, expectedSelectCalls);
+ }
+
+ public void testPartialPackFilesScanWhenDoingSearchForReuseTimeoutCheck(
+ boolean doReturn, int expectedSelectCalls) throws Exception {
FileRepository fileRepository = setUpRepoWithMultiplePackfiles();
+
PackConfig packConfig = new PackConfig();
packConfig.setSearchForReuseTimeout(Duration.ofSeconds(-1));
PackWriter mockedPackWriter = Mockito.spy(
new PackWriter(packConfig, fileRepository.newObjectReader()));
mockedPackWriter.enableSearchForReuseTimeout();
- doNothing().when(mockedPackWriter).select(any(), any());
+ doReturn(doReturn).when(mockedPackWriter).select(any(), any());
try (FileOutputStream packOS = new FileOutputStream(
getPackFileToWrite(fileRepository, mockedPackWriter))) {
@@ -773,7 +802,6 @@ public void testPartialPackFilesScanWhenDoingSearchForReuseTimeoutCheck()
NullProgressMonitor.INSTANCE, packOS);
}
- int expectedSelectCalls = 3; // Objects in packfiles
verify(mockedPackWriter, times(expectedSelectCalls)).select(any(),
any());
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkSortTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkSortTest.java
index 8af6747..d27d5c7 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkSortTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkSortTest.java
@@ -128,6 +128,56 @@ public void testSort_TOPO() throws Exception {
}
@Test
+ public void testSort_TOPO_reachable() throws Exception {
+ // c1 is back dated before its parent.
+ //
+ final RevCommit a = commit();
+ final RevCommit b = commit(a);
+ final RevCommit c1 = commit(-5, b);
+ final RevCommit c2 = commit(10, b);
+ final RevCommit d = commit(c1, c2);
+
+ assertEquals("", d.getShortMessage());
+ assertEquals("", c2.getShortMessage());
+ assertEquals("", c1.getShortMessage());
+ assertEquals("", b.getShortMessage());
+ rw.sort(RevSort.TOPO);
+ markStart(d);
+ markUninteresting(b);
+ assertEquals("", d.getShortMessage());
+ assertEquals("", c2.getShortMessage());
+ assertEquals("", c1.getShortMessage());
+ assertEquals("", b.getShortMessage());
+ assertCommit(d, rw.next());
+ assertCommit(c2, rw.next());
+ assertCommit(c1, rw.next());
+ assertNull(rw.next());
+ assertEquals("", d.getShortMessage());
+ assertEquals("", c2.getShortMessage());
+ assertEquals("", c1.getShortMessage());
+ assertEquals("", b.getShortMessage());
+ }
+
+ @Test
+ public void testSort_TOPO_reachable2() throws Exception {
+ // c1 is back dated before its parent.
+ //
+ final RevCommit a = commit();
+ final RevCommit b = commit(a);
+ final RevCommit c1 = commit(-5, b);
+ final RevCommit c2 = commit(10, b);
+ final RevCommit d = commit(c1, c2);
+
+ assertEquals("", d.getShortMessage());
+ rw.sort(RevSort.TOPO);
+ markStart(d);
+ markUninteresting(d);
+ assertEquals("", d.getShortMessage());
+ assertNull(rw.next());
+ assertEquals("", d.getShortMessage());
+ }
+
+ @Test
public void testSort_TOPO_REVERSE() throws Exception {
// c1 is back dated before its parent.
//
diff --git a/org.eclipse.jgit/.settings/.api_filters b/org.eclipse.jgit/.settings/.api_filters
new file mode 100644
index 0000000..bf62ed4
--- /dev/null
+++ b/org.eclipse.jgit/.settings/.api_filters
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.jgit" version="2">
+ <resource path="src/org/eclipse/jgit/util/Iterators.java" type="org.eclipse.jgit.util.Iterators">
+ <filter id="1109393411">
+ <message_arguments>
+ <message_argument value="6.10.2"/>
+ <message_argument value="org.eclipse.jgit.util.Iterators"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
index 5bc035a..a8b866d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
@@ -201,7 +201,24 @@ public Git(Repository repo) {
this(repo, false);
}
- Git(Repository repo, boolean closeRepo) {
+ /**
+ * Construct a new {@link org.eclipse.jgit.api.Git} object which can
+ * interact with the specified git repository.
+ * <p>
+ * All command classes returned by methods of this class will always
+ * interact with this git repository.
+ * <p>
+ * If {@code closeRepo = false} the caller is responsible for closing the
+ * repository.
+ *
+ * @param repo
+ * the git repository this class is interacting with;
+ * {@code null} is not allowed.
+ * @param closeRepo
+ * whether to close the repository when this instance is closed
+ * @since 7.4
+ */
+ public Git(Repository repo, boolean closeRepo) {
this.repo = requireNonNull(repo);
this.closeRepo = closeRepo;
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
index 55539e2..45ca470 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
@@ -134,8 +134,9 @@ public Stats write(@NonNull ProgressMonitor monitor,
chunks = Collections.unmodifiableList(chunks);
long expectedSize = calculateExpectedSize(chunks);
- try (CancellableDigestOutputStream out = new CancellableDigestOutputStream(
- monitor, commitGraphStream)) {
+ try {
+ CancellableDigestOutputStream out = new CancellableDigestOutputStream(
+ monitor, commitGraphStream);
writeHeader(out, chunks.size());
writeChunkLookup(out, chunks);
writeChunks(out, chunks);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
index 97473bb..5be4148 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
@@ -949,13 +949,9 @@ void writeCommitGraph(@NonNull Set<? extends ObjectId> wants)
tmpFile = File.createTempFile("commit_", //$NON-NLS-1$
COMMIT_GRAPH.getTmpExtension(),
repo.getObjectDatabase().getInfoDirectory());
- // write the commit-graph file
- try (FileOutputStream fos = new FileOutputStream(tmpFile);
- FileChannel channel = fos.getChannel();
- OutputStream channelStream = Channels
- .newOutputStream(channel)) {
- writer.write(pm, channelStream);
- channel.force(true);
+ // write the commit-graph to temporary file
+ try (FileOutputStream fos = new FileOutputStream(tmpFile)) {
+ writer.write(pm, fos);
}
// rename the temporary file to real file
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
index dc25bfd..af1671d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
@@ -446,12 +446,12 @@ private long getObjectSizeWithoutRestoring(WindowCursor curs,
AnyObjectId id) throws IOException {
if (loose.hasCached(id)) {
long len = loose.getSize(curs, id);
- if (0 <= len) {
+ if (len >= 0) {
return len;
}
}
long len = getPackedSizeFromSelfOrAlternate(curs, id, null);
- if (0 <= len) {
+ if (len >= 0) {
return len;
}
return getLooseSizeFromSelfOrAlternate(curs, id, null);
@@ -461,14 +461,14 @@ private long getPackedSizeFromSelfOrAlternate(WindowCursor curs,
AnyObjectId id, Set<AlternateHandle.Id> skips)
throws PackMismatchException {
long len = packed.getSize(curs, id);
- if (0 <= len) {
+ if (len >= 0) {
return len;
}
skips = addMe(skips);
for (AlternateHandle alt : myAlternates()) {
if (!skips.contains(alt.getId())) {
len = alt.db.getPackedSizeFromSelfOrAlternate(curs, id, skips);
- if (0 <= len) {
+ if (len >= 0) {
return len;
}
}
@@ -479,14 +479,14 @@ private long getPackedSizeFromSelfOrAlternate(WindowCursor curs,
private long getLooseSizeFromSelfOrAlternate(WindowCursor curs,
AnyObjectId id, Set<AlternateHandle.Id> skips) throws IOException {
long len = loose.getSize(curs, id);
- if (0 <= len) {
+ if (len >= 0) {
return len;
}
skips = addMe(skips);
for (AlternateHandle alt : myAlternates()) {
if (!skips.contains(alt.getId())) {
len = alt.db.getLooseSizeFromSelfOrAlternate(curs, id, skips);
- if (0 <= len) {
+ if (len >= 0) {
return len;
}
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java
index f50c17e..544961b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java
@@ -27,6 +27,7 @@
import java.util.EnumMap;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -49,6 +50,7 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectLoader;
import org.eclipse.jgit.util.FileUtils;
+import org.eclipse.jgit.util.Iterators;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -275,12 +277,14 @@ void selectRepresentation(PackWriter packer, ObjectToPack otp,
PackList pList = packList.get();
int retries = 0;
SEARCH: for (;;) {
- for (Pack p : pList.packs) {
+ for (Pack p : pList.inReverse()) {
try {
LocalObjectRepresentation rep = p.representation(curs, otp);
p.resetTransientErrorCount();
if (rep != null) {
- packer.select(otp, rep);
+ if (!packer.select(otp, rep)) {
+ return;
+ }
packer.checkSearchForReuseTimeout();
}
} catch (SearchForReuseTimeout e) {
@@ -584,5 +588,13 @@ static final class PackList {
this.snapshot = monitor;
this.packs = packs;
}
+
+ Iterable<Pack> inReverse() {
+ return Iterators.iterable(reverseIterator());
+ }
+
+ Iterator<Pack> reverseIterator() {
+ return Iterators.reverseIterator(packs);
+ }
}
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexHelper.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexHelper.java
new file mode 100644
index 0000000..acef741
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexHelper.java
@@ -0,0 +1,92 @@
+package org.eclipse.jgit.internal.storage.file;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jgit.internal.storage.pack.PackExt;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ProgressMonitor;
+import org.eclipse.jgit.transport.PackedObjectInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A wrapper to write the object size index for existing packs (on disk)
+ */
+public class PackObjectSizeIndexHelper {
+
+ private final static Logger LOG = LoggerFactory
+ .getLogger(PackObjectSizeIndexHelper.class);
+
+ /**
+ * Add an object size index to all the packs without one in this object
+ * database.
+ *
+ * @param db
+ * object db for packs
+ * @param pm
+ * progress monitor for the object listing phase (adding size to
+ * the objects in index)
+ * @throws IOException
+ * an error reading the packs or writing the object size index
+ * file
+ */
+ public static void forAllPacks(ObjectDirectory db, ProgressMonitor pm)
+ throws IOException {
+ WindowCursor wc = (WindowCursor) db.newReader();
+ for (Pack pack : db.getPacks()) {
+ LOG.info("Checking " + pack.getPackName()); //$NON-NLS-1$
+ if (pack.hasObjectSizeIndex()) {
+ LOG.debug(" has object size index"); //$NON-NLS-1$
+ continue;
+ }
+
+ List<PackedObjectInfo> objectsInPack = getObjectsInPack(wc, pack,
+ pm);
+ LOG.debug(String.format(" index has %d objects", //$NON-NLS-1$
+ objectsInPack.size()));
+ if (objectsInPack.isEmpty()) {
+ continue;
+ }
+
+ LOG.info(" start writing object size index"); //$NON-NLS-1$
+ PackFile packFile = pack.getPackFile()
+ .create(PackExt.OBJECT_SIZE_INDEX);
+ long start = System.currentTimeMillis();
+ try (FileOutputStream out = new FileOutputStream(packFile)) {
+ PackObjectSizeIndexWriter writer = PackObjectSizeIndexWriter
+ .createWriter(out, 0);
+ writer.write(objectsInPack);
+ }
+ LOG.info(String.format(" done writing. Took %d ms", //$NON-NLS-1$
+ System.currentTimeMillis() - start));
+ }
+ }
+
+ private static List<PackedObjectInfo> getObjectsInPack(WindowCursor wc,
+ Pack pack, ProgressMonitor pm) throws IOException {
+ PackIndex idx = pack.getIndex();
+ PackReverseIndex ridx = new PackReverseIndexComputed(idx);
+ pm.beginTask("Adding size to objects in index", //$NON-NLS-1$
+ (int) idx.getObjectCount());
+ // This is much faster in offset order
+ List<PackedObjectInfo> objs = new ArrayList<>(
+ (int) idx.getObjectCount());
+ for (int i = 0; i < idx.getObjectCount(); i++) {
+ ObjectId oid = ridx.findObjectByPosition(i);
+ PackedObjectInfo poi = new PackedObjectInfo(oid);
+ long offset = idx.findOffset(oid);
+ poi.setFullSize(pack.getObjectSize(wc, offset));
+ poi.setType(pack.getObjectType(wc, offset));
+ objs.add(poi);
+ pm.update(1);
+ }
+ pm.endTask();
+ return objs;
+ }
+
+ private PackObjectSizeIndexHelper() {
+ }
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java
index 15c125c..9c60d36 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java
@@ -522,7 +522,8 @@ else if (eb < 4)
bs = tableSize / 2;
}
removalBlockSize = bs;
- numRemovalBlocks = tableSize / removalBlockSize;
+ numRemovalBlocks = (int) Math
+ .ceil((double) tableSize / removalBlockSize);
blockBeingRemoved = numRemovalBlocks - 1;
if (maxFiles < 1)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
index 6612cfc..33459ef 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
@@ -36,6 +36,7 @@
import org.eclipse.jgit.lib.BitmapIndex;
import org.eclipse.jgit.lib.BitmapIndex.BitmapBuilder;
import org.eclipse.jgit.internal.storage.commitgraph.CommitGraph;
+import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.InflaterCache;
import org.eclipse.jgit.lib.ObjectId;
@@ -49,6 +50,8 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
/** Temporary buffer large enough for at least one raw object id. */
final byte[] tempId = new byte[Constants.OBJECT_ID_LENGTH];
+ private final boolean useObjectSizeIndex;
+
private Inflater inf;
private ByteWindow window;
@@ -66,6 +69,10 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
this.db = db;
this.createdFromInserter = null;
this.streamFileThreshold = WindowCache.getStreamFileThreshold();
+ this.useObjectSizeIndex = db == null ? false
+ : db.getConfig().getBoolean(
+ ConfigConstants.CONFIG_PACK_SECTION,
+ ConfigConstants.CONFIG_KEY_USE_OBJECT_SIZE_INDEX, false);
}
WindowCursor(FileObjectDatabase db,
@@ -73,6 +80,10 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
this.db = db;
this.createdFromInserter = createdFromInserter;
this.streamFileThreshold = WindowCache.getStreamFileThreshold();
+ this.useObjectSizeIndex = db == null ? false
+ : db.getConfig().getBoolean(
+ ConfigConstants.CONFIG_PACK_SECTION,
+ ConfigConstants.CONFIG_KEY_USE_OBJECT_SIZE_INDEX, false);
}
DeltaBaseCache getDeltaBaseCache() {
@@ -177,9 +188,11 @@ public long getObjectSize(AnyObjectId objectId, int typeHint)
return getObjectSizeStorage(objectId, typeHint);
}
- long sz = pack.getIndexedObjectSize(objectId);
- if (sz >= 0) {
- return sz;
+ if (useObjectSizeIndex && pack.hasObjectSizeIndex()) {
+ long sz = pack.getIndexedObjectSize(objectId);
+ if (sz >= 0) {
+ return sz;
+ }
}
return getObjectSizeStorage(objectId, typeHint);
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java
index ce86eab..9ad2f43 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java
@@ -15,6 +15,7 @@
import java.io.IOException;
import java.io.InterruptedIOException;
+import java.io.FilterOutputStream;
import java.io.OutputStream;
import java.security.MessageDigest;
@@ -22,15 +23,13 @@
* An OutputStream that keeps a digest and checks every N bytes for
* cancellation.
*/
-public class CancellableDigestOutputStream extends OutputStream {
+public class CancellableDigestOutputStream extends FilterOutputStream {
/** The OutputStream checks every this value for cancellation **/
public static final int BYTES_TO_WRITE_BEFORE_CANCEL_CHECK = 128 * 1024;
private final ProgressMonitor writeMonitor;
- private final OutputStream out;
-
private final MessageDigest md = Constants.newMessageDigest();
private long count;
@@ -47,8 +46,8 @@ public class CancellableDigestOutputStream extends OutputStream {
*/
public CancellableDigestOutputStream(ProgressMonitor writeMonitor,
OutputStream out) {
+ super(out);
this.writeMonitor = writeMonitor;
- this.out = out;
this.checkCancelAt = BYTES_TO_WRITE_BEFORE_CANCEL_CHECK;
}
@@ -113,9 +112,4 @@ public final void write(byte[] b, int off, int len) throws IOException {
len -= n;
}
}
-
- @Override
- public void flush() throws IOException {
- out.flush();
- }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
index f025d4e..27fb814 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
@@ -2394,17 +2394,46 @@ private boolean exclude(AnyObjectId objectId) {
* this method once for each representation available for an object, to
* allow the writer to find the most suitable one for the output.
*
+ * This method tries to take a very simple approach to avoiding delta chains
+ * during object reuse by selecting from the oldest pack that contains them.
+ * This helps select many objects from the same pack which helps make good
+ * use of any WindowCache caching, and it helps prevent cycles because a
+ * pack must not have a cycle in the delta chain. If both objects A and B
+ * are chosen out of the same source pack then there cannot be an A->B->A
+ * cycle.
+ *
+ * The oldest pack is also the most likely to have the smallest deltas. It
+ * generally is the biggest pack in the system and probably came from the
+ * clone (or last GC) of this repository, where all objects were previously
+ * considered and packed tightly together. If an object appears again (for
+ * example due to a revert and a push into this repository) the newer copy
+ * won't be nearly as small as the older delta version of it, even if the
+ * newer one is also itself a delta.
+ *
+ * Thus this method is optimized for being called in an order that presumes
+ * that earlier representations are better than later ones, and it expects
+ * representations from older pack files to be tested first, and it will
+ * shortcut any searching once it is satisfied with the selected
+ * representation. Perhaps ideally representation testing ordering should be
+ * based on packfile object count instead of age since file age can be
+ * altered, and be deceiving for other reasons. Perhaps the presence of a
+ * bitmap file for a pack file should prioritize it to be tested even
+ * earlier than object count?
+ *
* @param otp
* the object being packed.
* @param next
* the next available representation from the repository.
+ * @return whether the search should continue in the hopes of finding a
+ * better representation
*/
- public void select(ObjectToPack otp, StoredObjectRepresentation next) {
+ public boolean select(ObjectToPack otp, StoredObjectRepresentation next) {
int nFmt = next.getFormat();
if (!cachedPacks.isEmpty()) {
- if (otp.isEdge())
- return;
+ if (otp.isEdge()) {
+ return false;
+ }
if (nFmt == PACK_WHOLE || nFmt == PACK_DELTA) {
for (CachedPack pack : cachedPacks) {
if (pack.hasObject(otp, next)) {
@@ -2412,7 +2441,7 @@ public void select(ObjectToPack otp, StoredObjectRepresentation next) {
otp.clearDeltaBase();
otp.clearReuseAsIs();
pruneCurrentObjectList = true;
- return;
+ return false;
}
}
}
@@ -2422,23 +2451,22 @@ public void select(ObjectToPack otp, StoredObjectRepresentation next) {
ObjectId baseId = next.getDeltaBase();
ObjectToPack ptr = objectsMap.get(baseId);
if (ptr != null && !ptr.isEdge()) {
- otp.setDeltaBase(ptr);
- otp.setReuseAsIs();
- } else if (thin && have(ptr, baseId)) {
- otp.setDeltaBase(baseId);
- otp.setReuseAsIs();
- } else {
- otp.clearDeltaBase();
- otp.clearReuseAsIs();
+ return useDelta(otp, next, ptr);
}
+ if (thin && have(ptr, baseId)) {
+ return useDelta(otp, next, baseId);
+ }
+ otp.clearDeltaBase();
+ otp.clearReuseAsIs();
} else if (nFmt == PACK_WHOLE && config.isReuseObjects()) {
int nWeight = next.getWeight();
if (otp.isReuseAsIs() && !otp.isDeltaRepresentation()) {
// We've chosen another PACK_WHOLE format for this object,
// choose the one that has the smaller compressed size.
//
- if (otp.getWeight() <= nWeight)
- return;
+ if (otp.getWeight() < nWeight) {
+ return true;
+ }
}
otp.clearDeltaBase();
otp.setReuseAsIs();
@@ -2450,6 +2478,15 @@ public void select(ObjectToPack otp, StoredObjectRepresentation next) {
otp.setDeltaAttempted(reuseDeltas && next.wasDeltaAttempted());
otp.select(next);
+ return true;
+ }
+
+ private boolean useDelta(ObjectToPack otp, StoredObjectRepresentation rep, ObjectId base) {
+ otp.setDeltaBase(base);
+ otp.setReuseAsIs();
+ otp.setDeltaAttempted(reuseDeltas && rep.wasDeltaAttempted());
+ otp.select(rep);
+ return false;
}
private final boolean have(ObjectToPack ptr, AnyObjectId objectId) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/PendingGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/PendingGenerator.java
index a49f787..926e45d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/PendingGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/PendingGenerator.java
@@ -100,11 +100,13 @@ RevCommit next() throws MissingObjectException,
}
final boolean produce;
- if ((c.flags & UNINTERESTING) != 0)
+ final boolean hadBody = c.getRawBuffer() != null;
+ if ((c.flags & UNINTERESTING) != 0) {
produce = false;
- else {
- if (filter.requiresCommitBody())
+ } else {
+ if (filter.requiresCommitBody() && !hadBody) {
c.parseBody(walker);
+ }
produce = filter.include(walker, c);
}
@@ -140,15 +142,17 @@ RevCommit next() throws MissingObjectException,
} else {
overScan = OVER_SCAN;
}
- if (canDispose)
+ if (canDispose && !hadBody) {
c.disposeBody();
+ }
continue;
}
- if (produce)
+ if (produce) {
return last = c;
- else if (canDispose)
+ } else if (canDispose && !hadBody) {
c.disposeBody();
+ }
}
} catch (StopWalkException swe) {
pending.clear();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
index a65d0b7..c9a48bf 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
@@ -106,6 +106,7 @@
import org.eclipse.jgit.util.SystemReader;
import org.eclipse.jgit.util.TemporaryBuffer;
import org.eclipse.jgit.util.io.DisabledOutputStream;
+import org.eclipse.jgit.util.io.SilentInputStream;
import org.eclipse.jgit.util.io.UnionInputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1558,7 +1559,8 @@ protected void doFetch(ProgressMonitor monitor, Collection<Ref> want,
throws TransportException {
svc = new MultiRequestService(SVC_UPLOAD_PACK,
getProtocolVersion());
- try (InputStream svcIn = svc.getInputStream();
+ try (InputStream svcIn = new SilentInputStream(
+ svc.getInputStream());
OutputStream svcOut = svc.getOutputStream()) {
init(svcIn, svcOut);
super.doFetch(monitor, want, have, outputStream);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/Iterators.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/Iterators.java
new file mode 100644
index 0000000..93a2847
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/Iterators.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2025, NVIDIA Corporation.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.util;
+
+import java.util.Iterator;
+
+/**
+ * Utility class for Iterators
+ *
+ * @since 6.10.2
+ */
+public class Iterators {
+ /**
+ * Create an iterator which traverses an array in reverse.
+ *
+ * @param array T[]
+ * @return Iterator<T>
+ */
+ @SuppressWarnings("AvoidObjectArrays")
+ public static <T> Iterator<T> reverseIterator(T[] array) {
+ return new Iterator<>() {
+ int index = array.length;
+
+ @Override
+ public boolean hasNext() {
+ return index > 0;
+ }
+
+ @Override
+ public T next() {
+ return array[--index];
+ }
+ };
+ }
+
+ /**
+ * Make an iterable for easy use in modern for loops.
+ *
+ * @param iterator Iterator<T>
+ * @return Iterable<T>
+ */
+ public static <T> Iterable<T> iterable(Iterator<T> iterator) {
+ return new Iterable<>() {
+ @Override
+ public Iterator<T> iterator() {
+ return iterator;
+ }
+ };
+ }
+
+ private Iterators() {
+ }
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/SilentInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/SilentInputStream.java
new file mode 100644
index 0000000..8c2c61a
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/SilentInputStream.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2025 Thomas Wolf <twolf@apache.org> and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.util.io;
+
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * An {@link InputStream} that swallows exceptions on {@link #close()}.
+ *
+ * @since 7.4
+ */
+public class SilentInputStream extends FilterInputStream {
+
+ private static final Logger LOG = LoggerFactory
+ .getLogger(SilentInputStream.class);
+
+ /**
+ * Wraps an existing {@link InputStream}.
+ *
+ * @param in
+ * {@link InputStream} to wrap
+ */
+ public SilentInputStream(InputStream in) {
+ super(in);
+ }
+
+ @Override
+ public void close() throws IOException {
+ try {
+ super.close();
+ } catch (IOException e) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Exception ignored while closing input stream", e); //$NON-NLS-1$
+ }
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index e7f97e0..4f58388 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,17 +120,17 @@
<jgit-last-release-version>7.3.0.202506031305-r</jgit-last-release-version>
<ant-version>1.10.15</ant-version>
- <apache-sshd-version>2.15.0</apache-sshd-version>
+ <apache-sshd-version>2.16.0</apache-sshd-version>
<jsch-version>0.1.55</jsch-version>
<jzlib-version>1.1.3</jzlib-version>
<javaewah-version>1.2.3</javaewah-version>
<junit-version>4.13.2</junit-version>
<test-fork-count>1C</test-fork-count>
<args4j-version>2.37</args4j-version>
- <commons-compress-version>1.27.1</commons-compress-version>
+ <commons-compress-version>1.28.0</commons-compress-version>
<osgi-core-version>6.0.0</osgi-core-version>
<servlet-api-version>4.0.4</servlet-api-version>
- <jetty-version>12.0.23</jetty-version>
+ <jetty-version>12.1.0</jetty-version>
<japicmp-version>0.23.1</japicmp-version>
<httpclient-version>4.5.14</httpclient-version>
<httpcore-version>4.4.16</httpcore-version>
@@ -146,9 +146,9 @@
<maven-compiler-plugin-version>3.14.0</maven-compiler-plugin-version>
<plexus-compiler-version>2.13.0</plexus-compiler-version>
<hamcrest-version>2.2</hamcrest-version>
- <assertj-version>3.27.3</assertj-version>
+ <assertj-version>3.27.4</assertj-version>
<jna-version>5.17.0</jna-version>
- <byte-buddy-version>1.17.6</byte-buddy-version>
+ <byte-buddy-version>1.17.7</byte-buddy-version>
<!-- Properties to enable jacoco code coverage analysis -->
<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
@@ -1020,7 +1020,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>5.18.0</version>
+ <version>5.19.0</version>
</dependency>
<dependency>