aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/lib
Commit message (Collapse)AuthorAgeFilesLines
* PersonIdent: Default to UTC in timezone parsingIvan Frade14 days1-2/+9
| | | | | | | | | | | The old method "getTimeZone(int tzOffset)" defaults to UTC if the offset is out of range, but the new "getZoneId(int tzOffset)" throws an exception. Return UTC if the offset is invalid, to keep the behavior consistent with older code. Change-Id: Iffe1980b3bd9c05ef2293635a1cbb493144afb79
* Add pack-refs command to the CLIYash Chaturvedi2024-11-221-0/+19
| | | | | | | | | | | | | This command can be used to optimize storage of references. For a RefDirectory database, it packs non-symbolic, loose refs into packed-refs. By default, only the references under '$GIT_DIR/refs/tags' are packed. The '--all' option can be used to pack all the references under '$GIT_DIR/refs'. For Reftable, all refs are compacted into a single table. Change-Id: I92e786403f8638d35ae3037844a7ad89e8959e02
* PersonIdent: Preserve the timezone when copying with new timeIvan Frade2024-11-201-1/+2
| | | | | | | | | | | The PersonIdent(PersonIdent,Date) constructor must create a copy with the same author/email/timezone but different time. When we changed the implementation to the new Instant/ZoneId version, we forgot to pass the timezone. This made fail some tests downstream. Pass the timezone when constructing the copy. Change-Id: Iaa979e6dbaa3c55d4c4d2040068ab8b03163cd4e
* PersonIdent: Revert @since of #getZoneIdIvan Frade2024-11-201-2/+1
| | | | | | | | | | | | In [1], the @since tag of #getZoneId was updated to 7.1 by mistake. The implementation of the method is different but the API hasn't changed. Revert the tag to 6.1, when the method was introduced. [1] https://gerrithub.io/c/eclipse-jgit/jgit/+/1204142/9/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java Change-Id: If71d763ac28d4ec02bfebb1e65f56227f44e027d
* PersonIdent: Use java.time instead of older Date and millisecondsIvan Frade2024-11-191-42/+99
| | | | | | | | | | | | | | | | | From errorprone: Date has a bad API that leads to bugs; prefer java.time.Instant or LocalDate. Replace the long with milliseconds and int with minutes offset with an Instant and a ZoneOffset. Create new constructors and deprecate variants with Date, milliseconds and minute offsets. When comparing instances of PersonIdent truncate the timestamp precision to 1 second since git commit timestamps are persisted with 1 second precision [1]. [1] https://git-scm.com/docs/git-commit#Documentation/git-commit.txt-Gitinternalformat Change-Id: Id4ba1f108e1ba0bfcdd87ba37c67e2d3cc7d254f
* Merge branch 'stable-7.1'Matthias Sohn2024-11-051-0/+7
|\ | | | | | | | | | | | | | | | | * stable-7.1: Add missing @since 7.1 to UploadPack#implies ResolveMerger: Allow setting the TreeWalk AttributesNodeProvider Add Union merge strategy support Change-Id: Ib1c1725578e522c88f80f050d221a517bf012017
| * Merge branch 'stable-7.0' into stable-7.1Matthias Sohn2024-11-051-0/+7
| |\ | | | | | | | | | | | | | | | | | | | | | * stable-7.0: ResolveMerger: Allow setting the TreeWalk AttributesNodeProvider Add Union merge strategy support Change-Id: I15674134f4c73ac2de514d4fac4a36fca7ed7b07
| | * Merge branch 'stable-6.10' into stable-7.0Matthias Sohn2024-11-051-0/+7
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.10: ResolveMerger: Allow setting the TreeWalk AttributesNodeProvider Add Union merge strategy support Change-Id: I0d768d793effd1deabb4807446a4f8c10a82ad74
| | | * Add Union merge strategy supportNasser Grainawi2024-11-041-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow users to specify the `union` strategy in their .gitattributes file in order to keep lines from both versions of a conflict [1]. [1] https://git-scm.com/docs/gitattributes.html#Documentation/gitattributes.txt-union Change-Id: I74cecceb2db819a8551b95fb10dfe7c2b160b709
* | | | [errorprone] BaseRepositoryBuilder: Use #split(sep, limit)Ivan Frade2024-11-011-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | String.split(String) and Pattern.split(CharSequence) have surprising behaviour [1]. We use one of the recommended replacements: #split(sep, limit). [1] https://errorprone.info/bugpattern/StringSplitter Change-Id: Ie1cf7590bd8660d21c79c5c3c1bc2765e5d9462b
* | | | [errorprone] RefDatabase: #getConflictingNames immutable returnIvan Frade2024-10-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Errorprone reports that: This method returns both mutable and immutable collections or maps from different paths. This may be confusing for users of the method. Return always an immutable collection. Change-Id: Id48f3645fd06c8bc72212af180d7d02c7e0b7632
* | | | Merge "Replace custom encoder Constants#encodeASCII by JDK implementation"Matthias Sohn2024-10-261-7/+13
|\ \ \ \ | |/ / / |/| | |
| * | | Replace custom encoder Constants#encodeASCII by JDK implementationMatthias Sohn2024-09-061-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensure that the method still throws an IllegalArgumentException for malformed input or if the String contains unmappable characters. Change-Id: I6a340aa1af60c315272ff13b6bf2041ba30c94ca
* | | | SSH signing: prepare configThomas Wolf2024-10-222-0/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Include the SSH specifics in the GpgConfig so that we will have access to these configs later on. Change-Id: Iad3d6f2bdb5ba879e1672368c82d367b8ccd246c Signed-off-by: Thomas Wolf <twolf@apache.org>
* | | | DfsReaderOptions: read loadRevIndexInParallel from configIvan Frade2024-10-111-0/+7
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | The options have the field but it isn't loaded from the config. This forces a workaround downstream. Read the option from the config, as the others. Change-Id: I7720812e0577d8f45f6b7f5b8495a8b64729125e
* / / Replace custom encoder `Constants#encode` by JDK implementationMatthias Sohn2024-09-061-12/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using the implementation provided in the JDK since Java 1.6 by `String#getBytes(Charset)` reduces JGit maintenance effort and improves performance. The method Constants#encode was implemented when JGit still used Java 1.5. See [1]. Kudos to Marcin for proposing to use this improvement in RefWriter [2]. I think it should be used generally. [1] https://repo.or.cz/jgit.git?a=commit;h=bfa3da225f198b19061158499b1135aff07d85b3 [2] https://eclipse.gerrithub.io/c/eclipse-jgit/jgit/+/1195180 Also-By: Marcin Czech <maczech@gmail.com> Change-Id: I361ed6286b98351a315b8a8ffc3cb845831d35b2
* | Remove deprecated TagBuilder#toByteArray methodMatthias Sohn2024-09-031-17/+0
| | | | | | | | Change-Id: I14e78bcd4bbdb491bcc44a53ff19609b79c0831b
* | Remove deprecated Repository#hasObject(AnyObjectId) methodMatthias Sohn2024-09-031-19/+0
| | | | | | | | Change-Id: I473dff6bdc23cfb126d22e18c168390a0e21301d
* | Make deprecated Repository#peel(Ref) privateMatthias Sohn2024-09-031-3/+1
| | | | | | | | Change-Id: I1c16196bba00a5d0f54c10261cc08185305ba4a3
* | Remove deprecated RefDatabase#getRef(String) methodMatthias Sohn2024-09-031-17/+0
| | | | | | | | Change-Id: I89f42db2b9dabee18d4220457436b9f9b6340f50
* | CoreConfig: remove deprecated #isLogAllRefUpdates methodMatthias Sohn2024-09-031-19/+0
| | | | | | | | Change-Id: I4e5f96696b57512488f48e66a82760b2e8671878
* | Constants: remove deprecated #CHARSET and #CHARACTER_ENCODINGMatthias Sohn2024-09-031-23/+1
| | | | | | | | Change-Id: If2d3c1a96560e0bc5e352bdbcab4c191cbed1a42
* | Remove deprecated ConfigConstants#CONFIG_KEY_STREAM_FILE_TRESHOLDMatthias Sohn2024-09-031-6/+0
| | | | | | | | Change-Id: I3521ba8f8456160bd18ccb22c7d4a131aaac4ff2
* | Remove deprecated CommitBuilder#setEncoding(String) methodMatthias Sohn2024-09-031-13/+0
| | | | | | | | Change-Id: I5bd8d0c292151bfa58325d51ef51928715871cf1
* | Remove deprecated static #equals(AnyObjectId, AnyObjectId) methodMatthias Sohn2024-09-031-17/+0
| | | | | | | | Change-Id: I72544d2b3c85b8f96c2b8f94b86fb9b362f09475
* | ObjectId: Add method to read an ObjectId from a ByteBufferIvan Frade2024-08-291-0/+17
| | | | | | | | | | | | | | | | | | Some storages return data in a convenient ByteBuffer wrapper, but there is no straigh-forward method to read ObjectIds from it. Add ObjectId#fromRaw(ByteBuffer) to read object ids from byte buffers. Change-Id: Ia3b244005e4d9a613294f5ad9dab3b8e7bc3d7df
* | Signing: refactor interfacesThomas Wolf2024-08-2413-605/+675
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a big API-breaking change cleaning up the signing interfaces. Initially, these interfaces were GPG/OpenPGP-specific. When EGit added new signers and signature verifiers that called an external GPG executable, they were found inadequate and were extended to be able to pass in the GpgConfig to get access to the "gpg.program" setting. With the introduction of X.509 S/MIME signing, it was discovered that the interfaces were still not quite adequate, and the "Gpg" prefix on the class names were confusing. Since 7.0 is a major version bump, I'm taking this chance to overhaul these interfaces from ground up. For signing, there is a new Signer interface. With it goes a SignerFactory SPI interface, and a final Signers class managing the currently set signers. By default, signers for the different signature types are created from the signer factories, which are discovered via the ServiceLoader. External code can install its own signers, overriding the default factories. For signature verification, exactly the same mechanism is used. This simplifies the setup of signers and signature verifiers, and makes it all more regular. Signer instances just get a byte[] to sign and don't have to worry about ObjectBuilders at all. SignatureVerifier instances also just get the data and signature as byte[] and don't have to worry about extracting the signature from a commit or tag, or about what kind of signature it is. Both Signers and SignatureVerifiers always get passed the Repository and the GpgConfig. The repository will be needed in an implementation for SSH signatures because gpg.ssh.* configs may need to be loaded explicitly, and some of those values need the current workspace location. For signature verification, there is exactly one place in core JGit in SignatureVerifiers that extracts signatures, determines the signature type, and then calls the right signature verifier. Change RevTag to recognize all signature types known in git (GPG, X509, and SSH). Change-Id: I26d2731e7baebb38976c87b7f328b63a239760d5 Signed-off-by: Thomas Wolf <twolf@apache.org>
* | GpgConfig: Add missing @sinceThomas Wolf2024-08-211-1/+5
| | | | | | | | Change-Id: Ie56e7d8f2defe10a87565056a1763288d5b1e1a6 Signed-off-by: Thomas Wolf <twolf@apache.org>
* | ConfigConstants: Add missing @since 7.0Thomas Wolf2024-08-101-1/+5
| | | | | | | | Change-Id: I1ea31c1f0735b7c8fd09fbedc413d613e4baa803 Signed-off-by: Thomas Wolf <twolf@apache.org>
* | Lib: Fix ssh value for gpg.format throwing an IllegalArgumentExceptiongranny2024-07-301-1/+3
| | | | | | | | | | | | Git version 2.34 and later supports signing commits and tags with SSH keys. This means gpg.format now supports "ssh" as a value. Change-Id: Iee1e5a68a816bec149a17a73a6916d2884a54163
* | Add worktrees read supportJanne Valkealahti2024-07-145-26/+211
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on deritative work done in Andre's work in [1]. This change focuses on adding support for reading the repository state when branches are checked out using git's worktrees. I've refactored original work by removing all unrelevant changes which were mostly around refactoring to extract i.e. constants which mostly created noise for a review. I've tried to address original review comments: - Not adding non-behavioral changes - "HEAD" should get resolved from gitDir - Reftable recently landed in cgit 2.45, see https://github.com/git/git/blob/master/Documentation/RelNotes/2.45.0.txt#L8 We can add worktree support for reftable in a later change. - Some new tests to read from a linked worktree which is created manually as there's no write support. [1] https://git.eclipse.org/r/c/jgit/jgit/+/163940/18 Change-Id: Id077d58fb6c09ecb090eb09d5dbc7edc351a581d
* | Merge "DfsBlockCacheConfig: support configurations for dfs cache tables per ↵Ivan Frade2024-07-121-0/+10
|\ \ | | | | | | | | | extensions"
| * | DfsBlockCacheConfig: support configurations for dfs cache tables per extensionsLaura Hamelin2024-07-121-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Parse configurations for tables containing a set of extensions, defined in [core "dfs.*"] sections. Parse configurations for cache tables according to configurations defined in [core "dfs.*"] git config sections for sets of extensions. The current [core "dfs"] is the default to any extension not listed in any other table. Configuration falls back to the defaults defined in the DfsBlockCacheConfig.java file when not set on each cache table configuration. Sample format for individual cache tables: In this example: 1. PACK types would go to the "default" table 2. INDEX and BITMAP_INDEX types would go to the "multipleExtensionCache" table 3. REFTABLE types would go to the "reftableCache" table [core "dfs"] // Configuration for the "default" cache table. blockSize = 512 blockLimit = 100 concurrencyLevel = 5 (...) [core "dfs.multipleExtensionCache"] packExtensions = "INDEX BITMAP_INDEX" blockSize = 512 blockLimit = 100 concurrencyLevel = 5 (...) [core "dfs.reftableCache"] packExtensions = "REFTABLE" blockSize = 512 blockLimit = 100 concurrencyLevel = 5 (...) Change-Id: I0e534e6d78b684832e3d3d269cee2590aa0f1911
* | | DfsPackFile: Enable/disable object size index via DfsReaderOptionsIvan Frade2024-07-101-0/+7
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DfsPackFile always uses the object size index if available. That is the desired final state, but for a safe rollout, we should be able to disable using the object size index. Add an option (dfs.useObjectSizeIndex) to enable/disable the usage of the object size index. False by default. This changes the default from true to false. It only makes a different for the DFS stack when writing of the index was explicitely enabled. This is an optimization, so it shouldn't cause any regression. Operators can restore previous behaviour setting "dfs.useObjectSizeIndex" to true. Change-Id: I44bf5a57e3942a4ecfe66d58bfa9175e99f96fcc
* / Introduce GPG_SIGNATURE_PREFIX constantLuca Milanesio2024-06-071-0/+7
|/ | | | Change-Id: If6cabae76d7b38ce26fca534da6fe13973ebbf4f
* [errorprone] Fix error pattern JdkObsoleteMatthias Sohn2024-04-291-2/+2
| | | | | | See https://errorprone.info/bugpattern/JdkObsolete Change-Id: Id105e2695eb64523bd217f507bf95f909bc6b348
* Introduce core.trustLooseRefStat configKaushik Lingarkar2024-03-052-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | With repositories on NFS, JGit can read an old value of a loose ref or miss the existence of a loose ref if file attributes of the loose ref or its parent directories are cached by NFS. Introduce a new config 'core.trustLooseRefStat' that will optionally refresh file attributes of the loose ref (at least on some NFS clients). Possible values for this new config are: * always: Trust loose ref file attributes (default) * after_open: Similar to 'always', but refresh the file attributes of the loose ref and its parent directories before trusting it The default is set to always trust the file attributes as after_open is known to degrade performance. In a subsequent change, SnapshottingRefDirectory will be updated to cache the directories that were refreshed to avoid duplicate work and thereby improve performance to some extent for the after_open setting. Change-Id: I9dfaeaf5307b2b51ce6ee4bfd9e0678786685fcf Signed-off-by: Kaushik Lingarkar <quic_kaushikl@quicinc.com>
* [gpg] Refactor the GpgSignatureVerifierThomas Wolf2024-02-012-2/+99
| | | | | | | | | | | | | | | | Add a new method verify(GpgConfig, byte[], byte[]) and deprecate the existing verify(byte[], byte[]). Some implementations of the interface may need the GpgConfig. Factor out extracting the raw armored signature from commits or tags into an abstract AbstractGpgSignatureVerifier class so that different implementations don't have to re-implement that bit. Call the new verify method, passing along the GpgConfig. This makes the GPG interfaces more versatile and facilitates implementing an alternate GpgSignatureVerifier. Change-Id: I9cf093caa9fdebede801d665f2591cd9b275e1fd
* PackWriterBitmapPreparer: Set limit on excessive branch countJackson Toeniskoetter2024-01-121-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | If there are too many branches then the bitmap indexing selects only the tip commits of the least active branches to reduce the amount of bitmaps to load on request. This can still be a problem if the number of inactive branches rival or exceed the total number of commits selected for the active branches. Limit the number of branches that receive only-tip bitmaps. This reduces the memory pressure of loading all the bitmaps, and allows us to model the size of the bitmap index without considering the number of branches. Bitmaps are generated for branches in order of most recent commit, and follow these rules: * The first {@code DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT} most active branches have full bitmap coverage. * The {@code DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT} to {@code DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT} most active branches have only the tip commit covered. * The remaining branches have no bitmap coverage. To prevent effecting existing repositories, the default value is set at Integer.MAX_VALUE. Change-Id: I7cc53c898cdc04953b95669be0b069543e10c6f8
* BitmapIndex: Add interface to track bitmaps found (or not)Ivan Frade2023-11-211-0/+52
| | | | | | | | | | | | We want to know what objects had bitmaps in the walk of the request. We can check their position in the history and evaluate our bitmap selection algorithm. Introduce a listener interface to the BitmapIndex to report which getBitmap() calls returned a bitmap (or not) and a method to the bitmap index to set the listener. Change-Id: Iac8fcc1539ddd2dd450e8a1cf5a5b1089679c378
* Fix annotation of deprecated constant CONFIG_KEY_STREAM_FILE_TRESHOLDMatthias Sohn2023-11-171-1/+2
| | | | Change-Id: I71f067199c63aa1407f543f6d40ef05b928e9f95
* Fix typo in constant name CONFIG_KEY_STREAM_FILE_TRESHOLDMatthias Sohn2023-11-151-2/+11
| | | | | | | Since it's part of the API deprecate the wrong spelling and add the correct one with the same value. Change-Id: I0f6ea95a5e66c9e80142eb6d40eb7ec3a7aaf8e2
* Revert "Optimise Git protocol v2 `ref-prefix` scanning"Ivan Frade2023-11-081-3/+5
| | | | | | | | | | This reverts commit 3937300f3eb4dd557ec2d195f21793f737d6cb4e. Reason for revert: This kills performance on the DFS side, that relies on loading the minimal amount of refs and reftables for quick prefix searches. Reverting as a safe option to keep master in good performance until we decide how to reintroduce this change. Change-Id: I7b1a3f900d9c78ce95cf0972abb50b6becfe3bb1
* Optimise Git protocol v2 `ref-prefix` scanningDariusz Luksza2023-11-071-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currenty JGit will go over all refs in the repository for each `ref-prefix`. This means that refs will be read multiple times, which leads to subpar performance. Native git, uses a different approach, where all refs are read once and then for each ref, all `ref-prefix` filter values are checked in one pass. This change implements this approach in JGit. And makes `ref-prefix` filtering ~28% faster for a repository with fully packed refs and ~5% when RefTable is used instead of refdir. Different implementations were tested on a synthetic file repository with 300k refs. Different implementations were tested for unpacked and fully packed refs (results are in seconds). Unpacked refs: Current Impl: 54.838 57.234 56.138 Nested for loops: 36.094 37.025 36.502 Nested stream's: 36.154 35.989 37.262 Parallel stream + stream: 36.923 37.272 35.362 Nested parallel stream's: 35.512 38.395 36.745 Stream + for loop: 34.950 36.164 37.191 Parallel stream + for loop: 37.695 35.511 35.378 Packed refs: Current Impl: 39.713 39.954 38.653 Nested for loops: 29.891 29.753 29.377 Nested stream's: 30.340 29.637 30.412 Parallel stream + stream: 28.653 28.254 29.138 Nested parallel stream's: 29.942 28.850 31.030 Stream + for loop: 29.405 29.576 30.539 Parallel stream + for loop: 29.012 29.215 29.380 RefTable: Current Impl: 0.273 0.294 0.330 Nested for loops: 0.252 0.169 0.215 Nested stream's: 0.252 0.228 0.213 Parallel stream + stream: 0.233 0.259 0.247 Nested parallel stream's: 0.416 0.309 0.340 Stream + for loop: 0.224 0.247 0.242 Parallel stream + for loop: 0.347 0.246 0.346 The elapsed time was measured around `getRefsByPrefix` call in `UploadPack.getFilteredRefs(Collection<String>)` (around lines 952 and 954). Based on the above results, the implementation with parallel stream and stream was selected. Bug: 578550 Change-Id: Iac3a3aacf897b87b3448c1d528cdac64ad312199 Signed-off-by: Dariusz Luksza <dariusz.luksza@gmail.com>
* Config.removeSection() telling whether it changed the configThomas Wolf2023-10-141-9/+33
| | | | | | | | | | | Add a variant of unsetSection() that returns whether it did indeed change the config. This can be used in to skip saving the config if it was not changed. Also fix the iteration over the entries: lastWasMatch was never reset, and thus all empty lines after a match would be removed. Change-Id: Iea9e84aa74b1e4bb3c89efe3936fa3a8a09532e5 Signed-off-by: Thomas Wolf <twolf@apache.org>
* Merge branch 'stable-6.7'Matthias Sohn2023-10-131-0/+13
|\ | | | | | | | | | | | | | | | | | | * stable-6.7: PackConfig: fix @since tags Remove unused API problem filters Add support for git config repack.packKeptObjects Do not exclude objects in locked packs from bitmap processing Change-Id: I7e0856a5d70d5d155cf6874383ea1f5622d5238a
| * Merge branch 'stable-6.6' into stable-6.7Matthias Sohn2023-10-131-0/+13
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.6: PackConfig: fix @since tags Remove unused API problem filters Add support for git config repack.packKeptObjects Do not exclude objects in locked packs from bitmap processing Change-Id: I29241619e6c09933bb856e486f379be10dd609c2
| | * Merge branch 'stable-6.5' into stable-6.6Matthias Sohn2023-10-131-0/+13
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.5: PackConfig: fix @since tags Remove unused API problem filters Add support for git config repack.packKeptObjects Do not exclude objects in locked packs from bitmap processing Change-Id: I7272a22451c0de6b4770767e7bb4e24c81518c20
| | | * Merge branch 'stable-6.4' into stable-6.5Matthias Sohn2023-10-131-0/+13
| | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.4: PackConfig: fix @since tags Remove unused API problem filters Add support for git config repack.packKeptObjects Do not exclude objects in locked packs from bitmap processing Change-Id: I2951d01f5f4581bee20079508cd8ee6ca8554f1f
| | | | * Merge branch 'stable-6.3' into stable-6.4Matthias Sohn2023-10-131-0/+13
| | | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.3: PackConfig: fix @since tags Remove unused API problem filters Add support for git config repack.packKeptObjects Do not exclude objects in locked packs from bitmap processing Change-Id: I4b94a2b79941c085fa2f62246e8e879aaa85cd3f