Merge branch 'master' into servlet-4 * master: Prepare 7.7.0-SNAPSHOT builds JGit v7.7.0.202605262231-rc1 ReceivePack: Add option to retain PackParser's object IDs ReceivePack: reject creation of one level refs such as refs/main Document JGit receive command size options Document receive.autogc configuration option Introduce fetch.autogc to disable concurrent GC upon fetches Implement SystemReader.isAndroid() Prepare 7.7.0-SNAPSHOT builds JGit v7.7.0.202605201743-m3 TemporaryBuffer.LocalFile: use Files.newInputStream() Update docs for logAllRefUpdates DfsPackDescription: New method getTotalFileSize() MidxPackList: Add a builder to edit the pack list Update slf4j to 2.0.18 Update Jetty to 12.1.9 Update commons-io to 2.22.0 Update commons-codec to 1.22.0 Update gson to 2.14.0 Revert "DfsPackCompactor: Accept DfsPackDescription as input" Pack/PackMidx: mark as @Nullable methods that deserve it PackMidx: Style fixes like unused throws Update urllib3 to at least 2.7.0 to fix CVE-2026-44432 Update python used to deploy release to maven central to 3.14 Bazel: Bump to 9.0.1 Change-Id: I104ca00c1d3e18b51e7bacc1c67dffde3a1426f8
diff --git a/.bazelversion b/.bazelversion index acd405b..37ad5c8 100644 --- a/.bazelversion +++ b/.bazelversion
@@ -1 +1 @@ -8.6.0 +9.0.1
diff --git a/Documentation/config-options.md b/Documentation/config-options.md index abf7864..0ba67c7 100644 --- a/Documentation/config-options.md +++ b/Documentation/config-options.md
@@ -41,7 +41,7 @@ | `core.fileMode` | Auto detects if file modes are supported | ✅ | Tells Git if the executable bit of files in the working tree is to be honored. | | `core.hideDotFiles` | `dotGitOnly` | ✅ | Windows only. If `true`, mark newly-created directories and files whose name starts with a dot as hidden. If `dotGitOnly`, only the `.git/` directory is hidden, but no other files starting with a dot. | | `core.hooksPath` | `$GIT_DIR/hooks` | ✅ | Path to look for hooks. | -| `core.logAllRefUpdates` | `true` in a repository with working tree, `false` in bare repository | ✅ | Enable the reflog. | +| `core.logAllRefUpdates` | `true` in a repository with working tree, `false` in bare repository | ✅ | Enable the reflog. `true` to log updates only for `refs/heads/**`, `refs/remotes/**`, `refs/notes/**`, and `HEAD`, `always` to log for all refs, `false` to disable reflog updates | | `core.packedGitLimit` | `10 MiB` | ✅ | Maximum number of bytes to cache in memory from pack files. | | `core.packedGitMmap` | `false` | ✅ | Whether to use Java NIO virtual memory mapping for JGit buffer cache. When set to `true` enables use of Java NIO virtual memory mapping for cache windows, `false` reads entire window into a `byte[]` with standard read calls. `true` is experimental and may cause instabilities and crashes since Java doesn't support explicit unmapping of file regions mapped to virtual memory. | | `core.packedGitOpenFiles` | `128` | ⃞ | Maximum number of streams to open at a time. Open packs count against the process limits. | @@ -66,9 +66,10 @@ ## __fetch__ options -| option | default | git option | description | -|---------|---------|------------|-------------| +| option | default | git option | description | +|---------------------------|---------|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| | `fetch.useNegotiationTip` | `false` | ✅ | When enabled it restricts the client negotiation on unrelated branches i.e. only send haves for the refs that the client is interested in fetching. | +| `fetch.autogc` | `true` | ⃞ | Perform an automatic garbage collection after the fetch operation has been completed. | ## __gc__ options @@ -137,6 +138,16 @@ | `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. | + +## __receive__ options + +| option | default | git option | description | +|------------------|---------|------------|--------------------------------------------------------------------------------------------| +| `receive.autogc` | `true` | ✅ | Perform an automatic garbage collection after a receive-pack operation has been completed. | +| `receive.maxCommandBytes` | `3 MiB` | ⃞ | Maximum number of bytes to read from the receive-pack command block before the pack data. If set to `0`, there is no limit. | +| `receive.maxCommandDiscardBytes` | `-1` | ⃞ | Maximum number of command-block bytes to discard after `receive.maxCommandBytes` is exceeded, so JGit can report a side-band error before disconnecting. If set to `0`, there is no limit. If set to `-1`, JGit uses the larger of `3 * receive.maxCommandBytes` and `3 MiB`. | + + ## reftable options | option | default | git option | description |
diff --git a/MODULE.bazel b/MODULE.bazel index be8f56e..d04b540 100644 --- a/MODULE.bazel +++ b/MODULE.bazel
@@ -1,9 +1,11 @@ module(name = "jgit") -bazel_dep(name = "rules_go", version = "0.51.0-rc2") -bazel_dep(name = "bazel_features", version = "1.39.0") -bazel_dep(name = "rules_java", version = "8.16.1") +bazel_dep(name = "bazel_features", version = "1.42.1") +bazel_dep(name = "rules_android", version = "0.7.1") +bazel_dep(name = "rules_go", version = "0.60.0") +bazel_dep(name = "rules_java", version = "9.3.0") bazel_dep(name = "rules_jvm_external", version = "6.10") + bazel_dep(name = "rbe_autoconfig") git_override( module_name = "rbe_autoconfig", @@ -27,13 +29,13 @@ BYTE_BUDDY_VERSION = "1.18.8" -JETTY_VERSION = "12.1.8" +JETTY_VERSION = "12.1.9" JMH_VERSION = "1.37" JNA_VERSION = "5.18.1" -SLF4J_VERSION = "2.0.17" +SLF4J_VERSION = "2.0.18" SSHD_VERSION = "2.17.1" @@ -42,13 +44,13 @@ name = "external_deps", artifacts = [ "args4j:args4j:2.37", - "com.google.code.gson:gson:2.13.2", + "com.google.code.gson:gson:2.14.0", "com.google.errorprone:error_prone_type_annotations:2.46.0", "com.googlecode.javaewah:JavaEWAH:1.2.3", "com.jcraft:jsch:0.1.55", "com.jcraft:jzlib:1.1.3", - "commons-codec:commons-codec:1.21.0", - "commons-io:commons-io:2.21.0", + "commons-codec:commons-codec:1.22.0", + "commons-io:commons-io:2.22.0", "commons-logging:commons-logging:1.3.6", "javax.servlet:javax.servlet-api:4.0.1", "junit:junit:4.13.2",
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 7faac96..da5f702 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock
@@ -1,5 +1,5 @@ { - "lockFileVersion": 24, + "lockFileVersion": 26, "registryFileHashes": { "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", @@ -13,16 +13,19 @@ "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/MODULE.bazel": "d1086e248cda6576862b4b3fe9ad76a214e08c189af5b42557a6e1888812c5d5", "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", - "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/MODULE.bazel": "c43c16ca2c432566cdb78913964497259903ebe8fb7d9b57b38e9f1425b427b8", - "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/source.json": "b88bff599ceaf0f56c264c749b1606f8485cec3b8c38ba30f88a4df9af142861", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c", "https://bcr.bazel.build/modules/abseil-py/2.1.0/MODULE.bazel": "5ebe5bf853769c65707e5c28f216798f7a4b1042015e6a36e6d03094d94bec8a", "https://bcr.bazel.build/modules/abseil-py/2.1.0/source.json": "0e8fc4f088ce07099c1cd6594c20c7ddbb48b4b3c0849b7d94ba94be88ff042b", "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", - "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", - "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", + "https://bcr.bazel.build/modules/apple_support/1.21.0/MODULE.bazel": "ac1824ed5edf17dee2fdd4927ada30c9f8c3b520be1b5fd02a5da15bc10bff3e", + "https://bcr.bazel.build/modules/apple_support/1.21.1/MODULE.bazel": "5809fa3efab15d1f3c3c635af6974044bac8a4919c62238cce06acee8a8c11f1", + "https://bcr.bazel.build/modules/apple_support/1.24.2/MODULE.bazel": "0e62471818affb9f0b26f128831d5c40b074d32e6dda5a0d3852847215a41ca4", + "https://bcr.bazel.build/modules/apple_support/1.24.2/source.json": "2c22c9827093250406c5568da6c54e6fdf0ef06238def3d99c71b12feb057a8d", "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b", "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.10.0/MODULE.bazel": "f75e8807570484a99be90abcd52b5e1f390362c258bcb73106f4544957a48101", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", "https://bcr.bazel.build/modules/bazel_features/1.13.0/MODULE.bazel": "c14c33c7c3c730612bdbe14ebbb5e61936b6f11322ea95a6e91cd1ba962f94df", "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", @@ -35,9 +38,11 @@ "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", - "https://bcr.bazel.build/modules/bazel_features/1.39.0/MODULE.bazel": "28739425c1fc283c91931619749c832b555e60bcd1010b40d8441ce0a5cf726d", - "https://bcr.bazel.build/modules/bazel_features/1.39.0/source.json": "f63cbeb4c602098484d57001e5a07d31cb02bbccde9b5e2c9bf0b29d05283e93", + "https://bcr.bazel.build/modules/bazel_features/1.33.0/MODULE.bazel": "8b8dc9d2a4c88609409c3191165bccec0e4cb044cd7a72ccbe826583303459f6", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/MODULE.bazel": "596cb62090b039caf1cad1d52a8bc35cf188ca9a4e279a828005e7ee49a1bec3", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.42.1/MODULE.bazel": "275a59b5406ff18c01739860aa70ad7ccb3cfb474579411decca11c93b951080", + "https://bcr.bazel.build/modules/bazel_features/1.42.1/source.json": "fcd4396b2df85f64f2b3bb436ad870793ecf39180f1d796f913cc9276d355309", "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", @@ -51,20 +56,24 @@ "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", - "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/source.json": "7ebaefba0b03efe59cac88ed5bbc67bcf59a3eff33af937345ede2a38b2d368a", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", "https://bcr.bazel.build/modules/bazel_worker_api/0.0.1/MODULE.bazel": "02a13b77321773b2042e70ee5e4c5e099c8ddee4cf2da9cd420442c36938d4bd", "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/MODULE.bazel": "460aa12d01231a80cce03c548287b433b321d205b0028ae596728c35e5ee442e", - "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/source.json": "d353c410d47a8b65d09fa98e83d57ebec257a2c2b9c6e42d6fda1cb25e5464a5", + "https://bcr.bazel.build/modules/bazel_worker_api/0.0.8/MODULE.bazel": "396c1ef53835aafe3d42ce6619080531ee770648303731f16cfaa33fa056bf0c", + "https://bcr.bazel.build/modules/bazel_worker_api/0.0.8/source.json": "abaf8ac9d2ab2f47bda9af4c0c080ff7907378888e1f4bc62a0539dd13ba61e8", "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/MODULE.bazel": "82494a01018bb7ef06d4a17ec4cd7a758721f10eb8b6c820a818e70d669500db", - "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/source.json": "a2d30458fd86cf022c2b6331e652526fa08e17573b2f5034a9dbcacdf9c2583c", - "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", - "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/bazel_worker_java/0.0.8/MODULE.bazel": "e76479eae70bd4e8f5f4c2dfc5d03ab971cfb18750246c7b3f3454c5c2ee6629", + "https://bcr.bazel.build/modules/bazel_worker_java/0.0.8/source.json": "9395c4679444bc47bf7e51a710366a4480aa371c6f6bed01868e2fabcf11acec", + "https://bcr.bazel.build/modules/buildozer/8.5.1/MODULE.bazel": "a35d9561b3fc5b18797c330793e99e3b834a473d5fbd3d7d7634aafc9bdb6f8f", + "https://bcr.bazel.build/modules/buildozer/8.5.1/source.json": "e3386e6ff4529f2442800dee47ad28d3e6487f36a1f75ae39ae56c70f0cd2fbd", "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8", "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350", "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a", "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0", "https://bcr.bazel.build/modules/gazelle/0.40.0/MODULE.bazel": "42ba5378ebe845fca43989a53186ab436d956db498acde790685fe0e8f9c6146", - "https://bcr.bazel.build/modules/gazelle/0.40.0/source.json": "1e5ef6e4d8b9b6836d93273c781e78ff829ea2e077afef7a57298040fa4f010a", + "https://bcr.bazel.build/modules/gazelle/0.47.0/MODULE.bazel": "b61bb007c4efad134aa30ee7f4a8e2a39b22aa5685f005edaa022fbd1de43ebc", + "https://bcr.bazel.build/modules/gazelle/0.47.0/source.json": "aeb2e5df14b7fb298625d75d08b9c65bdb0b56014c5eb89da9e5dd0572280ae6", "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", @@ -78,6 +87,8 @@ "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9", + "https://bcr.bazel.build/modules/package_metadata/0.0.3/MODULE.bazel": "77890552ecea9e284b5424c9de827a58099348763a4359e975c359a83d4faa83", + "https://bcr.bazel.build/modules/package_metadata/0.0.5/MODULE.bazel": "ef4f9439e3270fdd6b9fd4dbc3d2f29d13888e44c529a1b243f7a31dfbc2e8e4", "https://bcr.bazel.build/modules/package_metadata/0.0.7/MODULE.bazel": "7adb03933fc8401f495800cf4eafcff0edc6da0ff55c7db223ef69d19f689486", "https://bcr.bazel.build/modules/package_metadata/0.0.7/source.json": "50639625e937b56115012674c797cca7a05a96b4878c87d803c13dc2b31de8a0", "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", @@ -96,6 +107,7 @@ "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", "https://bcr.bazel.build/modules/protobuf/27.2/MODULE.bazel": "32450b50673882e4c8c3d10a83f3bc82161b213ed2f80d17e38bece8f165c295", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2.bcr.1/MODULE.bazel": "52f4126f63a2f0bbf36b99c2a87648f08467a4eaf92ba726bc7d6a500bbf770c", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", @@ -105,7 +117,8 @@ "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", "https://bcr.bazel.build/modules/protobuf/31.1/MODULE.bazel": "379a389bb330b7b8c1cdf331cc90bf3e13de5614799b3b52cdb7c6f389f6b38e", "https://bcr.bazel.build/modules/protobuf/32.1/MODULE.bazel": "89cd2866a9cb07fee9ff74c41ceace11554f32e0d849de4e23ac55515cfada4d", - "https://bcr.bazel.build/modules/protobuf/32.1/source.json": "bd2664e90875c0cd755d1d9b7a103a4b027893ac8eafa3bba087557ffc244ad4", + "https://bcr.bazel.build/modules/protobuf/33.4/MODULE.bazel": "114775b816b38b6d0ca620450d6b02550c60ceedfdc8d9a229833b34a223dc42", + "https://bcr.bazel.build/modules/protobuf/33.4/source.json": "555f8686b4c7d6b5ba731fbea13bf656b4bfd9a7ff629c1d9d3f6e1d6155de79", "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680", @@ -115,13 +128,14 @@ "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", "https://bcr.bazel.build/modules/rules_android/0.6.6/MODULE.bazel": "b0fb569752aab65ab1a9db0a8f6cfaf5aa1754965e17e95dcf0e4d88e192a68d", - "https://bcr.bazel.build/modules/rules_android/0.6.6/source.json": "a9d8dc2d5a102dc03269a94acc886a4cab82cdcb9ccbc77b0f665d6d17a6ae09", + "https://bcr.bazel.build/modules/rules_android/0.7.1/MODULE.bazel": "a806fc382a774252f228a40e3b11b9fcc6276f8778c7fb33e9f72937c6258363", + "https://bcr.bazel.build/modules/rules_android/0.7.1/source.json": "151440aed3f0f73a00d4ed5cec5d31f63a6fef9b95d8fab1eb1810150fa525f2", "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", - "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366", + "https://bcr.bazel.build/modules/rules_apple/4.1.0/MODULE.bazel": "76e10fd4a48038d3fc7c5dc6e63b7063bbf5304a2e3bd42edda6ec660eebea68", + "https://bcr.bazel.build/modules/rules_apple/4.1.0/source.json": "8ee81e1708756f81b343a5eb2b2f0b953f1d25c4ab3d4a68dc02754872e80715", "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", - "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", @@ -130,9 +144,13 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.2/MODULE.bazel": "557ddc3a96858ec0d465a87c0a931054d7dcfd6583af2c7ed3baf494407fd8d0", + "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8", "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c", + "https://bcr.bazel.build/modules/rules_cc/0.2.13/MODULE.bazel": "eecdd666eda6be16a8d9dc15e44b5c75133405e820f620a234acc4b1fdc5aa37", "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", - "https://bcr.bazel.build/modules/rules_cc/0.2.14/source.json": "55d0a4587c5592fad350f6e698530f4faf0e7dd15e69d43f8d87e220c78bea54", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/source.json": "3832f45d145354049137c0090df04629d9c2b5493dc5c2bf46f1834040133a07", "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", @@ -141,40 +159,38 @@ "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd", "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0", "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/MODULE.bazel": "edfc3a9cea7bedb0eaaff37b0d7817c1a4bf72b3c615580b0ffcee6c52690fd4", - "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/source.json": "6b5cd0b3da2bd0e6949580851db990a04af0a285f072b9a0f059424457cd8cc9", + "https://bcr.bazel.build/modules/rules_go/0.53.0/MODULE.bazel": "a4ed760d3ac0dbc0d7b967631a9a3fd9100d28f7d9fcf214b4df87d4bfff5f9a", + "https://bcr.bazel.build/modules/rules_go/0.59.0/MODULE.bazel": "b7e43e7414a3139a7547d1b4909b29085fbe5182b6c58cbe1ed4c6272815aeae", + "https://bcr.bazel.build/modules/rules_go/0.60.0/MODULE.bazel": "4a57ff2ffc2a3570e3c5646575c5a4b07287e91bcdac5d1f72383d51502b48cb", + "https://bcr.bazel.build/modules/rules_go/0.60.0/source.json": "1e21368c5e0c3013a110bd79a8fcff8ca46b5bcb2b561713a7273cbfcff7c464", "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", - "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963", - "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64", "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel": "a592852f8a3dd539e82ee6542013bf2cadfc4c6946be8941e189d224500a8934", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", "https://bcr.bazel.build/modules/rules_java/8.13.0/MODULE.bazel": "0444ebf737d144cf2bb2ccb368e7f1cce735264285f2a3711785827c1686625e", - "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", - "https://bcr.bazel.build/modules/rules_java/8.16.1/MODULE.bazel": "0f20b1cecaa8e52f60a8f071e59a20b4e3b9a67f6c56c802ea256f6face692d3", - "https://bcr.bazel.build/modules/rules_java/8.16.1/source.json": "072f8d11264edc499621be2dc9ea01d6395db5aa6f8799c034ae01a3e857f2e4", "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", "https://bcr.bazel.build/modules/rules_java/8.6.0/MODULE.bazel": "9c064c434606d75a086f15ade5edb514308cccd1544c2b2a89bbac4310e41c71", "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/9.0.3/MODULE.bazel": "1f98ed015f7e744a745e0df6e898a7c5e83562d6b759dfd475c76456dda5ccea", + "https://bcr.bazel.build/modules/rules_java/9.3.0/MODULE.bazel": "f657c72d65ac449caae9abf2e68e66c0d36f9416848c4c4903d0b3234229e7f2", + "https://bcr.bazel.build/modules/rules_java/9.3.0/source.json": "59ae7e662c3c7042b88bbb42ad12483523e234c65ebe4c51611baa43e85cb248", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", - "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", "https://bcr.bazel.build/modules/rules_jvm_external/6.10/MODULE.bazel": "33e636ca6bc9ee0fa090a38aa33c631ded2d8cf6fead4124181d1b35dc474f7c", "https://bcr.bazel.build/modules/rules_jvm_external/6.10/source.json": "c191249787625db72616a3fb3cc2786ab57355a2e3b615402b8b3b66b0f995b7", "https://bcr.bazel.build/modules/rules_jvm_external/6.2/MODULE.bazel": "36a6e52487a855f33cb960724eb56547fa87e2c98a0474c3acad94339d7f8e99", "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", "https://bcr.bazel.build/modules/rules_jvm_external/6.6/MODULE.bazel": "153042249c7060536dc95b6bb9f9bb8063b8a0b0cb7acdb381bddbc2374aed55", "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_jvm_external/6.9/MODULE.bazel": "07c5db05527db7744a54fcffd653e1550d40e0540207a7f7e6d0a4de5bef8274", "https://bcr.bazel.build/modules/rules_kotlin/1.9.5/MODULE.bazel": "043a16a572f610558ec2030db3ff0c9938574e7dd9f58bded1bb07c0192ef025", "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", "https://bcr.bazel.build/modules/rules_kotlin/2.1.3/MODULE.bazel": "ce7def6d576aa8d3a9c6d10e13b4d157296229674371f67dbf788dae0afae3d5", @@ -203,30 +219,34 @@ "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500", "https://bcr.bazel.build/modules/rules_python/0.37.2/MODULE.bazel": "b5ffde91410745750b6c13be1c5dc4555ef5bc50562af4a89fd77807fdde626a", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", - "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43", + "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6", - "https://bcr.bazel.build/modules/rules_python/1.4.1/source.json": "8ec8c90c70ccacc4de8ca1b97f599e756fb59173e898ee08b733006650057c07", + "https://bcr.bazel.build/modules/rules_python/1.6.0/MODULE.bazel": "7e04ad8f8d5bea40451cf80b1bd8262552aa73f841415d20db96b7241bd027d8", + "https://bcr.bazel.build/modules/rules_python/1.7.0/MODULE.bazel": "d01f995ecd137abf30238ad9ce97f8fc3ac57289c8b24bd0bf53324d937a14f8", + "https://bcr.bazel.build/modules/rules_python/1.7.0/source.json": "028a084b65dcf8f4dc4f82f8778dbe65df133f234b316828a82e060d81bdce32", "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/MODULE.bazel": "d44fec647d0aeb67b9f3b980cf68ba634976f3ae7ccd6c07d790b59b87a4f251", "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/source.json": "37c10335f2361c337c5c1f34ed36d2da70534c23088062b33a8bdaab68aa9dea", "https://bcr.bazel.build/modules/rules_shell/0.1.2/MODULE.bazel": "66e4ca3ce084b04af0b9ff05ff14cab4e5df7503973818bb91cbc6cda08d32fc", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592", - "https://bcr.bazel.build/modules/rules_shell/0.4.1/source.json": "4757bd277fe1567763991c4425b483477bb82e35e777a56fd846eb5cceda324a", + "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b", + "https://bcr.bazel.build/modules/rules_shell/0.6.1/source.json": "20ec05cd5e592055e214b2da8ccb283c7f2a421ea0dc2acbf1aa792e11c03d0c", "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca", "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046", - "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186", + "https://bcr.bazel.build/modules/rules_swift/2.4.0/MODULE.bazel": "1639617eb1ede28d774d967a738b4a68b0accb40650beadb57c21846beab5efd", + "https://bcr.bazel.build/modules/rules_swift/3.1.2/MODULE.bazel": "72c8f5cf9d26427cee6c76c8e3853eb46ce6b0412a081b2b6db6e8ad56267400", + "https://bcr.bazel.build/modules/rules_swift/3.1.2/source.json": "e85761f3098a6faf40b8187695e3de6d97944e98abd0d8ce579cb2daf6319a66", "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", - "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd", "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", - "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91", - "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.2/MODULE.bazel": "75aab2373a4bbe2a1260b9bf2a1ebbdbf872d3bd36f80bff058dccd82e89422f", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.2/source.json": "5fba48bbe0ba48761f9e9f75f92876cafb5d07c0ce059cc7a8027416de94a05b", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", @@ -239,13 +259,12 @@ "moduleExtensions": { "@@pybind11_bazel+//:internal_configure.bzl%internal_configure_extension": { "general": { - "bzlTransitiveDigest": "NFQjcZF+fAvf5fDH+pqsx4JrfzP9PuHBz6S6ZutIbnw=", + "bzlTransitiveDigest": "06cynZ1bCvvy8zHPrrDlXq+Z68xmjctHpfFxi+zEpJY=", "usagesDigest": "D1r3lfzMuUBFxgG8V6o0bQTLMk3GkaGOaPzw53wrwyw=", - "recordedFileInputs": { - "@@pybind11_bazel+//MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34" - }, - "recordedDirentsInputs": {}, - "envVariables": {}, + "recordedInputs": [ + "REPO_MAPPING:pybind11_bazel+,bazel_tools bazel_tools", + "FILE:@@pybind11_bazel+//MODULE.bazel e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34" + ], "generatedRepoSpecs": { "pybind11": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", @@ -257,23 +276,16 @@ ] } } - }, - "recordedRepoMappingEntries": [ - [ - "pybind11_bazel+", - "bazel_tools", - "bazel_tools" - ] - ] + } } }, "@@rules_android+//bzlmod_extensions:apksig.bzl%apksig_extension": { "general": { - "bzlTransitiveDigest": "By9qVNN7G4oL1vYOJXye7Dp/CbR2ar9oxAW8WXAVcVw=", - "usagesDigest": "xq6OVkELeJvOgYo3oY/sUBsGFbcqdV+9BYiNgSPV/po=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, + "bzlTransitiveDigest": "KrgiB8lWxqVdbipL9YIYOuGjS80xlZIM/EBvUg8SVd0=", + "usagesDigest": "zr/niBQ/s2fHozWAsg4vI70wAxcuFjG+QtM15qGkq9o=", + "recordedInputs": [ + "REPO_MAPPING:rules_android+,bazel_tools bazel_tools" + ], "generatedRepoSpecs": { "apksig": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", @@ -282,23 +294,16 @@ "build_file": "@@rules_android+//bzlmod_extensions:apksig.BUILD" } } - }, - "recordedRepoMappingEntries": [ - [ - "rules_android+", - "bazel_tools", - "bazel_tools" - ] - ] + } } }, "@@rules_android+//bzlmod_extensions:com_android_dex.bzl%com_android_dex_extension": { "general": { - "bzlTransitiveDigest": "rvWbJQc8jInfIAaXIMhSOqUlwM9HVeLey6q0ISvg08Y=", - "usagesDigest": "toF8IFMu98H/VU2p1sfVC5fVXVYJunpbbmtM6tOsQXY=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, + "bzlTransitiveDigest": "WYXjwqaZbEnV+ZWsKE3oDMpF5XVw8hxzet83NtyT8TM=", + "usagesDigest": "c1Y/KGGjUYCyd8zNIVTUh1bynVXRFz6xGKaSCBpQANM=", + "recordedInputs": [ + "REPO_MAPPING:rules_android+,bazel_tools bazel_tools" + ], "generatedRepoSpecs": { "com_android_dex": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", @@ -307,159 +312,29 @@ "build_file": "@@rules_android+//bzlmod_extensions:com_android_dex.BUILD" } } - }, - "recordedRepoMappingEntries": [ - [ - "rules_android+", - "bazel_tools", - "bazel_tools" - ] - ] + } } }, "@@rules_android+//rules/android_sdk_repository:rule.bzl%android_sdk_repository_extension": { "general": { - "bzlTransitiveDigest": "NAy+0M15JNVEBb8Tny6t7j3lKqTnsAMjoBB6LJ+C370=", - "usagesDigest": "g9Ur6X6qhf9a8MmY9qXU/jFjkyk/aZVBegI0yVMF0z4=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, + "bzlTransitiveDigest": "+rMrzIrv7sImYmkbXJYv+gFpTJQ79X3MpwwMLI2A+oA=", + "usagesDigest": "iEGI2aNDMkHt9LXCdViLNUUOslpiVj2DrevWWXZEFnU=", + "recordedInputs": [], "generatedRepoSpecs": { "androidsdk": { "repoRuleId": "@@rules_android+//rules/android_sdk_repository:rule.bzl%_android_sdk_repository", "attributes": {} } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@rules_apple+//apple:apple.bzl%provisioning_profile_repository_extension": { - "general": { - "bzlTransitiveDigest": "LKT4eTNHatc2Ti8tCILPSTYqQAc4030bEjspG/P+3TI=", - "usagesDigest": "vsJl8Rw5NL+5Ag2wdUDoTeRF/5klkXO8545Iy7U1Q08=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_provisioning_profiles": { - "repoRuleId": "@@rules_apple+//apple/internal:local_provisioning_profiles.bzl%provisioning_profile_repository", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "apple_support+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "bazel_tools", - "rules_cc", - "rules_cc+" - ], - [ - "rules_apple+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_apple+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_apple+", - "build_bazel_apple_support", - "apple_support+" - ], - [ - "rules_apple+", - "build_bazel_rules_swift", - "rules_swift+" - ], - [ - "rules_cc+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_cc+", - "cc_compatibility_proxy", - "rules_cc++compatibility_proxy+cc_compatibility_proxy" - ], - [ - "rules_cc+", - "rules_cc", - "rules_cc+" - ], - [ - "rules_cc++compatibility_proxy+cc_compatibility_proxy", - "rules_cc", - "rules_cc+" - ], - [ - "rules_swift+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_swift+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_swift+", - "build_bazel_apple_support", - "apple_support+" - ], - [ - "rules_swift+", - "build_bazel_rules_swift", - "rules_swift+" - ], - [ - "rules_swift+", - "build_bazel_rules_swift_local_config", - "rules_swift++non_module_deps+build_bazel_rules_swift_local_config" - ] - ] - } - }, - "@@rules_apple+//apple:extensions.bzl%non_module_deps": { - "general": { - "bzlTransitiveDigest": "4xtddSlWIQdtVNVuvOI62fJfQVETHZCVWFvYYwQHMR4=", - "usagesDigest": "M3VqFpeTCo4qmrNKGZw0dxBHvTYDrfV3cscGzlSAhQ4=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "xctestrunner": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/google/xctestrunner/archive/b7698df3d435b6491b4b4c0f9fc7a63fbed5e3a6.tar.gz" - ], - "strip_prefix": "xctestrunner-b7698df3d435b6491b4b4c0f9fc7a63fbed5e3a6", - "sha256": "ae3a063c985a8633cb7eb566db21656f8db8eb9a0edb8c182312c7f0db53730d" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_apple+", - "bazel_tools", - "bazel_tools" - ] - ] + } } }, "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "HJP3wKFbPhB1mSYjJS6kbXEiP+OQxvsBdqpvyJN6I3s=", + "bzlTransitiveDigest": "m2i9p9Fn+7u7WGI0mz6K5GlmmtUuwReSjDHIISY08GI=", "usagesDigest": "qTwqmKKUfWcPdvM0waG+CPWrxsbeAWVeUxavm7tEk9E=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, + "recordedInputs": [ + "REPO_MAPPING:rules_kotlin+,bazel_tools bazel_tools" + ], "generatedRepoSpecs": { "com_github_jetbrains_kotlin_git": { "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", @@ -524,23 +399,185 @@ ] } } - }, - "recordedRepoMappingEntries": [ - [ - "rules_kotlin+", - "bazel_tools", - "bazel_tools" - ] - ] + } + } + }, + "@@rules_python+//python/extensions:config.bzl%config": { + "general": { + "bzlTransitiveDigest": "2hLgIvNVTLgxus0ZuXtleBe70intCfo0cHs8qvt6cdM=", + "usagesDigest": "ZVSXMAGpD+xzVNPuvF1IoLBkty7TROO0+akMapt1pAg=", + "recordedInputs": [ + "REPO_MAPPING:rules_python+,bazel_tools bazel_tools", + "REPO_MAPPING:rules_python+,pypi__build rules_python++config+pypi__build", + "REPO_MAPPING:rules_python+,pypi__click rules_python++config+pypi__click", + "REPO_MAPPING:rules_python+,pypi__colorama rules_python++config+pypi__colorama", + "REPO_MAPPING:rules_python+,pypi__importlib_metadata rules_python++config+pypi__importlib_metadata", + "REPO_MAPPING:rules_python+,pypi__installer rules_python++config+pypi__installer", + "REPO_MAPPING:rules_python+,pypi__more_itertools rules_python++config+pypi__more_itertools", + "REPO_MAPPING:rules_python+,pypi__packaging rules_python++config+pypi__packaging", + "REPO_MAPPING:rules_python+,pypi__pep517 rules_python++config+pypi__pep517", + "REPO_MAPPING:rules_python+,pypi__pip rules_python++config+pypi__pip", + "REPO_MAPPING:rules_python+,pypi__pip_tools rules_python++config+pypi__pip_tools", + "REPO_MAPPING:rules_python+,pypi__pyproject_hooks rules_python++config+pypi__pyproject_hooks", + "REPO_MAPPING:rules_python+,pypi__setuptools rules_python++config+pypi__setuptools", + "REPO_MAPPING:rules_python+,pypi__tomli rules_python++config+pypi__tomli", + "REPO_MAPPING:rules_python+,pypi__wheel rules_python++config+pypi__wheel", + "REPO_MAPPING:rules_python+,pypi__zipp rules_python++config+pypi__zipp" + ], + "generatedRepoSpecs": { + "rules_python_internal": { + "repoRuleId": "@@rules_python+//python/private:internal_config_repo.bzl%internal_config_repo", + "attributes": { + "transition_setting_generators": {}, + "transition_settings": [] + } + }, + "pypi__build": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/e2/03/f3c8ba0a6b6e30d7d18c40faab90807c9bb5e9a1e3b2fe2008af624a9c97/build-1.2.1-py3-none-any.whl", + "sha256": "75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__click": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", + "sha256": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__colorama": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", + "sha256": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__importlib_metadata": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", + "sha256": "30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__installer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl", + "sha256": "05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__more_itertools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/50/e2/8e10e465ee3987bb7c9ab69efb91d867d93959095f4807db102d07995d94/more_itertools-10.2.0-py3-none-any.whl", + "sha256": "686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__packaging": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/49/df/1fceb2f8900f8639e278b056416d49134fb8d84c5942ffaa01ad34782422/packaging-24.0-py3-none-any.whl", + "sha256": "2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pep517": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/25/6e/ca4a5434eb0e502210f591b97537d322546e4833dcb4d470a48c375c5540/pep517-0.13.1-py3-none-any.whl", + "sha256": "31b206f67165b3536dd577c5c3f1518e8fbaf38cbc57efff8369a392feff1721", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pip": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/8a/6a/19e9fe04fca059ccf770861c7d5721ab4c2aebc539889e97c7977528a53b/pip-24.0-py3-none-any.whl", + "sha256": "ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pip_tools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/0d/dc/38f4ce065e92c66f058ea7a368a9c5de4e702272b479c0992059f7693941/pip_tools-7.4.1-py3-none-any.whl", + "sha256": "4c690e5fbae2f21e87843e89c26191f0d9454f362d8acdbd695716493ec8b3a9", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pyproject_hooks": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/ae/f3/431b9d5fe7d14af7a32340792ef43b8a714e7726f1d7b69cc4e8e7a3f1d7/pyproject_hooks-1.1.0-py3-none-any.whl", + "sha256": "7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__setuptools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/90/99/158ad0609729111163fc1f674a5a42f2605371a4cf036d0441070e2f7455/setuptools-78.1.1-py3-none-any.whl", + "sha256": "c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__tomli": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", + "sha256": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__wheel": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/7d/cd/d7460c9a869b16c3dd4e1e403cce337df165368c71d6af229a74699622ce/wheel-0.43.0-py3-none-any.whl", + "sha256": "55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__zipp": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/da/55/a03fd7240714916507e1fcf7ae355bd9d9ed2e6db492595f1a67f61681be/zipp-3.18.2-py3-none-any.whl", + "sha256": "dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + } + } } }, "@@rules_python+//python/uv:uv.bzl%uv": { "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "4JapxcpS0mL3524k0TZJffAtVyuRjDHZvN9kBRxxF1U=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, + "bzlTransitiveDigest": "ijW9KS7qsIY+yBVvJ+Nr1mzwQox09j13DnE3iIwaeTM=", + "usagesDigest": "H8dQoNZcoqP+Mu0tHZTi4KHATzvNkM5ePuEqoQdklIU=", + "recordedInputs": [ + "REPO_MAPPING:rules_python+,bazel_tools bazel_tools", + "REPO_MAPPING:rules_python+,platforms platforms" + ], "generatedRepoSpecs": { "uv": { "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", @@ -560,175 +597,336 @@ "toolchain_target_settings": {} } } - }, - "recordedRepoMappingEntries": [ - [ - "rules_python+", - "platforms", - "platforms" - ] - ] - } - }, - "@@rules_swift+//swift:extensions.bzl%non_module_deps": { - "general": { - "bzlTransitiveDigest": "6axDCXf6fQoPav8hojnUBxGA0FAMqLvtpC1cRsisCdw=", - "usagesDigest": "mhACFnrdMv9Wi0Mt67bxocJqviRkDSV+Ee5Mqdj5akA=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "com_github_apple_swift_protobuf": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-protobuf/archive/1.20.2.tar.gz" - ], - "sha256": "3fb50bd4d293337f202d917b6ada22f9548a0a0aed9d9a4d791e6fbd8a246ebb", - "strip_prefix": "swift-protobuf-1.20.2/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_protobuf/BUILD.overlay" - } - }, - "com_github_grpc_grpc_swift": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/grpc/grpc-swift/archive/1.16.0.tar.gz" - ], - "sha256": "58b60431d0064969f9679411264b82e40a217ae6bd34e17096d92cc4e47556a5", - "strip_prefix": "grpc-swift-1.16.0/", - "build_file": "@@rules_swift+//third_party:com_github_grpc_grpc_swift/BUILD.overlay" - } - }, - "com_github_apple_swift_docc_symbolkit": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-docc-symbolkit/archive/refs/tags/swift-5.10-RELEASE.tar.gz" - ], - "sha256": "de1d4b6940468ddb53b89df7aa1a81323b9712775b0e33e8254fa0f6f7469a97", - "strip_prefix": "swift-docc-symbolkit-swift-5.10-RELEASE", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_docc_symbolkit/BUILD.overlay" - } - }, - "com_github_apple_swift_nio": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-nio/archive/2.42.0.tar.gz" - ], - "sha256": "e3304bc3fb53aea74a3e54bd005ede11f6dc357117d9b1db642d03aea87194a0", - "strip_prefix": "swift-nio-2.42.0/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio/BUILD.overlay" - } - }, - "com_github_apple_swift_nio_http2": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-nio-http2/archive/1.26.0.tar.gz" - ], - "sha256": "f0edfc9d6a7be1d587e5b403f2d04264bdfae59aac1d74f7d974a9022c6d2b25", - "strip_prefix": "swift-nio-http2-1.26.0/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_http2/BUILD.overlay" - } - }, - "com_github_apple_swift_nio_transport_services": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-nio-transport-services/archive/1.15.0.tar.gz" - ], - "sha256": "f3498dafa633751a52b9b7f741f7ac30c42bcbeb3b9edca6d447e0da8e693262", - "strip_prefix": "swift-nio-transport-services-1.15.0/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_transport_services/BUILD.overlay" - } - }, - "com_github_apple_swift_nio_extras": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-nio-extras/archive/1.4.0.tar.gz" - ], - "sha256": "4684b52951d9d9937bb3e8ccd6b5daedd777021ef2519ea2f18c4c922843b52b", - "strip_prefix": "swift-nio-extras-1.4.0/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_extras/BUILD.overlay" - } - }, - "com_github_apple_swift_log": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-log/archive/1.4.4.tar.gz" - ], - "sha256": "48fe66426c784c0c20031f15dc17faf9f4c9037c192bfac2f643f65cb2321ba0", - "strip_prefix": "swift-log-1.4.4/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_log/BUILD.overlay" - } - }, - "com_github_apple_swift_nio_ssl": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-nio-ssl/archive/2.23.0.tar.gz" - ], - "sha256": "4787c63f61dd04d99e498adc3d1a628193387e41efddf8de19b8db04544d016d", - "strip_prefix": "swift-nio-ssl-2.23.0/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_ssl/BUILD.overlay" - } - }, - "com_github_apple_swift_collections": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-collections/archive/1.0.4.tar.gz" - ], - "sha256": "d9e4c8a91c60fb9c92a04caccbb10ded42f4cb47b26a212bc6b39cc390a4b096", - "strip_prefix": "swift-collections-1.0.4/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_collections/BUILD.overlay" - } - }, - "com_github_apple_swift_atomics": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/apple/swift-atomics/archive/1.1.0.tar.gz" - ], - "sha256": "1bee7f469f7e8dc49f11cfa4da07182fbc79eab000ec2c17bfdce468c5d276fb", - "strip_prefix": "swift-atomics-1.1.0/", - "build_file": "@@rules_swift+//third_party:com_github_apple_swift_atomics/BUILD.overlay" - } - }, - "build_bazel_rules_swift_index_import": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@rules_swift+//third_party:build_bazel_rules_swift_index_import/BUILD.overlay", - "canonical_id": "index-import-5.8", - "urls": [ - "https://github.com/MobileNativeFoundation/index-import/releases/download/5.8.0.1/index-import.tar.gz" - ], - "sha256": "28c1ffa39d99e74ed70623899b207b41f79214c498c603915aef55972a851a15" - } - }, - "build_bazel_rules_swift_local_config": { - "repoRuleId": "@@rules_swift+//swift/internal:swift_autoconfiguration.bzl%swift_autoconfiguration", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_swift+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_swift+", - "build_bazel_rules_swift", - "rules_swift+" - ] - ] + } } } }, - "facts": {} + "facts": { + "@@rules_go+//go:extensions.bzl%go_sdk": { + "1.22.4": { + "aix_ppc64": [ + "go1.22.4.aix-ppc64.tar.gz", + "b9647fa9fc83a0cc5d4f092a19eaeaecf45f063a5aa7d4962fde65aeb7ae6ce1" + ], + "darwin_amd64": [ + "go1.22.4.darwin-amd64.tar.gz", + "c95967f50aa4ace34af0c236cbdb49a9a3e80ee2ad09d85775cb4462a5c19ed3" + ], + "darwin_arm64": [ + "go1.22.4.darwin-arm64.tar.gz", + "242b78dc4c8f3d5435d28a0d2cec9b4c1aa999b601fb8aa59fb4e5a1364bf827" + ], + "dragonfly_amd64": [ + "go1.22.4.dragonfly-amd64.tar.gz", + "f2fbb51af4719d3616efb482d6ed2b96579b474156f85a7ddc6f126764feec4b" + ], + "freebsd_386": [ + "go1.22.4.freebsd-386.tar.gz", + "7c54884bb9f274884651d41e61d1bc12738863ad1497e97ea19ad0e9aa6bf7b5" + ], + "freebsd_amd64": [ + "go1.22.4.freebsd-amd64.tar.gz", + "88d44500e1701dd35797619774d6dd51bf60f45a8338b0a82ddc018e4e63fb78" + ], + "freebsd_arm64": [ + "go1.22.4.freebsd-arm64.tar.gz", + "726dc093cf020277be45debf03c3b02b43c2efb3e2a5d4fba8f52579d65327dc" + ], + "freebsd_armv6l": [ + "go1.22.4.freebsd-arm.tar.gz", + "3d9efe47db142a22679aba46b1772e3900b0d87ae13bd2b3bc80dbf2ac0b2cd6" + ], + "freebsd_riscv64": [ + "go1.22.4.freebsd-riscv64.tar.gz", + "5f6b67e5e32f1d6ccb2d4dcb44934a5e2e870a877ba7443d86ec43cfc28afa71" + ], + "illumos_amd64": [ + "go1.22.4.illumos-amd64.tar.gz", + "d56ecc2f85b6418a21ef83879594d0c42ab4f65391a676bb12254870e6690d63" + ], + "linux_386": [ + "go1.22.4.linux-386.tar.gz", + "47a2a8d249a91eb8605c33bceec63aedda0441a43eac47b4721e3975ff916cec" + ], + "linux_amd64": [ + "go1.22.4.linux-amd64.tar.gz", + "ba79d4526102575196273416239cca418a651e049c2b099f3159db85e7bade7d" + ], + "linux_arm64": [ + "go1.22.4.linux-arm64.tar.gz", + "a8e177c354d2e4a1b61020aca3562e27ea3e8f8247eca3170e3fa1e0c2f9e771" + ], + "linux_armv6l": [ + "go1.22.4.linux-armv6l.tar.gz", + "e2b143fbacbc9cbd448e9ef41ac3981f0488ce849af1cf37e2341d09670661de" + ], + "linux_loong64": [ + "go1.22.4.linux-loong64.tar.gz", + "e2ff9436e4b34bf6926b06d97916e26d67a909a2effec17967245900f0816f1d" + ], + "linux_mips": [ + "go1.22.4.linux-mips.tar.gz", + "73f0dcc60458c4770593b05a7bc01cc0d31fc98f948c0c2334812c7a1f2fc3f1" + ], + "linux_mips64": [ + "go1.22.4.linux-mips64.tar.gz", + "417af97fc2630a647052375768be4c38adcc5af946352ea5b28613ea81ca5d45" + ], + "linux_mips64le": [ + "go1.22.4.linux-mips64le.tar.gz", + "7486e2d7dd8c98eb44df815ace35a7fe7f30b7c02326e3741bd934077508139b" + ], + "linux_mipsle": [ + "go1.22.4.linux-mipsle.tar.gz", + "69479c8aad301e459a8365b40cad1074a0dbba5defb9291669f94809c4c4be6e" + ], + "linux_ppc64": [ + "go1.22.4.linux-ppc64.tar.gz", + "dd238847e65bc3e2745caca475a5db6522a2fcf85cf6c38fc36a06642b19efd7" + ], + "linux_ppc64le": [ + "go1.22.4.linux-ppc64le.tar.gz", + "a3e5834657ef92523f570f798fed42f1f87bc18222a16815ec76b84169649ec4" + ], + "linux_riscv64": [ + "go1.22.4.linux-riscv64.tar.gz", + "56a827ff7dc6245bcd7a1e9288dffaa1d8b0fd7468562264c1523daf3b4f1b4a" + ], + "linux_s390x": [ + "go1.22.4.linux-s390x.tar.gz", + "7590c3e278e2dc6040aae0a39da3ca1eb2e3921673a7304cc34d588c45889eec" + ], + "netbsd_386": [ + "go1.22.4.netbsd-386.tar.gz", + "ddd2eebe34471a2502de6c5dad04ab27c9fc80cbde7a9ad5b3c66ecec4504e1d" + ], + "netbsd_amd64": [ + "go1.22.4.netbsd-amd64.tar.gz", + "33af79f6f935f6fbacc5d23876450b3567b79348fc065beef8e64081127dd234" + ], + "netbsd_arm64": [ + "go1.22.4.netbsd-arm64.tar.gz", + "c9a2971dec9f6d320c6f2b049b2353c6d0a2d35e87b8a4b2d78a2f0d62545f8e" + ], + "netbsd_armv6l": [ + "go1.22.4.netbsd-arm.tar.gz", + "fa3550ebd5375a70b3bcd342b5a71f4bd271dcbbfaf4eabefa2144ab5d8924b6" + ], + "openbsd_386": [ + "go1.22.4.openbsd-386.tar.gz", + "d21af022331bfdc2b5b161d616c3a1a4573d33cf7a30416ee509a8f3641deb47" + ], + "openbsd_amd64": [ + "go1.22.4.openbsd-amd64.tar.gz", + "72c0094c43f7e5722ec49c2a3e9dfa7a1123ac43a5f3a63eecf3e3795d3ff0ae" + ], + "openbsd_arm64": [ + "go1.22.4.openbsd-arm64.tar.gz", + "a7ab8d4e0b02bf06ed144ba42c61c0e93ee00f2b433415dfd4ad4b6e79f31650" + ], + "openbsd_armv6l": [ + "go1.22.4.openbsd-arm.tar.gz", + "1096831ea3c5ea3ca57d14251d9eda3786889531eb40d7d6775dcaa324d4b065" + ], + "openbsd_ppc64": [ + "go1.22.4.openbsd-ppc64.tar.gz", + "9716327c8a628358798898dc5148c49dbbeb5196bf2cbf088e550721a6e4f60b" + ], + "plan9_386": [ + "go1.22.4.plan9-386.tar.gz", + "a8dd4503c95c32a502a616ab78870a19889c9325fe9bd31eb16dd69346e4bfa8" + ], + "plan9_amd64": [ + "go1.22.4.plan9-amd64.tar.gz", + "5423a25808d76fe5aca8607a2e5ac5673abf45446b168cb5e9d8519ee9fe39a1" + ], + "plan9_armv6l": [ + "go1.22.4.plan9-arm.tar.gz", + "6af939ad583f5c85c09c53728ab7d38c3cc2b39167562d6c18a07c5c6608b370" + ], + "solaris_amd64": [ + "go1.22.4.solaris-amd64.tar.gz", + "e8cabe69c03085725afdb32a6f9998191a3e55a747b270d835fd05000d56abba" + ], + "windows_386": [ + "go1.22.4.windows-386.zip", + "aca4e2c37278a10f1c70dd0df142f7d66b50334fcee48978d409202d308d6d25" + ], + "windows_amd64": [ + "go1.22.4.windows-amd64.zip", + "26321c4d945a0035d8a5bc4a1965b0df401ff8ceac66ce2daadabf9030419a98" + ], + "windows_arm64": [ + "go1.22.4.windows-arm64.zip", + "8a2daa9ea28cbdafddc6171aefed384f4e5b6e714fb52116fe9ed25a132f37ed" + ], + "windows_armv6l": [ + "go1.22.4.windows-arm.zip", + "5fcd0671a49cecf39b41021621ee1b6e7aa1370f37122b72e80d4fd4185833b6" + ] + }, + "1.25.0": { + "aix_ppc64": [ + "go1.25.0.aix-ppc64.tar.gz", + "e5234a7dac67bc86c528fe9752fc9d63557918627707a733ab4cac1a6faed2d4" + ], + "darwin_amd64": [ + "go1.25.0.darwin-amd64.tar.gz", + "5bd60e823037062c2307c71e8111809865116714d6f6b410597cf5075dfd80ef" + ], + "darwin_arm64": [ + "go1.25.0.darwin-arm64.tar.gz", + "544932844156d8172f7a28f77f2ac9c15a23046698b6243f633b0a0b00c0749c" + ], + "dragonfly_amd64": [ + "go1.25.0.dragonfly-amd64.tar.gz", + "5ed3cf9a810a1483822538674f1336c06b51aa1b94d6d545a1a0319a48177120" + ], + "freebsd_386": [ + "go1.25.0.freebsd-386.tar.gz", + "abea5d5c6697e6b5c224731f2158fe87c602996a2a233ac0c4730cd57bf8374e" + ], + "freebsd_amd64": [ + "go1.25.0.freebsd-amd64.tar.gz", + "86e6fe0a29698d7601c4442052dac48bd58d532c51cccb8f1917df648138730b" + ], + "freebsd_arm": [ + "go1.25.0.freebsd-arm.tar.gz", + "d90b78e41921f72f30e8bbc81d9dec2cff7ff384a33d8d8debb24053e4336bfe" + ], + "freebsd_arm64": [ + "go1.25.0.freebsd-arm64.tar.gz", + "451d0da1affd886bfb291b7c63a6018527b269505db21ce6e14724f22ab0662e" + ], + "freebsd_riscv64": [ + "go1.25.0.freebsd-riscv64.tar.gz", + "7b565f76bd8bda46549eeaaefe0e53b251e644c230577290c0f66b1ecdb3cdbe" + ], + "illumos_amd64": [ + "go1.25.0.illumos-amd64.tar.gz", + "b1e1fdaab1ad25aa1c08d7a36c97d45d74b98b89c3f78c6d2145f77face54a2c" + ], + "linux_386": [ + "go1.25.0.linux-386.tar.gz", + "8c602dd9d99bc9453b3995d20ce4baf382cc50855900a0ece5de9929df4a993a" + ], + "linux_amd64": [ + "go1.25.0.linux-amd64.tar.gz", + "2852af0cb20a13139b3448992e69b868e50ed0f8a1e5940ee1de9e19a123b613" + ], + "linux_arm64": [ + "go1.25.0.linux-arm64.tar.gz", + "05de75d6994a2783699815ee553bd5a9327d8b79991de36e38b66862782f54ae" + ], + "linux_armv6l": [ + "go1.25.0.linux-armv6l.tar.gz", + "a5a8f8198fcf00e1e485b8ecef9ee020778bf32a408a4e8873371bfce458cd09" + ], + "linux_loong64": [ + "go1.25.0.linux-loong64.tar.gz", + "cab86b1cf761b1cb3bac86a8877cfc92e7b036fc0d3084123d77013d61432afc" + ], + "linux_mips": [ + "go1.25.0.linux-mips.tar.gz", + "d66b6fb74c3d91b9829dc95ec10ca1f047ef5e89332152f92e136cf0e2da5be1" + ], + "linux_mips64": [ + "go1.25.0.linux-mips64.tar.gz", + "4082e4381a8661bc2a839ff94ba3daf4f6cde20f8fb771b5b3d4762dc84198a2" + ], + "linux_mips64le": [ + "go1.25.0.linux-mips64le.tar.gz", + "70002c299ec7f7175ac2ef673b1b347eecfa54ae11f34416a6053c17f855afcc" + ], + "linux_mipsle": [ + "go1.25.0.linux-mipsle.tar.gz", + "b00a3a39eff099f6df9f1c7355bf28e4589d0586f42d7d4a394efb763d145a73" + ], + "linux_ppc64": [ + "go1.25.0.linux-ppc64.tar.gz", + "df166f33bd98160662560a72ff0b4ba731f969a80f088922bddcf566a88c1ec1" + ], + "linux_ppc64le": [ + "go1.25.0.linux-ppc64le.tar.gz", + "0f18a89e7576cf2c5fa0b487a1635d9bcbf843df5f110e9982c64df52a983ad0" + ], + "linux_riscv64": [ + "go1.25.0.linux-riscv64.tar.gz", + "c018ff74a2c48d55c8ca9b07c8e24163558ffec8bea08b326d6336905d956b67" + ], + "linux_s390x": [ + "go1.25.0.linux-s390x.tar.gz", + "34e5a2e19f2292fbaf8783e3a241e6e49689276aef6510a8060ea5ef54eee408" + ], + "netbsd_386": [ + "go1.25.0.netbsd-386.tar.gz", + "f8586cdb7aa855657609a5c5f6dbf523efa00c2bbd7c76d3936bec80aa6c0aba" + ], + "netbsd_amd64": [ + "go1.25.0.netbsd-amd64.tar.gz", + "ae8dc1469385b86a157a423bb56304ba45730de8a897615874f57dd096db2c2a" + ], + "netbsd_arm": [ + "go1.25.0.netbsd-arm.tar.gz", + "1ff7e4cc764425fc9dd6825eaee79d02b3c7cafffbb3691687c8d672ade76cb7" + ], + "netbsd_arm64": [ + "go1.25.0.netbsd-arm64.tar.gz", + "e1b310739f26724216aa6d7d7208c4031f9ff54c9b5b9a796ddc8bebcb4a5f16" + ], + "openbsd_386": [ + "go1.25.0.openbsd-386.tar.gz", + "4802a9b20e533da91adb84aab42e94aa56cfe3e5475d0550bed3385b182e69d8" + ], + "openbsd_amd64": [ + "go1.25.0.openbsd-amd64.tar.gz", + "c016cd984bebe317b19a4f297c4f50def120dc9788490540c89f28e42f1dabe1" + ], + "openbsd_arm": [ + "go1.25.0.openbsd-arm.tar.gz", + "a1e31d0bf22172ddde42edf5ec811ef81be43433df0948ece52fecb247ccfd8d" + ], + "openbsd_arm64": [ + "go1.25.0.openbsd-arm64.tar.gz", + "343ea8edd8c218196e15a859c6072d0dd3246fbbb168481ab665eb4c4140458d" + ], + "openbsd_ppc64": [ + "go1.25.0.openbsd-ppc64.tar.gz", + "694c14da1bcaeb5e3332d49bdc2b6d155067648f8fe1540c5de8f3cf8e157154" + ], + "openbsd_riscv64": [ + "go1.25.0.openbsd-riscv64.tar.gz", + "aa510ad25cf54c06cd9c70b6d80ded69cb20188ac6e1735655eef29ff7e7885f" + ], + "plan9_386": [ + "go1.25.0.plan9-386.tar.gz", + "46f8cef02086cf04bf186c5912776b56535178d4cb319cd19c9fdbdd29231986" + ], + "plan9_amd64": [ + "go1.25.0.plan9-amd64.tar.gz", + "29b34391d84095e44608a228f63f2f88113a37b74a79781353ec043dfbcb427b" + ], + "plan9_arm": [ + "go1.25.0.plan9-arm.tar.gz", + "0a047107d13ebe7943aaa6d54b1d7bbd2e45e68ce449b52915a818da715799c2" + ], + "solaris_amd64": [ + "go1.25.0.solaris-amd64.tar.gz", + "9977f9e4351984364a3b2b78f8b88bfd1d339812356d5237678514594b7d3611" + ], + "windows_386": [ + "go1.25.0.windows-386.zip", + "df9f39db82a803af0db639e3613a36681ab7a42866b1384b3f3a1045663961a7" + ], + "windows_amd64": [ + "go1.25.0.windows-amd64.zip", + "89efb4f9b30812eee083cc1770fdd2913c14d301064f6454851428f9707d190b" + ], + "windows_arm64": [ + "go1.25.0.windows-arm64.zip", + "27bab004c72b3d7bd05a69b6ec0fc54a309b4b78cc569dd963d8b3ec28bfdb8c" + ] + } + } + } }
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 aaa7676..9ec96bd 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
@@ -49,19 +49,19 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> </dependencies> @@ -113,61 +113,61 @@ <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-servlet</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-nested</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-session</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util-ajax</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> @@ -203,7 +203,7 @@ <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.13.2</version> + <version>2.14.0</version> <type>jar</type> </dependency> </dependencies> @@ -277,7 +277,7 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.21.0</version> + <version>1.22.0</version> <type>jar</type> </dependency> <dependency> @@ -295,7 +295,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.21.0</version> + <version>2.22.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 f63efaa..d00492b 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
@@ -49,19 +49,19 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> </dependencies> @@ -113,61 +113,61 @@ <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-servlet</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-nested</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-session</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util-ajax</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> @@ -203,7 +203,7 @@ <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.13.2</version> + <version>2.14.0</version> <type>jar</type> </dependency> </dependencies> @@ -277,7 +277,7 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.21.0</version> + <version>1.22.0</version> <type>jar</type> </dependency> <dependency> @@ -295,7 +295,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.21.0</version> + <version>2.22.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 8d96981..58a1926 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
@@ -49,19 +49,19 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> </dependencies> @@ -113,61 +113,61 @@ <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-servlet</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-nested</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-session</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util-ajax</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> @@ -203,7 +203,7 @@ <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.13.2</version> + <version>2.14.0</version> <type>jar</type> </dependency> </dependencies> @@ -277,7 +277,7 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.21.0</version> + <version>1.22.0</version> <type>jar</type> </dependency> <dependency> @@ -295,7 +295,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.21.0</version> + <version>2.22.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 aca3a80..1994c65 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
@@ -49,19 +49,19 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> </dependencies> @@ -113,61 +113,61 @@ <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-servlet</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-nested</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-session</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util-ajax</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> @@ -203,7 +203,7 @@ <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.13.2</version> + <version>2.14.0</version> <type>jar</type> </dependency> </dependencies> @@ -277,7 +277,7 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.21.0</version> + <version>1.22.0</version> <type>jar</type> </dependency> <dependency> @@ -295,7 +295,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.21.0</version> + <version>2.22.0</version> <type>jar</type> </dependency> <dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.38.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.38.target index 9526197..ffa6021 100644 --- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.38.target +++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.38.target
@@ -49,19 +49,19 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> </dependencies> @@ -113,61 +113,61 @@ <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-servlet</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-nested</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-session</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util-ajax</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> @@ -203,7 +203,7 @@ <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.13.2</version> + <version>2.14.0</version> <type>jar</type> </dependency> </dependencies> @@ -277,7 +277,7 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.21.0</version> + <version>1.22.0</version> <type>jar</type> </dependency> <dependency> @@ -295,7 +295,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.21.0</version> + <version>2.22.0</version> <type>jar</type> </dependency> <dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.39.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.39.target index 9542085..ea3eeb1 100644 --- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.39.target +++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.39.target
@@ -49,19 +49,19 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> </dependencies> @@ -113,61 +113,61 @@ <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-servlet</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-nested</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-session</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util-ajax</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> @@ -203,7 +203,7 @@ <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.13.2</version> + <version>2.14.0</version> <type>jar</type> </dependency> </dependencies> @@ -277,7 +277,7 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.21.0</version> + <version>1.22.0</version> <type>jar</type> </dependency> <dependency> @@ -295,7 +295,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.21.0</version> + <version>2.22.0</version> <type>jar</type> </dependency> <dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.40.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.40.target index 068e12a..fc2bc19 100644 --- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.40.target +++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.40.target
@@ -49,19 +49,19 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>2.0.17</version> + <version>2.0.18</version> <type>jar</type> </dependency> </dependencies> @@ -113,61 +113,61 @@ <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-servlet</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-nested</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty.ee8</groupId> <artifactId>jetty-ee8-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-session</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util-ajax</artifactId> - <version>12.1.8</version> + <version>12.1.9</version> <type>jar</type> </dependency> <dependency> @@ -203,7 +203,7 @@ <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.13.2</version> + <version>2.14.0</version> <type>jar</type> </dependency> </dependencies> @@ -277,7 +277,7 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.21.0</version> + <version>1.22.0</version> <type>jar</type> </dependency> <dependency> @@ -295,7 +295,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.21.0</version> + <version>2.22.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 18a7e4e..b494150 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
@@ -10,7 +10,7 @@ dependency { groupId = "commons-codec" artifactId = "commons-codec" - version = "1.21.0" + version = "1.22.0" } dependency { groupId = "org.apache.commons" @@ -25,7 +25,7 @@ dependency { groupId = "commons-io" artifactId = "commons-io" - version = "2.21.0" + version = "2.22.0" } dependency { groupId = "commons-logging" @@ -115,7 +115,7 @@ dependency { groupId = "com.google.code.gson" artifactId = "gson" - version = "2.13.2" + version = "2.14.0" } } @@ -154,52 +154,52 @@ dependency { groupId = "org.eclipse.jetty.ee8" artifactId = "jetty-ee8-servlet" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty.ee8" artifactId = "jetty-ee8-nested" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty.ee8" artifactId = "jetty-ee8-security" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty" artifactId = "jetty-http" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty" artifactId = "jetty-io" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty" artifactId = "jetty-security" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty" artifactId = "jetty-server" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty" artifactId = "jetty-session" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty" artifactId = "jetty-util" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "org.eclipse.jetty" artifactId = "jetty-util-ajax" - version = "12.1.8" + version = "12.1.9" } dependency { groupId = "javax.servlet" @@ -266,17 +266,17 @@ dependency { groupId = "org.slf4j" artifactId = "slf4j-api" - version = "2.0.17" + version = "2.0.18" } dependency { groupId = "org.slf4j" artifactId = "slf4j-simple" - version = "2.0.17" + version = "2.0.18" } dependency { groupId = "org.slf4j" artifactId = "jcl-over-slf4j" - version = "2.0.17" + version = "2.0.18" } } @@ -291,4 +291,4 @@ artifactId = "xz" version = "1.12" } -} \ No newline at end of file +}
diff --git a/org.eclipse.jgit.ssh.apache.test/BUILD b/org.eclipse.jgit.ssh.apache.test/BUILD index bf796c0..e36f8d6 100644 --- a/org.eclipse.jgit.ssh.apache.test/BUILD +++ b/org.eclipse.jgit.ssh.apache.test/BUILD
@@ -6,6 +6,7 @@ "@com_googlesource_gerrit_bazlets//tools:junit.bzl", "junit_tests", ) +load("@rules_java//java:defs.bzl", "java_library") DEPS = [ "//lib:bcpkix",
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java index 217f587..beaef58 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java
@@ -311,6 +311,168 @@ public void getPlainPacksNotCoveredBy_midxChain() { assertEquals(List.of(), packList.getPlainPacksNotCoveredBy(midxTip)); } + @Test + public void builder_delete_onlyPlain() { + DfsPackFile a = packPool.pack("a"); + DfsPackFile b = packPool.pack("b"); + DfsPackFile c = packPool.pack("c"); + + MidxPackList packList = MidxPackList.create(a, b, c).edit().delete(b) + .build(); + assertEquals(List.of(a, c), packList.getAllPlainPacks()); + } + + @Test + public void builder_delete_oneMidxCovering() { + DfsPackFile a = packPool.pack("a"); + DfsPackFile b = packPool.pack("b"); + DfsPackFile c = packPool.pack("c"); + DfsPackFileMidx midx = packPool.midx("midx", null, "a", "b", "c"); + + MidxPackList packList = MidxPackList.create(midx).edit().delete(b) + .build(); + assertEquals(List.of(c, a), packList.getAllPlainPacks()); + assertEquals(0, packList.getAllMidxPacks().size()); + } + + @Test + public void builder_delete_singlePackMidx() { + DfsPackFile a = packPool.pack("a"); + DfsPackFileMidx midx = packPool.midx("midx", null, "a"); + + MidxPackList packList = MidxPackList.create(midx).edit().delete(a) + .build(); + assertEquals(List.of(), packList.getAllPlainPacks()); + assertEquals(0, packList.getAllMidxPacks().size()); + } + + @Test + public void builder_delete_midxPlusOne_deleteUncovered() { + DfsPackFile a = packPool.pack("a"); + DfsPackFile b = packPool.pack("b"); + DfsPackFile c = packPool.pack("c"); + DfsPackFileMidx midx = packPool.midx("midx", null, "a", "b", "c"); + DfsPackFile d = packPool.pack("d"); + + MidxPackList deleteD = MidxPackList.create(d, midx).edit().delete(d) + .build(); + assertEquals(List.of(c, b, a), deleteD.getAllPlainPacks()); + assertEquals(midx, deleteD.getTopMidxPack()); + } + + @Test + public void builder_delete_midxPlusOne_deleteCovered() { + DfsPackFile a = packPool.pack("a"); + DfsPackFile b = packPool.pack("b"); + DfsPackFile c = packPool.pack("c"); + DfsPackFileMidx midx = packPool.midx("midx", null, "a", "b", "c"); + DfsPackFile d = packPool.pack("d"); + + MidxPackList deleteB = MidxPackList.create(d, midx).edit().delete(b) + .build(); + assertEquals(List.of(d, c, a), deleteB.getAllPlainPacks()); + assertEquals(0, deleteB.getAllMidxPacks().size()); + } + + @Test + public void builder_delete_nestedMidx() { + DfsPackFile a = packPool.pack("a"); + DfsPackFile b = packPool.pack("b"); + DfsPackFileMidx midxBase = packPool.midx("midxBase", null, "a", "b"); + DfsPackFile c = packPool.pack("c"); + DfsPackFile d = packPool.pack("d"); + DfsPackFileMidx midxMiddle = packPool.midx("midxMiddle", midxBase, "c", + "d"); + DfsPackFile e = packPool.pack("e"); + DfsPackFile f = packPool.pack("f"); + DfsPackFileMidx midxTip = packPool.midx("midxTip", midxMiddle, "e", + "f"); + + MidxPackList withoutF = MidxPackList.create(midxTip).edit().delete(f) + .build(); + assertEquals(List.of(e, d, c, b, a), withoutF.getAllPlainPacks()); + assertEquals(List.of(midxMiddle, midxBase), withoutF.getAllMidxPacks()); + assertEquals(midxMiddle, withoutF.getTopMidxPack()); + + MidxPackList withoutE = MidxPackList.create(midxTip).edit().delete(e) + .build(); + assertEquals(List.of(f, d, c, b, a), withoutE.getAllPlainPacks()); + assertEquals(List.of(midxMiddle, midxBase), withoutE.getAllMidxPacks()); + assertEquals(midxMiddle, withoutE.getTopMidxPack()); + assertEquals(Set.of(), withoutE.findAllCoveringMidxs(f)); + assertEquals(Set.of(midxMiddle, midxBase), + withoutE.findAllCoveringMidxs(a)); + + MidxPackList withoutD = MidxPackList.create(midxTip).edit().delete(d) + .build(); + assertEquals(List.of(f, e, c, b, a), withoutD.getAllPlainPacks()); + assertEquals(List.of(midxBase), withoutD.getAllMidxPacks()); + assertEquals(midxBase, withoutD.getTopMidxPack()); + + MidxPackList withoutC = MidxPackList.create(midxTip).edit().delete(c) + .build(); + assertEquals(List.of(f, e, d, b, a), withoutC.getAllPlainPacks()); + assertEquals(List.of(midxBase), withoutC.getAllMidxPacks()); + assertEquals(midxBase, withoutC.getTopMidxPack()); + assertEquals(Set.of(), withoutC.findAllCoveringMidxs(f, e, d, c)); + assertEquals(Set.of(midxBase), withoutC.findAllCoveringMidxs(a)); + + MidxPackList withoutB = MidxPackList.create(midxTip).edit().delete(b) + .build(); + assertEquals(List.of(f, e, d, c, a), withoutB.getAllPlainPacks()); + assertEquals(List.of(), withoutB.getAllMidxPacks()); + assertEquals(null, withoutB.getTopMidxPack()); + + MidxPackList withoutA = MidxPackList.create(midxTip).edit().delete(a) + .build(); + assertEquals(List.of(f, e, d, c, b), withoutA.getAllPlainPacks()); + assertEquals(List.of(), withoutA.getAllMidxPacks()); + assertEquals(null, withoutA.getTopMidxPack()); + assertEquals(Set.of(), withoutA.findAllCoveringMidxs(f, e, d, c, b)); + } + + @Test + public void builder_delete_nestedMidx_multipleDeletes() throws Exception { + DfsPackFile a = packPool.pack("a"); + DfsPackFile b = packPool.pack("b"); + DfsPackFileMidx midxBase = packPool.midx("midxBase", null, "a", "b"); + DfsPackFile c = packPool.pack("c"); + DfsPackFile d = packPool.pack("d"); + DfsPackFileMidx midxMiddle = packPool.midx("midxMiddle", midxBase, "c", + "d"); + DfsPackFile e = packPool.pack("e"); + DfsPackFile f = packPool.pack("f"); + DfsPackFileMidx midxTip = packPool.midx("midxTip", midxMiddle, "e", + "f"); + + { + MidxPackList deleteFromTopAndMiddle = MidxPackList.create(midxTip) + .edit().delete(e).delete(d).build(); + assertEquals(List.of(f, c, b, a), + deleteFromTopAndMiddle.getAllPlainPacks()); + assertEquals(List.of(midxBase), + deleteFromTopAndMiddle.getAllMidxPacks()); + assertEquals(midxBase, deleteFromTopAndMiddle.getTopMidxPack()); + } + { + MidxPackList deleteFromMiddleAndTop = MidxPackList.create(midxTip) + .edit().delete(d).delete(e).build(); + assertEquals(List.of(f, c, b, a), + deleteFromMiddleAndTop.getAllPlainPacks()); + assertEquals(List.of(midxBase), + deleteFromMiddleAndTop.getAllMidxPacks()); + assertEquals(midxBase, deleteFromMiddleAndTop.getTopMidxPack()); + } + { + MidxPackList deleteAllFromMidx = MidxPackList.create(midxTip).edit() + .delete(d).delete(c).build(); + assertEquals(List.of(f, e, b, a), + deleteAllFromMidx.getAllPlainPacks()); + assertEquals(List.of(midxBase), + deleteAllFromMidx.getAllMidxPacks()); + assertEquals(midxBase, deleteAllFromMidx.getTopMidxPack()); + } + } private static final class PackPool { private static final DfsRepositoryDescription repoDesc = new DfsRepositoryDescription(
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryResolveTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryResolveTest.java index 7f1dfc3..2773715 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryResolveTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryResolveTest.java
@@ -277,6 +277,7 @@ public void invalidNames() throws AmbiguousObjectException, IOException { assertTrue(Repository.isValidRefName("x/a]b")); // odd, yes.. assertTrue(Repository.isValidRefName("x/\u00a0")); // unicode is fine, // even hard space + assertFalse(Repository.isValidRefName("single-component")); assertFalse(Repository.isValidRefName("x/.a")); assertFalse(Repository.isValidRefName("x/a.")); assertFalse(Repository.isValidRefName("x/a..b"));
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackTest.java index 595b970..bcc7082 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackTest.java
@@ -42,22 +42,57 @@ package org.eclipse.jgit.transport; +import java.util.ArrayList; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; - -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.eclipse.jgit.errors.PackProtocolException; import org.eclipse.jgit.internal.JGitText; +import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription; +import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository; +import org.eclipse.jgit.junit.TestRepository; +import org.eclipse.jgit.junit.TestRepository.BranchBuilder; +import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.transport.ReceiveCommand.Result; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; +import org.junit.After; +import org.junit.Before; import org.junit.Test; /** Tests for receive-pack utilities. */ public class ReceivePackTest { + private URIish uri; + private TestProtocol<Object> testProtocol; + private InMemoryRepository client; + private InMemoryRepository server; + private TestRepository clientTestRepo; + private TestRepository serverTestRepo; + + @Before + public void setUp() throws Exception { + client = new InMemoryRepository(new DfsRepositoryDescription("client")); + server = new InMemoryRepository(new DfsRepositoryDescription("server")); + clientTestRepo = new TestRepository<>(client); + serverTestRepo = new TestRepository<>(server); + + testProtocol = new TestProtocol<>(null, (Object req, Repository db) -> { + ReceivePack rp = new ReceivePack(db); + return rp; + }); + uri = testProtocol.register(new Object(), server); + } + + @After + public void tearDown() { + Transport.unregister(testProtocol); + } + @Test public void parseCommand() throws Exception { String o = "0000000000000000000000000000000000000000"; @@ -81,6 +116,54 @@ public void parseCommand() throws Exception { assertParseCommandFails(o + " " + "X" + n.substring(1) + " " + r); } + /** + * Ensure receive-pack rejects a push to a one level ref (refs/master). + */ + @Test + public void rejectsCreationOfOneLevelRef() throws Exception { + // Create refs/master on the client so we can attempt to push it + RevCommit clientCommit; + BranchBuilder bb = clientTestRepo.branch("refs/master"); + clientCommit = bb.commit().noFiles().message("Testing").create(); + + ArrayList<RemoteRefUpdate> refUpdates = new ArrayList<>(); + refUpdates.add(new RemoteRefUpdate( + clientTestRepo.getRepository(), "refs/master", clientCommit, + "refs/master", false, /* force update */ + null, /* no local tracking ref */ + ObjectId.zeroId() // expected advertisement + )); + Transport tn = testProtocol.open(uri, client, "server"); + PushResult result = tn.push(NullProgressMonitor.INSTANCE, refUpdates); + RemoteRefUpdate update = result.getRemoteUpdate("refs/master"); + + assertEquals(RemoteRefUpdate.Status.REJECTED_OTHER_REASON, + update.getStatus()); + assertEquals(JGitText.get().funnyRefname, update.getMessage()); + } + + /** + * Allow deletion of one level refs (refs/master). + */ + @Test + public void acceptsDeletionOfOneLevelRef() throws Exception { + BranchBuilder bb = serverTestRepo.branch("refs/master"); + bb.update(bb.commit().noFiles().message("Testing").create()); + + ArrayList<RemoteRefUpdate> refUpdates = new ArrayList<>(); + refUpdates.add(new RemoteRefUpdate(null, null, ObjectId.zeroId(), + "refs/master", false, // force update + null, // no local tracking ref + null // expected advertisement + )); + Transport tn = testProtocol.open(uri, client, "server"); + PushResult result = tn.push(NullProgressMonitor.INSTANCE, refUpdates); + RemoteRefUpdate update = result.getRemoteUpdate("refs/master"); + + assertEquals(RemoteRefUpdate.Status.OK, update.getStatus()); + assertEquals(null, update.getMessage()); + } + private void assertParseCommandFails(String input) { try { ReceivePack.parseCommand(input);
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FilterCommandsTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FilterCommandsTest.java index 0513da2..f7dab12 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FilterCommandsTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FilterCommandsTest.java
@@ -16,8 +16,11 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.file.Files; import java.util.HashSet; +import java.util.Random; import java.util.Set; +import java.util.concurrent.ThreadLocalRandom; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.MergeResult; @@ -70,6 +73,33 @@ public int run() throws IOException { } } + private static class NoOpCommandFactory implements FilterCommandFactory { + + @Override + public FilterCommand create(Repository db, InputStream in, + OutputStream out) throws IOException { + return new FilterCommand(in, out) { + + private byte[] buf = new byte[32 * 1024]; + + @Override + public int run() throws IOException { + int n = in.read(buf); + if (n < 0) { + in.close(); + out.close(); + return -1; + } + if (n > 0) { + out.write(buf, 0, n); + } + return n; + } + + }; + } + } + @Override @Before public void setUp() throws Exception { @@ -149,6 +179,46 @@ public void testBuiltinCleanFilter() throws Exception { } @Test + public void testCleanLargeFile() throws Exception { + String builtinCommandName = "jgit://builtin/test/clean"; + FilterCommandRegistry.register(builtinCommandName, + new NoOpCommandFactory()); + StoredConfig config = git.getRepository().getConfig(); + config.setString("filter", "test", "clean", builtinCommandName); + config.save(); + + writeTrashFile(".gitattributes", "*.bin filter=test"); + git.add().addFilepattern(".gitattributes").call(); + git.commit().setMessage("add filter").call(); + + File f = new File(git.getRepository().getWorkTree(), "a.bin"); + long length = 0; + try (OutputStream out = Files.newOutputStream(f.toPath())) { + byte[] buf = new byte[8 * 1024]; + Random r = ThreadLocalRandom.current(); + while (length < TemporaryBuffer.DEFAULT_IN_CORE_LIMIT) { + r.nextBytes(buf); + buf[0] = 0; + out.write(buf); + length += buf.length; + } + // Write a few bytes extra, just so that we don't have a + // multiple of 8k, and we're beyond the in-memory limit. + r.nextBytes(buf); + out.write(buf, 0, 19); + length += 19; + } + + fsTick(f); + git.add().addFilepattern("a.bin").call(); + assertEquals( + "[.gitattributes, mode:100644, length:17]" + + "[Test.txt, mode:100644, length:11]" + + "[a.bin, mode:100644, length:" + length + "]", + indexState(LENGTH)); + } + + @Test public void testBuiltinSmudgeFilter() throws IOException, GitAPIException { String builtinCommandName = "jgit://builtin/test/smudge"; FilterCommandRegistry.register(builtinCommandName,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackCompactor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackCompactor.java index 722c7ec..fbe641e 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackCompactor.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackCompactor.java
@@ -20,11 +20,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; -import java.util.stream.Collectors; import org.eclipse.jgit.annotations.Nullable; import org.eclipse.jgit.errors.IncorrectObjectTypeException; @@ -64,11 +64,8 @@ */ public class DfsPackCompactor { private final DfsRepository repo; - - private final List<DfsPackDescription> inputDescsPacks; - - private final List<DfsPackDescription> inputDescsReftables; - + private final List<DfsPackFile> srcPacks; + private final List<DfsReftable> srcReftables; private final List<ObjectIdSet> exclude; private final List<DfsPackDescription> prune; @@ -146,8 +143,8 @@ public DfsPackCompactor setPreCommitHook(PreCommitHook hook) { */ public DfsPackCompactor(DfsRepository repository) { repo = repository; - inputDescsPacks = new ArrayList<>(); - inputDescsReftables = new ArrayList<>(); + srcPacks = new ArrayList<>(); + srcReftables = new ArrayList<>(); exclude = new ArrayList<>(4); prune = new ArrayList<>(); } @@ -178,7 +175,8 @@ public DfsPackCompactor setReftableConfig(ReftableConfig cfg) { * @return {@code this} */ public DfsPackCompactor add(DfsPackFile pack) { - return addPack(pack.getPackDescription()); + srcPacks.add(pack); + return this; } /** @@ -189,54 +187,7 @@ public DfsPackCompactor add(DfsPackFile pack) { * @return {@code this} */ public DfsPackCompactor add(DfsReftable table) { - return addReftable(table.getPackDescription()); - } - - /** - * Add a pack to be compacted - * <p> - * This adds the objects in the pack to the compaction. If the description - * has reftables, they are ignored. Caller must explicitely call - * {@link #addReftable(DfsPackDescription)} with the same description to - * include them. - * <p> - * This method creates DfsPackFile instances when needed and can close them - * as soon as is done with them. This reduces the peak memory while - * processing many files. - * - * @param desc - * a pack description to combine. - * @return {@code this} - * @since 7.7 - */ - public DfsPackCompactor addPack(DfsPackDescription desc) { - if (!desc.hasFileExt(PACK)) { - throw new IllegalArgumentException( - "Adding for pack compaction a pack without data"); - } - inputDescsPacks.add(desc); - return this; - } - - /** - * Add a reftable to be compacted. - * <p> - * This adds the reftables in the pack to the compaction. If the description - * has pack data (objects), they are ignored. Caller must explicitely call - * {@link #addPack(DfsPackDescription)} with the same description to include - * them. - * - * @param desc - * a pack description to combine. - * @return {@code this} - * @since 7.7 - */ - public DfsPackCompactor addReftable(DfsPackDescription desc) { - if (!desc.hasFileExt(REFTABLE)) { - throw new IllegalArgumentException( - "Adding for reftable compaction a pack without reftables"); - } - inputDescsReftables.add(desc); + srcReftables.add(table); return this; } @@ -297,7 +248,7 @@ public void compact(ProgressMonitor pm) throws IOException { DfsObjDatabase objdb = repo.getObjectDatabase(); try (DfsReader ctx = objdb.newReader()) { - if (reftableConfig != null && !inputDescsReftables.isEmpty()) { + if (reftableConfig != null && !srcReftables.isEmpty()) { compactReftables(ctx); } compactPacks(ctx, pm); @@ -362,24 +313,18 @@ private long estimatePackSize() { // Include the final pack file header and trailer size here and ignore // the same from individual pack files. long size = 32; - for (DfsPackDescription desc : inputDescsPacks) { - if (desc.hasFileExt(PACK)) { - size += desc.getFileSize(PACK) - 32; - } + for (DfsPackFile pack : srcPacks) { + size += pack.getPackDescription().getFileSize(PACK) - 32; } return size; } private void compactReftables(DfsReader ctx) throws IOException { DfsObjDatabase objdb = repo.getObjectDatabase(); - Collections.sort(inputDescsReftables, - DfsPackDescription.reftableComparator()); - List<DfsReftable> tables = inputDescsReftables.stream() - .map(desc -> new DfsReftable(DfsBlockCache.getInstance(), desc)) - .collect(Collectors.toList()); + Collections.sort(srcReftables, objdb.reftableComparator()); initOutDesc(objdb); - try (DfsReftableStack stack = DfsReftableStack.open(ctx, tables); + try (DfsReftableStack stack = DfsReftableStack.open(ctx, srcReftables); DfsOutputStream out = objdb.writeFile(outDesc, REFTABLE)) { ReftableCompactor compact = new ReftableCompactor(out); compact.addAll(stack.readers()); @@ -403,11 +348,14 @@ private void initOutDesc(DfsObjDatabase objdb) throws IOException { * @return all of the source packs that fed into this compaction. */ public Collection<DfsPackDescription> getSourcePacks() { - HashSet<DfsPackDescription> all = new HashSet<>( - inputDescsPacks.size() + inputDescsReftables.size()); - all.addAll(inputDescsPacks); - all.addAll(inputDescsReftables); - return all; + Set<DfsPackDescription> src = new HashSet<>(); + for (DfsPackFile pack : srcPacks) { + src.add(pack.getPackDescription()); + } + for (DfsReftable table : srcReftables) { + src.add(table.getPackDescription()); + } + return src; } /** @@ -435,8 +383,15 @@ public List<PackStatistics> getNewPackStatistics() { } private Set<DfsPackDescription> toPrune() { - Set<DfsPackDescription> packs = new HashSet<>(inputDescsPacks); - Set<DfsPackDescription> reftables = new HashSet<>(inputDescsReftables); + Set<DfsPackDescription> packs = new HashSet<>(); + for (DfsPackFile pack : srcPacks) { + packs.add(pack.getPackDescription()); + } + + Set<DfsPackDescription> reftables = new HashSet<>(); + for (DfsReftable table : srcReftables) { + reftables.add(table.getPackDescription()); + } for (Iterator<DfsPackDescription> i = packs.iterator(); i.hasNext();) { DfsPackDescription d = i.next(); @@ -463,20 +418,49 @@ private Set<DfsPackDescription> toPrune() { private void addObjectsToPack(PackWriter pw, DfsReader ctx, ProgressMonitor pm) throws IOException, IncorrectObjectTypeException { + // Sort packs by description ordering, this places newer packs before + // older packs, allowing the PackWriter to be handed newer objects + // first and older objects last. + Collections.sort( + srcPacks, + Comparator.comparing( + DfsPackFile::getPackDescription, + DfsPackDescription.objectLookupComparator())); + rw = new RevWalk(ctx); added = rw.newFlag("ADDED"); //$NON-NLS-1$ isBase = rw.newFlag("IS_BASE"); //$NON-NLS-1$ List<RevObject> baseObjects = new BlockList<>(); pm.beginTask(JGitText.get().countingObjects, ProgressMonitor.UNKNOWN); + for (DfsPackFile src : srcPacks) { + List<ObjectIdWithOffset> want = toInclude(src, ctx); + if (want.isEmpty()) + continue; - inputDescsPacks.sort(DfsPackDescription.objectLookupComparator()); - for (DfsPackDescription desc : inputDescsPacks) { - DfsPackFile src = repo.getObjectDatabase() - .createDfsPackFile(DfsBlockCache.getInstance(), desc); - addObjectFromPack(pw, ctx, pm, src, baseObjects); + PackReverseIndex rev = src.getReverseIdx(ctx); + DfsObjectRepresentation rep = new DfsObjectRepresentation(src); + for (ObjectIdWithOffset id : want) { + int type = src.getObjectType(ctx, id.offset); + RevObject obj = rw.lookupAny(id, type); + if (obj.has(added)) + continue; + + pm.update(1); + pw.addObject(obj); + obj.add(added); + + src.fillRepresentation(rep, id.offset, ctx, rev); + if (rep.getFormat() != PACK_DELTA) + continue; + + RevObject base = rw.lookupAny(rep.getDeltaBase(), type); + if (!base.has(added) && !base.has(isBase)) { + baseObjects.add(base); + base.add(isBase); + } + } } - for (RevObject obj : baseObjects) { if (!obj.has(added)) { pm.update(1); @@ -487,37 +471,6 @@ private void addObjectsToPack(PackWriter pw, DfsReader ctx, pm.endTask(); } - private void addObjectFromPack(PackWriter pw, DfsReader ctx, - ProgressMonitor pm, DfsPackFile src, List<RevObject> baseObjects) - throws IOException { - List<ObjectIdWithOffset> want = toInclude(src, ctx); - if (want.isEmpty()) - return; - - PackReverseIndex rev = src.getReverseIdx(ctx); - DfsObjectRepresentation rep = new DfsObjectRepresentation(src); - for (ObjectIdWithOffset id : want) { - int type = src.getObjectType(ctx, id.offset); - RevObject obj = rw.lookupAny(id, type); - if (obj.has(added)) - continue; - - pm.update(1); - pw.addObject(obj); - obj.add(added); - - src.fillRepresentation(rep, id.offset, ctx, rev); - if (rep.getFormat() != PACK_DELTA) - continue; - - RevObject base = rw.lookupAny(rep.getDeltaBase(), type); - if (!base.has(added) && !base.has(isBase)) { - baseObjects.add(base); - base.add(isBase); - } - } - } - private List<ObjectIdWithOffset> toInclude(DfsPackFile src, DfsReader ctx) throws IOException { PackIndex srcIdx = src.getPackIndex(ctx);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java index d4fe566..7a3c139 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java
@@ -367,6 +367,19 @@ public long getFileSize(PackExt ext) { } /** + * Get total size of the pack, including indexes + * + * @return the size of the pack and all its extensions + */ + public long getTotalFileSize() { + long result = 0; + for (long sz : sizeMap) { + result += sz; + } + return result; + } + + /** * Get blockSize of the file, in bytes. * * @param ext
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java index 70c9b85..d60ca1e 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java
@@ -21,6 +21,7 @@ import java.util.Queue; import java.util.Set; import java.util.TreeSet; +import java.util.stream.Collectors; import org.eclipse.jgit.annotations.Nullable; @@ -209,6 +210,151 @@ public List<DfsPackFile> getPlainPacksNotCoveredBy( .toList(); } + /** + * Get a builder to add/remove packs from the list + * + * @return the builder + */ + public Builder edit() { + return new Builder(packs); + } + + /** + * Builder to mutate the list of packs. + * + * It removes midxs from the list as packs are removed, to maintain a valid + * view of the packlist + */ + public final static class Builder { + + private final List<DfsPackFile> packList; + + private Builder(List<DfsPackFile> packs) { + this.packList = new ArrayList<>(packs); + } + + /** + * Add pack to the packlist + * + * @param toAdd + * pack to add + * @return this builder + */ + public Builder add(DfsPackFile toAdd) { + packList.add(toAdd); + return this; + } + + /** + * Delete the pack from the pack list + * + * Including any midx covering it directly or indirectly + * + * @param toDelete + * a pack to remove from the list + * @return this builder + */ + public Builder delete(DfsPackFile toDelete) { + // Check first top-level packs. In compact these are the most + // common packages being replaced. + DfsPackDescription toDeleteDesc = toDelete.getPackDescription(); + for (int i = 0; i < packList.size(); i++) { + if (packList.get(i).getPackDescription().equals(toDeleteDesc)) { + packList.remove(i); + return this; + } + } + + // If the pack is not "top-level", it may be covered by midx. + // We need to remove the pack, its covering midxs, but keep the + // other covered packs in their place. + // e.g. in the chain midx3(E, F) -> midx2 (C, D), -> midx(A, B), + // deleting C from midx3 produces: [F, E, D, midx(A, B)] + for (int i = packList.size() - 1; i >= 0; i--) { + if (!packList.get(i).getPackDescription() + .hasFileExt(MULTI_PACK_INDEX)) { + continue; + } + + DfsPackFileMidx midx = (DfsPackFileMidx) packList.get(i); + if (!containsAny(midx.getAllCoveredPacks(), + List.of(toDelete))) { + continue; + } + + List<DfsPackFile> replacement = getPacksToReplaceMidx(midx, + toDelete); + if (replacement != null) { + packList.remove(i); + if (!replacement.isEmpty()) { + packList.addAll(i, replacement); + } + } + } + + return this; + } + + /** + * Return the list of packs that replace a midx if we remove a pack + * + * When the pack is removed, any midx covering it (and above in the + * chain) is invalid. Each invalid midx is replaced with its covered + * packs (excluding the deleted pack) + * + * @param midx + * the midx + * @param toDelete + * the pack to remove + * @return the resulting list of packs after removing the pack. It can + * be null (nothing to change), empty (replace with nothing, + * i.e. delete the midx) or a list of packs + */ + @Nullable + private List<DfsPackFile> getPacksToReplaceMidx(DfsPackFileMidx midx, + DfsPackFile toDelete) { + List<DfsPackFile> result = new ArrayList<>(); + DfsPackFileMidx current = midx; + while (current != null) { + if (containsAny(current.getCoveredPacks(), List.of(toDelete))) { + List<DfsPackFile> otherCovered = current.getCoveredPacks() + .stream() + .filter(coveredPack -> !coveredPack + .getPackDescription() + .equals(toDelete.getPackDescription())) + .collect(Collectors.toCollection(ArrayList::new)); + Collections.reverse(otherCovered); + result.addAll(otherCovered); + if (current.getMultipackIndexBase() != null) { + result.add(current.getMultipackIndexBase()); + } + return result; + } + + // The deleted pack must be in the base of this midx, and it + // wil invalidate this one. Add all its covered packs to the + // result. + List<DfsPackFile> tmp = new ArrayList<>( + current.getCoveredPacks()); + Collections.reverse(tmp); + result.addAll(tmp); + current = current.getMultipackIndexBase(); + } + + // We didn't find the pack to delete in this midx chain + return null; + } + + /** + * Create a new pack list with the modifications + * + * @return a new packlist with the changes applied + */ + public MidxPackList build() { + return new MidxPackList(packList); + } + } + private static boolean containsAny(List<DfsPackFile> inMidx, List<DfsPackFile> queryPacks) { Set<DfsPackFile> inMidxSet = asSet(inMidx);
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 6a78271..7885794 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
@@ -1995,6 +1995,9 @@ private String getProcDesc() { } private long getPID() { + if (SystemReader.getInstance().isAndroid()) { + return 0; + } return ProcessHandle.current().pid(); }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java index 4e299e6..7aaf817 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java
@@ -421,6 +421,7 @@ public boolean shouldBeKept() { * @throws IOException * the pack file or the index could not be read. */ + @Nullable ObjectLoader get(WindowCursor curs, AnyObjectId id) throws IOException { final long offset = idx().findOffset(id); @@ -1272,6 +1273,7 @@ long getObjectSize(WindowCursor curs, long pos) } } + @Nullable LocalObjectRepresentation representation(final WindowCursor curs, final AnyObjectId objectId) throws IOException { final long pos = idx().findOffset(objectId);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackMidx.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackMidx.java index 672d0bc..7bf187f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackMidx.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackMidx.java
@@ -23,14 +23,11 @@ import java.util.Optional; import java.util.Set; import java.util.function.Function; -import java.util.stream.Collectors; import java.util.zip.DataFormatException; -import org.eclipse.jgit.errors.CorruptObjectException; +import org.eclipse.jgit.annotations.Nullable; import org.eclipse.jgit.errors.LargeObjectException; -import org.eclipse.jgit.errors.MissingObjectException; import org.eclipse.jgit.errors.PackInvalidException; -import org.eclipse.jgit.errors.PackMismatchException; import org.eclipse.jgit.internal.storage.midx.MidxMetadataReader; import org.eclipse.jgit.internal.storage.midx.MultiPackIndex; import org.eclipse.jgit.internal.storage.midx.MultiPackIndexLoader; @@ -47,7 +44,7 @@ /** * A pack that uses internally a midx - * + * <p> * This pack answers what it can directly from the midx (e.g. hasObject) and * sends to the right pack other calls (e.g. reading the actual object). */ @@ -92,7 +89,7 @@ public PackMidx(Config cfg, File midxFile, List<Pack> knownPacks) Function.identity())); packsInIdOrder = Arrays.stream(packNames).map(knownPacksByName::get) .filter(Objects::nonNull) - .collect(Collectors.toUnmodifiableList()); + .toList(); if (packsInIdOrder.size() != packNames.length) { throw new IOException("Midx refers to packs not in the pack list"); //$NON-NLS-1$ } @@ -118,11 +115,6 @@ public List<Pack> getCoveredPacks() { } @Override - public PackFile getPackFile() { - return super.getPackFile(); - } - - @Override protected List<Pack> fullyIncludedIn(BitmapIndex.BitmapBuilder needBitmaps) throws IOException { PackBitmapIndex bitmapIndex = getBitmapIndex(); @@ -171,7 +163,7 @@ public boolean hasObjectSizeIndex() throws IOException { } @Override - public long getObjectSizeIndexCount() throws IOException { + public long getObjectSizeIndexCount() { throw new UnsupportedOperationException(); } @@ -191,6 +183,7 @@ public boolean shouldBeKept() { } @Override + @Nullable ObjectLoader get(WindowCursor curs, AnyObjectId id) throws IOException { MultiPackIndex.PackOffset packOffset = getMidx().find(id); if (packOffset == null) { @@ -245,7 +238,7 @@ ObjectId getPackChecksum() { try { return ObjectId.fromRaw(getMidx().getChecksum()); } catch (IOException e) { - throw new RuntimeException(e); + throw new UncheckedIOException(e); } } @@ -278,12 +271,18 @@ boolean endWindowCache() { @Override ByteArrayWindow read(long pos, int size) throws IOException { MultiPackIndex.PackOffset po = offsetCalculator.decode(pos); + if (po == null) { + throw new IllegalArgumentException("Invalid offset " + pos); + } return packsInIdOrder.get(po.getPackId()).read(po.getOffset(), size); } @Override ByteWindow mmap(long pos, int size) throws IOException { MultiPackIndex.PackOffset po = offsetCalculator.decode(pos); + if (po == null) { + throw new IllegalArgumentException("Invalid offset " + pos); + } return packsInIdOrder.get(po.getPackId()).mmap(po.getOffset(), size); } @@ -291,6 +290,9 @@ ByteWindow mmap(long pos, int size) throws IOException { ObjectLoader load(WindowCursor curs, long pos) throws IOException, LargeObjectException { MultiPackIndex.PackOffset po = offsetCalculator.decode(pos); + if (po == null) { + throw new IllegalArgumentException("Invalid offset " + pos); + } return packsInIdOrder.get(po.getPackId()).load(curs, po.getOffset()); } @@ -298,6 +300,9 @@ ObjectLoader load(WindowCursor curs, long pos) byte[] getDeltaHeader(WindowCursor wc, long pos) throws IOException, DataFormatException { MultiPackIndex.PackOffset po = offsetCalculator.decode(pos); + if (po == null) { + throw new IllegalArgumentException("Invalid offset " + pos); + } return packsInIdOrder.get(po.getPackId()).getDeltaHeader(wc, po.getOffset()); } @@ -305,6 +310,9 @@ ObjectLoader load(WindowCursor curs, long pos) @Override int getObjectType(WindowCursor curs, long pos) throws IOException { MultiPackIndex.PackOffset po = offsetCalculator.decode(pos); + if (po == null) { + throw new IllegalArgumentException("Invalid offset " + pos); + } return packsInIdOrder.get(po.getPackId()).getObjectType(curs, po.getOffset()); } @@ -322,11 +330,15 @@ long getObjectSize(WindowCursor curs, AnyObjectId id) throws IOException { @Override long getObjectSize(WindowCursor curs, long pos) throws IOException { MultiPackIndex.PackOffset po = offsetCalculator.decode(pos); + if (po == null) { + throw new IllegalArgumentException("Invalid offset " + pos); + } return packsInIdOrder.get(po.getPackId()).getObjectSize(curs, po.getOffset()); } @Override + @Nullable LocalObjectRepresentation representation(WindowCursor curs, AnyObjectId objectId) throws IOException { MultiPackIndex.PackOffset po = getMidx().find(objectId); @@ -391,6 +403,7 @@ long encode(int packId, long offset) { return accSizes[packId] + offset; } + @Nullable MultiPackIndex.PackOffset decode(long totalOffset) { if (totalOffset < 0) { return null; @@ -419,7 +432,7 @@ private static class MidxPackIndex implements PackIndex { @Override public Iterator<MutableEntry> iterator() { MultiPackIndex.MidxIterator it = midx.iterator(); - return new Iterator<MutableEntry>() { + return new Iterator<>() { private final MutableEntry me = new MutableEntry(); @@ -477,7 +490,7 @@ public int findPosition(AnyObjectId objId) { @Override public long findCRC32(AnyObjectId objId) - throws MissingObjectException, UnsupportedOperationException { + throws UnsupportedOperationException { throw new UnsupportedOperationException(); } @@ -488,7 +501,7 @@ public boolean hasCRC32Support() { @Override public void resolve(Set<ObjectId> matches, AbbreviatedObjectId id, - int matchLimit) throws IOException { + int matchLimit) { midx.resolve(matches, id, matchLimit); } @@ -512,9 +525,7 @@ private static final class MidxPackReverseIndex } @Override - public void verifyPackChecksum(String packFilePath) - throws PackMismatchException { - + public void verifyPackChecksum(String packFilePath) { } @Override @@ -525,8 +536,7 @@ public ObjectId findObject(long offset) { } @Override - public long findNextOffset(long offset, long maxOffset) - throws CorruptObjectException { + public long findNextOffset(long offset, long maxOffset) { throw new UnsupportedOperationException(); }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java index c9dc6da..01a4361 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
@@ -1375,6 +1375,8 @@ public RepositoryState getRepositoryState() { * * For portability reasons '\' is excluded * + * @see <a href="http://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html" + * >git-check-ref-format(1) manual page</a> * @param refName a {@link java.lang.String} object. * @return true if refName is a valid ref name */
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java index 8b05d41..c0ff5bf 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
@@ -222,6 +222,8 @@ public class ReceivePack { private boolean checkReferencedAreReachable; + private boolean retainParsedObjectIDs; + /** Git object size limit */ private long maxObjectSizeLimit; @@ -501,6 +503,27 @@ public void setCheckReferencedObjectsAreReachable(boolean b) { } /** + * Whether the {@code PackParser} should retain object IDs. + * + * @return {@code true} if the parsed object IDs should be retained. + * @since 7.7 + */ + public boolean isRetainParsedObjectIDs() { + return retainParsedObjectIDs; + } + + /** + * Set whether the {@code PackParser} should retain object IDs. + * + * @param retain + * {@code true} to retain the parsed object IDs. + * @since 7.7 + */ + public void setRetainParsedObjectIDs(boolean retain) { + this.retainParsedObjectIDs = retain; + } + + /** * Whether this class expects a bi-directional pipe opened between the * client and itself. * @@ -1547,7 +1570,7 @@ private void receivePack() throws IOException { parser = ins.newPackParser(packInputStream()); parser.setAllowThin(true); - parser.setNeedNewObjectIds(checkReferencedAreReachable); + parser.setNeedNewObjectIds(checkReferencedAreReachable || retainParsedObjectIDs); parser.setNeedBaseObjectIds(checkReferencedAreReachable); parser.setCheckEofAfterPackFooter(!biDirectionalPipe && !isExpectDataAfterPackFooter()); @@ -1658,6 +1681,18 @@ private void validateCommands() { continue; } + if (cmd.getRefName().startsWith(Constants.R_REFS) + && !Repository.isValidRefName( + cmd.getRefName().substring(Constants.R_REFS.length()) + ) + ) { + // Reject the creation of one level references such as + // refs/master to match cgit implementation. + cmd.setResult(Result.REJECTED_OTHER_REASON, + JGitText.get().funnyRefname); + continue; + } + if (ref != null) { // A well behaved client shouldn't have sent us a // create command for a ref we advertised to it. @@ -1753,8 +1788,18 @@ private void validateCommands() { } } - if (!cmd.getRefName().startsWith(Constants.R_REFS) - || !Repository.isValidRefName(cmd.getRefName())) { + if (!cmd.getRefName().startsWith(Constants.R_REFS)) { + cmd.setResult(Result.REJECTED_OTHER_REASON, + JGitText.get().funnyRefname); + } + + if (!Repository.isValidRefName(cmd.getRefName()) + // But accept deletion of one level refs (refs/main) + && !( + cmd.getType() == ReceiveCommand.Type.DELETE + && Repository.isValidRefName(cmd.getRefName().substring(Constants.R_REFS.length())) + ) + ) { cmd.setResult(Result.REJECTED_OTHER_REASON, JGitText.get().funnyRefname); }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java index ac76e83..f6def25 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
@@ -44,6 +44,7 @@ import org.eclipse.jgit.hooks.Hooks; import org.eclipse.jgit.hooks.PrePushHook; import org.eclipse.jgit.internal.JGitText; +import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectChecker; import org.eclipse.jgit.lib.ObjectId; @@ -1457,7 +1458,10 @@ public FetchResult fetch(final ProgressMonitor monitor, final FetchResult result = new FetchResult(); new FetchProcess(this, toFetch).execute(monitor, result, branch); - local.autoGC(monitor); + if (local.getConfig().getBoolean(ConfigConstants.CONFIG_FETCH_SECTION, + ConfigConstants.CONFIG_KEY_AUTOGC, true)) { + local.autoGC(monitor); + } return result; }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java index 0b7c620..763bf26 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
@@ -68,6 +68,8 @@ public abstract class SystemReader { private static volatile Boolean isLinux; + private static volatile Boolean isAndroid; + private static final String GIT_TRACE_PERFORMANCE = "GIT_TRACE_PERFORMANCE"; //$NON-NLS-1$ private static final boolean performanceTrace = initPerformanceTrace(); @@ -762,6 +764,25 @@ public boolean isLinux() { } /** + * Whether we are running on Android. + * + * @return true if we are running on Android. + * @since 7.7 + */ + public boolean isAndroid() { + if (isAndroid == null) { + String vendor = getProperty("java.vendor"); //$NON-NLS-1$ + if (vendor == null) { + isAndroid = Boolean.FALSE; + } else { + isAndroid = Boolean + .valueOf(vendor.toLowerCase().contains("android")); //$NON-NLS-1$ + } + } + return isAndroid.booleanValue(); + } + + /** * Whether performance trace is enabled * * @return whether performance trace is enabled
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/TemporaryBuffer.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/TemporaryBuffer.java index 0f45162..fdb2679 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/TemporaryBuffer.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/TemporaryBuffer.java
@@ -15,10 +15,12 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UncheckedIOException; +import java.nio.file.Files; import java.util.ArrayList; import org.eclipse.jgit.internal.JGitText; @@ -556,9 +558,10 @@ public void writeTo(OutputStream os, ProgressMonitor pm) @Override public InputStream openInputStream() throws IOException { - if (onDiskFile == null) + if (onDiskFile == null) { return super.openInputStream(); - return new FileInputStream(onDiskFile); + } + return Files.newInputStream(onDiskFile.toPath()); } @Override @@ -566,7 +569,8 @@ public InputStream openInputStreamWithAutoDestroy() throws IOException { if (onDiskFile == null) { return super.openInputStreamWithAutoDestroy(); } - return new FileInputStream(onDiskFile) { + return new FilterInputStream( + Files.newInputStream(onDiskFile.toPath())) { @Override public void close() throws IOException { super.close();
diff --git a/pom.xml b/pom.xml index 1d65343..e302de9 100644 --- a/pom.xml +++ b/pom.xml
@@ -130,13 +130,13 @@ <commons-compress-version>1.28.0</commons-compress-version> <osgi-core-version>6.0.0</osgi-core-version> <servlet-api-version>4.0.1</servlet-api-version> - <jetty-version>12.1.8</jetty-version> + <jetty-version>12.1.9</jetty-version> <japicmp-version>0.25.0</japicmp-version> <httpclient-version>4.5.14</httpclient-version> <httpcore-version>4.4.16</httpcore-version> - <slf4j-version>2.0.17</slf4j-version> + <slf4j-version>2.0.18</slf4j-version> <maven-javadoc-plugin-version>3.12.0</maven-javadoc-plugin-version> - <gson-version>2.13.2</gson-version> + <gson-version>2.14.0</gson-version> <bouncycastle-version>1.84</bouncycastle-version> <spotbugs-maven-plugin-version>4.9.8.2</spotbugs-maven-plugin-version> <maven-project-info-reports-plugin-version>3.9.0</maven-project-info-reports-plugin-version> @@ -899,7 +899,7 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.21.0</version> + <version>1.22.0</version> </dependency> <dependency> @@ -911,7 +911,7 @@ <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> - <version>2.21.0</version> + <version>2.22.0</version> </dependency> <dependency>
diff --git a/tools/maven-central/Pipfile b/tools/maven-central/Pipfile index cffba46..e34443d 100644 --- a/tools/maven-central/Pipfile +++ b/tools/maven-central/Pipfile
@@ -7,11 +7,11 @@ requests = "*" argparse = "*" pyyaml = "*" +urllib3 = ">=2.7.0" [dev-packages] flake8 = "*" black = "*" [requires] -python_version = "3.12" -python_full_version = "3.12.9" +python_version = "3.14"
diff --git a/tools/maven-central/Pipfile.lock b/tools/maven-central/Pipfile.lock index e566398..5839d92 100644 --- a/tools/maven-central/Pipfile.lock +++ b/tools/maven-central/Pipfile.lock
@@ -1,12 +1,11 @@ { "_meta": { "hash": { - "sha256": "096165cac35064650a41e592a40a9d1e13ae4022a1f6d43582534f1c3bf0dbf9" + "sha256": "28027cc52a42a1b801f3df250feac187373bed2c18fa6ddb4415dd6436ea4f2f" }, "pipfile-spec": 6, "requires": { - "python_full_version": "3.12.9", - "python_version": "3.12" + "python_version": "3.14" }, "sources": [ { @@ -251,11 +250,12 @@ }, "urllib3": { "hashes": [ - "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", - "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4" + "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", + "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897" ], - "markers": "python_version >= '3.9'", - "version": "==2.6.3" + "index": "pypi", + "markers": "python_version >= '3.10'", + "version": "==2.7.0" } }, "develop": {
diff --git a/tools/maven-central/README.md b/tools/maven-central/README.md index 0c40598..821a61c 100644 --- a/tools/maven-central/README.md +++ b/tools/maven-central/README.md
@@ -4,7 +4,7 @@ - you need to be a Eclipse JGit committer - install [jreleaser CLI](https://jreleaser.org/guide/latest/install.html) -- install [python 3.12](https://www.python.org/) +- install [python 3.14](https://www.python.org/) - install [pipenv](https://pipenv.pypa.io/en/latest/installation.html) we use below to setup a python virtualenv - we sign release tags and Maven artifacts using GPG. Follow [Git Tools - Signing Your Work](https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work) @@ -61,7 +61,7 @@ - prepare virtualenv for `download_release.py`: ``` $ cd tools/maven-central - $ pipenv --python 3.12 + $ pipenv --python 3.14 $ pipenv sync ``` - download a JGit release from repo.eclipse.org and create artifact signature files (`.asc`)