Merge branch 'stable-6.0' into stable-6.1 * stable-6.0: Allow to discover bitmap on disk created after the packfile Prepare 5.13.6-SNAPSHOT builds JGit v5.13.5.202508271544-r Remove resolver option from target-platform-configuration Add missing release property to maven build Suppress API errors for minor API changes in service releases Remove unnecessary casts Change-Id: I4a51faaebd969c982034ff3c3229145c03719025
diff --git a/org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/LookupFileStoreBenchmark.java b/org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/LookupFileStoreBenchmark.java index 393edcb..e9c9ef3 100644 --- a/org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/LookupFileStoreBenchmark.java +++ b/org.eclipse.jgit.benchmarks/src/org/eclipse/jgit/benchmarks/LookupFileStoreBenchmark.java
@@ -24,7 +24,6 @@ import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.annotations.TearDown; -import org.openjdk.jmh.profile.StackProfiler; import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; import org.openjdk.jmh.runner.options.Options;
diff --git a/org.eclipse.jgit.ssh.apache.agent/bin/.project b/org.eclipse.jgit.ssh.apache.agent/bin/.project deleted file mode 100644 index 73358f4..0000000 --- a/org.eclipse.jgit.ssh.apache.agent/bin/.project +++ /dev/null
@@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>org.eclipse.jgit.ssh.apache.agent</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.pde.ManifestBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.pde.SchemaBuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.pde.PluginNature</nature> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription>
diff --git a/org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/transport/sshd/ApacheSshProtocol2Test.java b/org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/transport/sshd/ApacheSshProtocol2Test.java index eef0402..617e86c 100644 --- a/org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/transport/sshd/ApacheSshProtocol2Test.java +++ b/org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/transport/sshd/ApacheSshProtocol2Test.java
@@ -17,7 +17,6 @@ import org.eclipse.jgit.junit.ssh.SshBasicTestBase; import org.eclipse.jgit.lib.Constants; -import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.transport.SshSessionFactory; import org.eclipse.jgit.util.FS; @@ -52,7 +51,7 @@ protected void installConfig(String... config) { @Override public void setUp() throws Exception { super.setUp(); - StoredConfig config = ((Repository) db).getConfig(); + StoredConfig config = db.getConfig(); config.setInt("protocol", null, "version", 2); config.save(); }
diff --git a/org.eclipse.jgit.ssh.jsch.test/tst/org/eclipse/jgit/transport/ssh/jsch/JSchSshProtocol2Test.java b/org.eclipse.jgit.ssh.jsch.test/tst/org/eclipse/jgit/transport/ssh/jsch/JSchSshProtocol2Test.java index 611d4e8..d615400 100644 --- a/org.eclipse.jgit.ssh.jsch.test/tst/org/eclipse/jgit/transport/ssh/jsch/JSchSshProtocol2Test.java +++ b/org.eclipse.jgit.ssh.jsch.test/tst/org/eclipse/jgit/transport/ssh/jsch/JSchSshProtocol2Test.java
@@ -22,7 +22,6 @@ import org.eclipse.jgit.errors.TransportException; import org.eclipse.jgit.junit.ssh.SshBasicTestBase; import org.eclipse.jgit.lib.Constants; -import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.transport.CredentialsProvider; import org.eclipse.jgit.transport.RemoteSession; @@ -89,7 +88,7 @@ private OpenSshConfig createConfig(String... content) throws IOException { @Override public void setUp() throws Exception { super.setUp(); - StoredConfig config = ((Repository) db).getConfig(); + StoredConfig config = db.getConfig(); config.setInt("protocol", null, "version", 2); config.save(); }
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcConcurrentTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcConcurrentTest.java index 1519873..96a0649 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcConcurrentTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcConcurrentTest.java
@@ -186,13 +186,12 @@ public void repackAndCheckBitmapUsage() throws Exception { // make sure gc() has caused creation of a new packfile assertNotEquals(oldPackName, newPackName); - // Even when asking again for the set of packfiles outdated data - // will be returned. As long as the repository can work on cached data - // it will do so and not detect that a new packfile exists. - assertNotEquals(getSinglePack(repository).getPackName(), newPackName); + // When asking again for the set of packfiles the new updated data + // will be returned because of the rescan of the pack directory. + assertEquals(getSinglePack(repository).getPackName(), newPackName); - // Only when accessing object content it is required to rescan the pack - // directory and the new packfile will be detected. + // When accessing object content the new packfile refreshed from + // the rescan triggered from the list of packs. repository.getObjectDatabase().open(b).getSize(); assertEquals(getSinglePack(repository).getPackName(), newPackName); assertNotNull(getSinglePack(repository).getBitmapIndex());
diff --git a/org.eclipse.jgit/.settings/.api_filters b/org.eclipse.jgit/.settings/.api_filters deleted file mode 100644 index 811c360..0000000 --- a/org.eclipse.jgit/.settings/.api_filters +++ /dev/null
@@ -1,292 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<component id="org.eclipse.jgit" version="2"> - <resource path="src/org/eclipse/jgit/api/GarbageCollectCommand.java" type="org.eclipse.jgit.api.GarbageCollectCommand"> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.3"/> - <message_argument value="setPackKeptObjects(boolean)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/errors/NoRemoteRepositoryException.java" type="org.eclipse.jgit.errors.NoRemoteRepositoryException"> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.1"/> - <message_argument value="NoRemoteRepositoryException(URIish, String, Throwable)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/errors/PackMismatchException.java" type="org.eclipse.jgit.errors.PackMismatchException"> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.9.1"/> - <message_argument value="isPermanent()"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.9.1"/> - <message_argument value="setPermanent(boolean)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/lib/ConfigConstants.java" type="org.eclipse.jgit.lib.ConfigConstants"> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="CONFIG_KEY_BITMAP_EXCLUDED_REFS_PREFIXES"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="CONFIG_KEY_PRESERVE_OLD_PACKS"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="CONFIG_KEY_PRUNE_PRESERVED"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="CONFIG_KEY_SKIPHASH"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="SHA1_IMPLEMENTATION"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.3"/> - <message_argument value="CONFIG_KEY_PACK_KEPT_OBJECTS"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.3"/> - <message_argument value="CONFIG_REPACK_SECTION"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="6.1.1"/> - <message_argument value="CONFIG_KEY_TRUST_PACKED_REFS_STAT"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/lib/CoreConfig.java" type="org.eclipse.jgit.lib.CoreConfig$TrustPackedRefsStat"> - <filter id="1142947843"> - <message_arguments> - <message_argument value="6.1.1"/> - <message_argument value="TrustPackedRefsStat"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/lib/ObjectDatabase.java" type="org.eclipse.jgit.lib.ObjectDatabase"> - <filter id="336695337"> - <message_arguments> - <message_argument value="org.eclipse.jgit.lib.ObjectDatabase"/> - <message_argument value="getApproximateObjectCount()"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/lib/Repository.java" type="org.eclipse.jgit.lib.Repository"> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="getReflogReader(Ref)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/lib/TypedConfigGetter.java" type="org.eclipse.jgit.lib.TypedConfigGetter"> - <filter id="403767336"> - <message_arguments> - <message_argument value="org.eclipse.jgit.lib.TypedConfigGetter"/> - <message_argument value="UNSET_INT"/> - </message_arguments> - </filter> - <filter id="403804204"> - <message_arguments> - <message_argument value="org.eclipse.jgit.lib.TypedConfigGetter"/> - <message_argument value="getIntInRange(Config, String, String, String, int, int, int)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/merge/ResolveMerger.java" type="org.eclipse.jgit.merge.ResolveMerger"> - <filter id="338792546"> - <message_arguments> - <message_argument value="org.eclipse.jgit.merge.ResolveMerger"/> - <message_argument value="addCheckoutMetadata(String, Attributes)"/> - </message_arguments> - </filter> - <filter id="338792546"> - <message_arguments> - <message_argument value="org.eclipse.jgit.merge.ResolveMerger"/> - <message_argument value="addToCheckout(String, DirCacheEntry, Attributes)"/> - </message_arguments> - </filter> - <filter id="338792546"> - <message_arguments> - <message_argument value="org.eclipse.jgit.merge.ResolveMerger"/> - <message_argument value="processEntry(CanonicalTreeParser, CanonicalTreeParser, CanonicalTreeParser, DirCacheBuildIterator, WorkingTreeIterator, boolean, Attributes)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/storage/pack/PackConfig.java" type="org.eclipse.jgit.storage.pack.PackConfig"> - <filter id="336658481"> - <message_arguments> - <message_argument value="org.eclipse.jgit.storage.pack.PackConfig"/> - <message_argument value="DEFAULT_BITMAP_EXCLUDED_REFS_PREFIXES"/> - </message_arguments> - </filter> - <filter id="336658481"> - <message_arguments> - <message_argument value="org.eclipse.jgit.storage.pack.PackConfig"/> - <message_argument value="DEFAULT_PACK_KEPT_OBJECTS"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="DEFAULT_BITMAP_EXCLUDED_REFS_PREFIXES"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="getBitmapExcludedRefsPrefixes()"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="setBitmapExcludedRefsPrefixes(String[])"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.3"/> - <message_argument value="DEFAULT_PACK_KEPT_OBJECTS"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.3"/> - <message_argument value="isPackKeptObjects()"/> - </message_arguments> - </filter> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.3"/> - <message_argument value="setPackKeptObjects(boolean)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/transport/AwsRequestSignerV4.java" type="org.eclipse.jgit.transport.AwsRequestSignerV4"> - <filter id="1109393411"> - <message_arguments> - <message_argument value="5.13.1"/> - <message_argument value="org.eclipse.jgit.transport.AwsRequestSignerV4"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/transport/BasePackPushConnection.java" type="org.eclipse.jgit.transport.BasePackPushConnection"> - <filter id="338792546"> - <message_arguments> - <message_argument value="org.eclipse.jgit.transport.BasePackPushConnection"/> - <message_argument value="noRepository()"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/transport/PushConfig.java" type="org.eclipse.jgit.transport.PushConfig"> - <filter id="338722907"> - <message_arguments> - <message_argument value="org.eclipse.jgit.transport.PushConfig"/> - <message_argument value="PushConfig()"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/util/HttpSupport.java" type="org.eclipse.jgit.util.HttpSupport"> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.1"/> - <message_argument value="urlEncode(String, boolean)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/util/sha1/SHA1.java" type="org.eclipse.jgit.util.sha1.SHA1"> - <filter id="337764418"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="digest()"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="digest(MutableObjectId)"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="hasCollision()"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="reset()"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="setDetectCollision(boolean)"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="toObjectId()"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="update(byte)"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="update(byte[])"/> - </message_arguments> - </filter> - <filter id="421650549"> - <message_arguments> - <message_argument value="org.eclipse.jgit.util.sha1.SHA1"/> - <message_argument value="update(byte[], int, int)"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/eclipse/jgit/util/sha1/SHA1.java" type="org.eclipse.jgit.util.sha1.SHA1$Sha1Implementation"> - <filter id="1142947843"> - <message_arguments> - <message_argument value="5.13.2"/> - <message_argument value="Sha1Implementation"/> - </message_arguments> - </filter> - </resource> -</component>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF index 808d5d3..bac027b 100644 --- a/org.eclipse.jgit/META-INF/MANIFEST.MF +++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -91,7 +91,9 @@ org.eclipse.jgit.lfs, org.eclipse.jgit.pgm, org.eclipse.jgit.pgm.test, - org.eclipse.jgit.ssh.apache", + org.eclipse.jgit.ssh.apache, + org.eclipse.jgit.ssh.apache.test, + org.eclipse.jgit.ssh.jsch.test", org.eclipse.jgit.internal.storage.io;version="6.1.1"; x-friends:="org.eclipse.jgit.junit, org.eclipse.jgit.test,
diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties index 5534a0a..80b0867 100644 --- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties +++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -53,6 +53,8 @@ binaryHunkInvalidLength=Binary hunk, line {0}: input corrupt; expected length byte, got 0x{1} binaryHunkLineTooShort=Binary hunk, line {0}: input ended prematurely binaryHunkMissingNewline=Binary hunk, line {0}: input line not terminated by newline +bitmapAccessErrorForPackfile=Error whilst trying to access bitmap file for {} +bitmapFailedToGet=Failed to get bitmap index file {} bitmapMissingObject=Bitmap at {0} is missing {1}. bitmapsMustBePrepared=Bitmaps must be prepared before they may be written. blameNotCommittedYet=Not Committed Yet
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java index 2adde0a..a9cd9f8 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -81,6 +81,8 @@ public static JGitText get() { /***/ public String binaryHunkInvalidLength; /***/ public String binaryHunkLineTooShort; /***/ public String binaryHunkMissingNewline; + /***/ public String bitmapAccessErrorForPackfile; + /***/ public String bitmapFailedToGet; /***/ public String bitmapMissingObject; /***/ public String bitmapsMustBePrepared; /***/ public String blameNotCommittedYet;
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 6e74136..9dafa83 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
@@ -1146,6 +1146,19 @@ synchronized PackBitmapIndex getBitmapIndex() throws IOException { return bitmapIdx; } + synchronized void refreshBitmapIndex(PackFile bitmapIndexFile) { + this.bitmapIdx = null; + this.invalid = false; + this.bitmapIdxFile = bitmapIndexFile; + try { + getBitmapIndex(); + } catch (IOException e) { + LOG.warn(JGitText.get().bitmapFailedToGet, bitmapIdxFile, e); + this.bitmapIdx = null; + this.bitmapIdxFile = null; + } + } + private synchronized PackReverseIndex getReverseIdx() throws IOException { if (reverseIdx == null) reverseIdx = new PackReverseIndex(idx());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java index 6a99cb3..1676d8b 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java
@@ -115,10 +115,13 @@ void close() { } Collection<Pack> getPacks() { - PackList list = packList.get(); - if (list == NO_PACKS) { - list = scanPacks(list); - } + PackList list; + do { + list = packList.get(); + if (list == NO_PACKS) { + list = scanPacks(list); + } + } while (searchPacksAgain(list)); Pack[] packs = list.packs; return Collections.unmodifiableCollection(Arrays.asList(packs)); } @@ -455,6 +458,13 @@ private PackList scanPacksImpl(PackList old) { && !oldPack.getFileSnapshot().isModified(packFile)) { forReuse.remove(packFile.getName()); list.add(oldPack); + try { + if(oldPack.getBitmapIndex() == null) { + oldPack.refreshBitmapIndex(packFilesByExt.get(BITMAP_INDEX)); + } + } catch (IOException e) { + LOG.warn(JGitText.get().bitmapAccessErrorForPackfile, oldPack.getPackName(), e); + } continue; }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMapMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMapMerger.java index a6ea523..3887dff 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMapMerger.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMapMerger.java
@@ -193,7 +193,7 @@ private void addIfNotNull(FanoutBucket b, int cell, NoteBucket child) if (child == null) return; if (child instanceof InMemoryNoteBucket) - b.setBucket(cell, ((InMemoryNoteBucket) child).writeTree(inserter)); + b.setBucket(cell, child.writeTree(inserter)); else b.setBucket(cell, child.getTreeId()); }