aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/config-options.md9
-rw-r--r--WORKSPACE32
-rw-r--r--lib/BUILD4
-rw-r--r--org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF10
-rw-r--r--org.eclipse.jgit.ant.test/pom.xml2
-rw-r--r--org.eclipse.jgit.ant/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.ant/META-INF/MANIFEST.MF8
-rw-r--r--org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.ant/pom.xml2
-rw-r--r--org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitAddTask.java1
-rw-r--r--org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCheckoutTask.java1
-rw-r--r--org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCloneTask.java1
-rw-r--r--org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitInitTask.java1
-rw-r--r--org.eclipse.jgit.archive/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.archive/META-INF/MANIFEST.MF16
-rw-r--r--org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.archive/pom.xml2
-rw-r--r--org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/BaseFormat.java1
-rw-r--r--org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TarFormat.java6
-rw-r--r--org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/Tbz2Format.java6
-rw-r--r--org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TgzFormat.java6
-rw-r--r--org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TxzFormat.java6
-rw-r--r--org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/ZipFormat.java6
-rw-r--r--org.eclipse.jgit.benchmarks/BUILD2
-rw-r--r--org.eclipse.jgit.benchmarks/pom.xml12
-rw-r--r--org.eclipse.jgit.coverage/pom.xml36
-rw-r--r--org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF10
-rw-r--r--org.eclipse.jgit.gpg.bc.test/pom.xml2
-rw-r--r--org.eclipse.jgit.gpg.bc/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF14
-rw-r--r--org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.gpg.bc/pom.xml2
-rw-r--r--org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyLocator.java10
-rw-r--r--org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyPassphrasePrompt.java3
-rw-r--r--org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/KeyGrip.java4
-rw-r--r--org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SExprParser.java4
-rw-r--r--org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SecretKeys.java1
-rw-r--r--org.eclipse.jgit.http.apache/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF12
-rw-r--r--org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.http.apache/pom.xml2
-rw-r--r--org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java33
-rw-r--r--org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java7
-rw-r--r--org.eclipse.jgit.http.server/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.http.server/META-INF/MANIFEST.MF30
-rw-r--r--org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.http.server/pom.xml2
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/AsIsFileFilter.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java2
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitServlet.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoPacksServlet.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/IsLocalFilter.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/NoCacheFilter.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ObjectFileServlet.java2
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java2
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java35
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/TextFileServlet.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java4
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ErrorServlet.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaFilter.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaServlet.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/NoParameterFilterConfig.java4
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexGroupFilter.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexPipeline.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ServletBinderImpl.java2
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/SuffixPipeline.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/WrappedRequest.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java1
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultUploadPackFactory.java1
-rw-r--r--org.eclipse.jgit.http.test/META-INF/MANIFEST.MF46
-rw-r--r--org.eclipse.jgit.http.test/pom.xml2
-rw-r--r--org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java6
-rw-r--r--org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/TestRepositoryResolver.java1
-rw-r--r--org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF20
-rw-r--r--org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.junit.http/pom.xml2
-rw-r--r--org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AccessEvent.java1
-rw-r--r--org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AppServer.java2
-rw-r--r--org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/HttpTestCase.java27
-rw-r--r--org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java6
-rw-r--r--org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/RecordingLogger.java1
-rw-r--r--org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/SimpleHttpServer.java5
-rw-r--r--org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/TestRequestLog.java1
-rw-r--r--org.eclipse.jgit.junit.ssh/.settings/.api_filters25
-rw-r--r--org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF22
-rw-r--r--org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.junit.ssh/pom.xml2
-rw-r--r--org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestGitServer.java6
-rw-r--r--org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestHarness.java13
-rw-r--r--org.eclipse.jgit.junit/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.junit/META-INF/MANIFEST.MF40
-rw-r--r--org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.junit/pom.xml2
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/JGitTestUtil.java21
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java34
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java14
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/Repeat.java2
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepeatRule.java1
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepositoryTestCase.java53
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/StrictWorkMonitor.java5
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java59
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/time/MonotonicFakeClock.java1
-rw-r--r--org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF38
-rw-r--r--org.eclipse.jgit.lfs.server.test/pom.xml2
-rw-r--r--org.eclipse.jgit.lfs.server/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF32
-rw-r--r--org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.lfs.server/pom.xml2
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LargeFileRepository.java1
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java1
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/FileLfsRepository.java13
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectDownloadListener.java5
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectUploadListener.java5
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java6
-rw-r--r--org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF34
-rw-r--r--org.eclipse.jgit.lfs.test/pom.xml2
-rw-r--r--org.eclipse.jgit.lfs/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.lfs/META-INF/MANIFEST.MF48
-rw-r--r--org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.lfs/pom.xml2
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java1
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPointer.java2
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/SmudgeFilter.java2
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/AtomicObjectOutputStream.java6
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConfig.java6
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConnectionFactory.java2
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AbbreviatedLongObjectId.java3
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AnyLongObjectId.java3
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LfsPointerFilter.java3
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LongObjectId.java1
-rw-r--r--org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/MutableLongObjectId.java1
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.repository/category.xml36
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.target262
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.tpd8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.target262
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.tpd8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.tpd8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.target262
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.tpd8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.target444
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.tpd4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.target56
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.tpd2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.target56
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.tpd2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.target56
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.tpd2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.target56
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.tpd2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.target56
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.tpd2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.target56
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.tpd2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.target58
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.tpd4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.target (renamed from org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.target)58
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.tpd8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd27
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.29.tpd27
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/pom.xml29
-rw-r--r--org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF40
-rw-r--r--org.eclipse.jgit.pgm.test/pom.xml2
-rw-r--r--org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/MergeToolTest.java2
-rw-r--r--org.eclipse.jgit.pgm/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.pgm/META-INF/MANIFEST.MF86
-rw-r--r--org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin1
-rw-r--r--org.eclipse.jgit.pgm/pom.xml2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleAuthenticator.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleCredentialsProvider.java3
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Add.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Branch.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clean.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java5
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CommandRef.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Commit.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Daemon.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Describe.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Diff.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Fetch.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Glog.java3
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/IndexPack.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Init.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Log.java12
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsRemote.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Main.java4
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/MergeBase.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ReceivePack.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Repo.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reset.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevList.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevParse.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java7
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Rm.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ShowRef.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java32
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/TextBuiltin.java4
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/UploadPack.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Version.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/BenchmarkReftable.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/LfsStore.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/MakeCacheTree.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadChangedPathFilter.java83
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadDirCache.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadReftable.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCacheTree.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCommands.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowDirCache.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/VerifyReftable.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteDirCache.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteReftable.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/AbstractTreeIteratorHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/CmdLineParser.java3
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/GpgSignHandler.java1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/InstantHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/ObjectIdHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/OptionWithValuesListHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/PathTreeFilterHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RefSpecHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevCommitHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevTreeHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/SubcommandHandler.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java1
-rw-r--r--org.eclipse.jgit.ssh.apache.agent/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF12
-rw-r--r--org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.ssh.apache.agent/pom.xml2
-rw-r--r--org.eclipse.jgit.ssh.apache.agent/src/org/eclipse/jgit/internal/transport/sshd/agent/connector/UnixSockets.java1
-rw-r--r--org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF24
-rw-r--r--org.eclipse.jgit.ssh.apache.test/pom.xml2
-rw-r--r--org.eclipse.jgit.ssh.apache/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF31
-rw-r--r--org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.ssh.apache/README.md54
-rw-r--r--org.eclipse.jgit.ssh.apache/manual_tests.txt45
-rw-r--r--org.eclipse.jgit.ssh.apache/pom.xml2
-rw-r--r--org.eclipse.jgit.ssh.apache/resources/org/eclipse/jgit/internal/transport/sshd/SshdText.properties16
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java11
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java204
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitSshClient.java26
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/KnownHostEntryReader.java6
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java6
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/SshdText.java8
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/pkcs11/Pkcs11Provider.java372
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/pkcs11/SecurityCallback.java246
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/IdentityPasswordProvider.java2
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/KeyPasswordProvider.java2
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/SshdSessionFactory.java9
-rw-r--r--org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/agent/Connector.java2
-rw-r--r--org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF18
-rw-r--r--org.eclipse.jgit.ssh.jsch.test/pom.xml2
-rw-r--r--org.eclipse.jgit.ssh.jsch/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF20
-rw-r--r--org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.ssh.jsch/pom.xml2
-rw-r--r--org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/internal/transport/ssh/jsch/CredentialsProviderUserInfo.java7
-rw-r--r--org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschConfigSessionFactory.java11
-rw-r--r--org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschSession.java3
-rw-r--r--org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/OpenSshConfig.java1
-rw-r--r--org.eclipse.jgit.test/BUILD2
-rw-r--r--org.eclipse.jgit.test/META-INF/MANIFEST.MF131
-rw-r--r--org.eclipse.jgit.test/pom.xml4
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.corrupt.revbin0 -> 76 bytes
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.revbin0 -> 76 bytes
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ArchiveCommandTest.java2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java4
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java33
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreNodeTest.java108
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ObjectReachabilityTestCase.java1
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ReachabilityCheckerTestCase.java1
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphTest.java68
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriterTest.java312
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java117
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java72
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java132
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackParserTest.java69
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsReaderTest.java262
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileRepositoryBuilderAfterOpenConfigTest.java1
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcReverseIndexTest.java116
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexComputedTest.java108
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexTest.java136
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1Test.java289
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1WriteReadTest.java119
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackTest.java2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryAfterOpenConfigTest.java1
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectoryTest.java1
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/CommitTemplateConfigTest.java10
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java16
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java144
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java191
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java109
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkFollowFilterTest.java24
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/UserConfigFileTest.java301
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/HttpAuthTest.java2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/InMemoryPack.java88
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java169
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java8
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/PathSuffixFilterTest.java4
-rw-r--r--org.eclipse.jgit.ui/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit.ui/META-INF/MANIFEST.MF18
-rw-r--r--org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit.ui/pom.xml2
-rw-r--r--org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtAuthenticator.java1
-rw-r--r--org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java3
-rw-r--r--org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/CommitGraphPane.java2
-rw-r--r--org.eclipse.jgit/.settings/.api_filters44
-rw-r--r--org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs2
-rw-r--r--org.eclipse.jgit/BUILD1
-rw-r--r--org.eclipse.jgit/META-INF/MANIFEST.MF112
-rw-r--r--org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF4
-rw-r--r--org.eclipse.jgit/pom.xml8
-rw-r--r--org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/AddNoteCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/ApplyCommand.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/ArchiveCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java21
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/CreateBranchCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteBranchCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteTagCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/ListBranchCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/ListNotesCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/ListTagCommand.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/PullResult.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/RemoveNoteCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/RenameBranchCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/ResetCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/ShowNoteCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitResult.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleInitCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleStatusCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleSyncCommand.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/TagCommand.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/TransportCommand.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attribute.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attributes.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesHandler.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesRule.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/attributes/FilterCommandRegistry.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/blame/Region.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffEntry.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/EditList.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequence.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequenceComparator.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/HistogramDiff.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/LowLevelDiffAlgorithm.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/PatchIdDiffFormatter.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextComparator.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/Subsequence.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/SubsequenceComparator.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/BaseDirCacheEditor.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuildIterator.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuilder.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java39
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheEditor.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheIterator.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/errors/LargeObjectException.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/errors/RevisionSyntaxException.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/events/ConfigChangedEvent.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/events/IndexChangedEvent.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerHandle.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerList.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/events/RefsChangedEvent.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/events/RepositoryEvent.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/events/WorkingTreeModifiedEvent.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/AbstractHead.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/CharacterHead.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/GroupHead.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/LastHead.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/RestrictedWildCardHead.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/WildCardHead.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java18
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoProject.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/hooks/CommitMsgHook.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/hooks/PostCommitHook.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/hooks/PreCommitHook.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/hooks/PrePushHook.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/IgnoreNode.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/AbstractMatcher.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/LeadingAsteriskMatcher.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/TrailingAsteriskMatcher.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildCardMatcher.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildMatcher.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/diff/FilteredRenameDetector.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/CommandExecutor.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/DiffTools.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/ExternalToolUtils.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/FileElement.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/MergeTools.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/PreDefinedDiffTool.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/UserDefinedMergeTool.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/fsck/FsckPackParser.java18
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapFilter.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapWithCacheFilter.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddUnseenToBitmapFilter.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/BitmappedReachabilityChecker.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/ChangedPathFilter.java163
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraph.java18
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphBuilder.java24
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphConstants.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphLoader.java26
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphV1.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java187
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphChangedPathFilterData.java68
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphCommits.java16
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphObjectIndex.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BeforeDfsPackIndexLoadedEvent.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BlockBasedFile.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsCachedPack.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsConfig.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollector.java40
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java41
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectRepresentation.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectToPack.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsOutputStream.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java18
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java181
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java24
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPacksChangedEvent.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java168
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReaderIoStats.java79
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefDatabase.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefRename.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefUpdate.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java14
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableStack.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryBuilder.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryDescription.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsStreamKey.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/LargePackedWholeObject.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/PackInputStream.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteArrayWindow.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteBufferWindow.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CachedObjectDirectory.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntryImpl.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileCommitGraph.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileObjectDatabase.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java12
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileSnapshot.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java88
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GcLog.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GlobalAttributesNode.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/InfoAttributesNode.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LargePackedWholeObject.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LazyObjectIdSetFile.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalCachedPack.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectToPack.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java14
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java23
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryPackParser.java19
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java209
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexBuilder.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexV1.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFileSnapshot.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndex.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV1.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV2.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV1.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV2.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInputStream.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInserter.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexWriter.java33
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndex.java160
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexComputed.java205
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexFactory.java117
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1.java208
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriter.java12
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriterV1.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java41
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryRename.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntryImpl.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReaderImpl.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataInput.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataOutput.java14
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectory.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/BlockSource.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/memory/TernarySearchTree.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaIndex.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaTask.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/ObjectToPack.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackExt.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/EmptyLogCursor.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/LogCursor.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/MergedReftable.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/RefCursor.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/Reftable.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableBatchRefUpdate.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableOutputStream.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReflogReader.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/submodule/SubmoduleValidator.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/ssh/OpenSshConfigFile.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/util/Optionally.java126
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbrevConfig.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbreviatedObjectId.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchingProgressMonitor.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchTrackingStatus.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitConfig.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java31
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/DefaultTypedConfigGetter.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/EmptyProgressMonitor.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignature.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/MutableObjectId.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/NullProgressMonitor.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectBuilder.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectChecker.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdOwnerMap.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdRef.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdSubclassMap.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoLine.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/RefComparator.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/RefRename.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/RefWriter.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogReader.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java40
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/StoredConfig.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/SymbolicRef.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/TagBuilder.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/TextProgressMonitor.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/ThreadSafeProgressMonitor.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/TypedConfigGetter.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/EolAwareOutputStream.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeAlgorithm.java26
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeChunk.java14
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java68
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatterPass.java72
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeResult.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java30
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMergeStrategy.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/notes/DefaultNoteMerger.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMapMerger.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedFileHeader.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedHunkHeader.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/patch/FileHeader.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/patch/FormatError.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/patch/HunkHeader.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/patch/PatchApplier.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotWalk.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/AbstractRevQueue.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/BlockRevQueue.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthGenerator.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthWalk.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FIFORevQueue.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterKey.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java110
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/Generator.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/LIFORevQueue.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RenameCallback.java22
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevBlob.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java94
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitCG.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitList.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObjectList.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTag.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTree.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalkUtils.java12
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RewriteGenerator.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoNonIntermixSortGenerator.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoSortGenerator.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java95
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/CommitTimeRevFilter.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/MaxCountRevFilter.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/NotRevFilter.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFilter.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFlagFilter.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SkipRevFilter.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SubStringRevFilter.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java23
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/UserConfigFile.java110
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java31
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java12
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleConflict.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java56
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/AbstractAdvertiseRefsHook.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHook.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/AmazonS3.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseConnection.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseFetchConnection.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java20
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleFetchConnection.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/ChainingCredentialsProvider.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialItem.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/FilterSpec.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/FtpChannel.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/HMACSHA1NonceGenerator.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalFetchConnection.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalPushConnection.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/LsRefsV2Request.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/NetRCCredentialsProvider.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/NonceGenerator.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/ObjectInfoRequest.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PackedObjectInfo.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PostUploadHookChain.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PreUploadHookChain.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV0Parser.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificate.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateIdent.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PushConnection.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PushProcess.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/RefAdvertiser.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/RefLeaseSpec.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteRefUpdate.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandOutputStream.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandProgressMonitor.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConfigStore.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConstants.java23
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/SshTransport.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TestProtocol.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TrackingRefUpdate.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportAmazonS3.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleFile.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleStream.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java18
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportLocal.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportProtocol.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportSftp.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/UserAgent.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/UsernamePasswordCredentialsProvider.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkEncryption.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkPushConnection.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnection.java18
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory2.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/http/JDKHttpConnection.java27
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/AbstractTreeIterator.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/EmptyTreeIterator.java12
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/FileTreeIterator.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/TreeWalk.java18
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java44
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ByteArraySet.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/IndexDiffFilter.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilter.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotIgnoredFilter.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotTreeFilter.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathFilter.java17
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathSuffixFilter.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/SkipWorkTreeFilter.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java22
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/BlockList.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/CachedAuthenticator.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/Equality.java26
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java41
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java40
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/HttpSupport.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java86
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/LfsFactory.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/LongList.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/RawCharSequence.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java20
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/RawSubStringPattern.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/RefList.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/RefMap.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java57
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFInputStream.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFInputStream.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/CountingOutputStream.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/DisabledOutputStream.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/IsolatedOutputStream.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/LimitedInputStream.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/MessageWriter.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeInputStream.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeOutputStream.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/ThrowingPrintWriter.java23
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutInputStream.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutOutputStream.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/UnionInputStream.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/time/MonotonicSystemClock.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/time/ProposedTimestamp.java1
-rw-r--r--pom.xml89
822 files changed, 8806 insertions, 4426 deletions
diff --git a/Documentation/config-options.md b/Documentation/config-options.md
index 9075a5903d..810bbc6525 100644
--- a/Documentation/config-options.md
+++ b/Documentation/config-options.md
@@ -9,6 +9,13 @@
For details on native git options see also the official [git config documentation](https://git-scm.com/docs/git-config).
+## __commitGraph__ options
+
+| option | default | git option | description |
+|---------|---------|------------|-------------|
+| `commitGraph.writeChangedPaths` | `false`| ⃞ | Whether bloom filter should be written to commit-graph. |
+| `commitGraph.readChangedPaths` | `false` | ✅ | Whether to use the changed-path Bloom filters in the commit-graph file (if it exists, and they are present). |
+
## __core__ options
| option | default | git option | description |
@@ -18,6 +25,7 @@ For details on native git options see also the official [git config documentatio
| `core.bare` | set automatically on init or clone | ✅ | If true this repository is assumed to be bare and has no working directory associated with it. If this is the case a number of commands that require a working directory will be disabled |
| `core.bigFileThreshold` | `50 MiB` | ✅ | Files larger than this size are stored deflated, without attempting delta compression. Storing large files without delta compression avoids excessive memory usage, at the slight expense of increased disk usage. Additionally files larger than this size are always treated as binary. |
| `core.checkstat` | | ✅ | When missing or is set to `default`, many fields in the stat structure are checked to detect if a file has been modified since Git looked at it. Checks as much of the dircache stat info as possible (in JGit limited by Java filesystem API). When set to `minimum` only checks the size and whole second part of time stamp when comparing the stat info in the dircache with actual file stat info. |
+| `core.commitGraph`| `false` | ✅ | Whether to read the commit-graph file (if it exists) to parse the graph structure of commits. |
| `core.compression` | `-1` (zlib default) | ✅ | An integer `-1..9`, indicating a default compression level. `-1` is the zlib default. `0` means no compression, and `1..9` are various speed/size tradeoffs, `9` being slowest.|
| `core.deltaBaseCacheLimit` | `10 MiB` | ✅ | Maximum number of bytes to reserve for caching base objects that multiple deltafied objects reference. By storing the entire decompressed base object in a cache Git is able to avoid unpacking and decompressing frequently used base objects multiple times. |
| `core.dfs.blockLimit` | `30 MiB` | ⃞ | Maximum number bytes of heap memory to dedicate to caching pack file data in DFS block cache. |
@@ -38,6 +46,7 @@ For details on native git options see also the official [git config documentatio
| `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. |
| `core.packedGitUseStrongRefs` | `false` | ⃞ | Whether the window cache should use strong references (`true`) or SoftReferences (`false`). When `false` the JVM will drop data cached in the JGit block cache when heap usage comes close to the maximum heap size. |
+| `core.packedIndexGitUseStrongRefs` | `true` | ⃞ | Whether pack indices should use strong references (`true`) or SoftReferences (`false`). When `false` the JVM will drop data cached in the JGit pack indices when heap usage comes close to the maximum heap size. |
| `core.packedGitWindowSize` | `8 kiB` | ✅ | Number of bytes of a pack file to load into memory in a single read operation. This is the "page size" of the JGit buffer cache, used for all pack access operations. All disk IO occurs as single window reads. Setting this too large may cause the process to load more data than is required; setting this too small may increase the frequency of read() system calls. |
| `core.precomposeUnicode` | `true` on Mac OS | ✅ | MacOS only. When `true`, JGit reverts the unicode decomposition of filenames done by Mac OS. |
| `core.quotePath` | `true` | ✅ | Commands that output paths (e.g. ls-files, diff), will quote "unusual" characters in the pathname by enclosing the pathname in double-quotes and escaping those characters with backslashes in the same way C escapes control characters (e.g. `\t` for TAB, `\n` for LF, `\\` for backslash) or bytes with values larger than `0x80` (e.g. octal `\302\265` for "micro" in UTF-8). |
diff --git a/WORKSPACE b/WORKSPACE
index 4c959c011f..652ceece01 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -118,8 +118,8 @@ maven_jar(
maven_jar(
name = "commons-codec",
- artifact = "commons-codec:commons-codec:1.15",
- sha1 = "49d94806b6e3dc933dacbd8acb0fdbab8ebd1e5d",
+ artifact = "commons-codec:commons-codec:1.16.0",
+ sha1 = "4e3eb3d79888d76b54e28b350915b5dc3919c9de",
)
maven_jar(
@@ -178,8 +178,8 @@ maven_jar(
maven_jar(
name = "mockito",
- artifact = "org.mockito:mockito-core:4.8.1",
- sha1 = "d8eb9dec8747d08645347bb8c69088ac83197975",
+ artifact = "org.mockito:mockito-core:5.5.0",
+ sha1 = "1660ec3ce0af7f713af923817b225a37cc5cf965",
)
maven_jar(
@@ -188,18 +188,18 @@ maven_jar(
sha1 = "ebbf338e33f893139459ce5df023115971c2786f",
)
-BYTE_BUDDY_VERSION = "1.12.18"
+BYTE_BUDDY_VERSION = "1.14.7"
maven_jar(
name = "bytebuddy",
artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
- sha1 = "875a9c3f29d2f6f499dfd60d76e97a343f9b1233",
+ sha1 = "34efde5f0bb93afc94aaf9d400521899c4806873",
)
maven_jar(
name = "bytebuddy-agent",
artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
- sha1 = "417a7310a7bf1c1aae5ca502d26515f9c2f94396",
+ sha1 = "38b49d37e3e14793ef10977ba75f761c8678e20e",
)
maven_jar(
@@ -265,32 +265,32 @@ maven_jar(
src_sha1 = "135448f8b3b3b06f7f3312d222992525ae4bdd25",
)
-BOUNCYCASTLE_VER = "1.73"
+BOUNCYCASTLE_VER = "1.76"
maven_jar(
name = "bcpg",
artifact = "org.bouncycastle:bcpg-jdk18on:" + BOUNCYCASTLE_VER,
- sha1 = "2838f8c35e6e716349ce780c9c88271cab32065d",
- src_sha1 = "3ea8d8e88569024cb37c303384d33f12e8be1ca3",
+ sha1 = "d5c23d0470261254d0e84dde1d4237d228540298",
+ src_sha1 = "68d49cdd07da2121a904f481e2e92ca864c08d05",
)
maven_jar(
name = "bcprov",
artifact = "org.bouncycastle:bcprov-jdk18on:" + BOUNCYCASTLE_VER,
- sha1 = "4bd3de48e5153059fe3f80cbcf86ea221795ee55",
- src_sha1 = "665f03dc0b10ef2fc90a11c28e48c84a3a9a7323",
+ sha1 = "3a785d0b41806865ad7e311162bfa3fa60b3965b",
+ src_sha1 = "9e00748625819d7e3cc1447366dfa76f0b354a2d",
)
maven_jar(
name = "bcutil",
artifact = "org.bouncycastle:bcutil-jdk18on:" + BOUNCYCASTLE_VER,
- sha1 = "073a680acd04b249a6773f49200092cadb670bf0",
- src_sha1 = "573ebc8e83bc846e815e68e4c624f2d0aef941b9",
+ sha1 = "8c7594e651a278bcde18e038d8ab55b1f97f4d31",
+ src_sha1 = "836bb2c42f10b29127b470ebe5c648927dd4ddc6",
)
maven_jar(
name = "bcpkix",
artifact = "org.bouncycastle:bcpkix-jdk18on:" + BOUNCYCASTLE_VER,
- sha1 = "fd41dae0f564a93888ed5ade426281de94824717",
- src_sha1 = "e11d418a87536d6f5a9537f7cb1f15a3e5c505e9",
+ sha1 = "10c9cf5c1b4d64abeda28ee32fbade3b74373622",
+ src_sha1 = "e5700c1de407652c1af5961ac8a04fab02eda365",
)
diff --git a/lib/BUILD b/lib/BUILD
index 6be9e575fe..29669b5d2f 100644
--- a/lib/BUILD
+++ b/lib/BUILD
@@ -21,6 +21,10 @@ java_library(
java_library(
name = "commons-codec",
+ visibility = [
+ "//org.eclipse.jgit:__pkg__",
+ "//org.eclipse.jgit.test:__pkg__",
+ ],
exports = ["@commons-codec//jar"],
)
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index 9659eb2732..94263bcad5 100644
--- a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
@@ -5,13 +5,13 @@ Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.ant.test
Bundle-SymbolicName: org.eclipse.jgit.ant.test
Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.ant.tasks;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.hamcrest.core;version="[1.1.0,3.0.0)",
org.junit;version="[4.13,5.0.0)"
diff --git a/org.eclipse.jgit.ant.test/pom.xml b/org.eclipse.jgit.ant.test/pom.xml
index bd0c93c795..58751dbbba 100644
--- a/org.eclipse.jgit.ant.test/pom.xml
+++ b/org.eclipse.jgit.ant.test/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ant.test</artifactId>
diff --git a/org.eclipse.jgit.ant/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.ant/.settings/org.eclipse.jdt.core.prefs
index f79df5b9dd..a08ba7b56f 100644
--- a/org.eclipse.jgit.ant/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.ant/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
index 93fdd8d05c..e175108e39 100644
--- a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
@@ -3,13 +3,13 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.ant
Bundle-SymbolicName: org.eclipse.jgit.ant
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.storage.file;version="[6.6.2,6.7.0)"
+ org.eclipse.jgit.storage.file;version="[6.7.1,6.8.0)"
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.ant;version="6.6.2",
- org.eclipse.jgit.ant.tasks;version="6.6.2";
+Export-Package: org.eclipse.jgit.ant;version="6.7.1",
+ org.eclipse.jgit.ant.tasks;version="6.7.1";
uses:="org.apache.tools.ant,
org.apache.tools.ant.types"
diff --git a/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
index b4e80a3432..7b139500c1 100644
--- a/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.ant - Sources
Bundle-SymbolicName: org.eclipse.jgit.ant.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ant;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ant;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ant/pom.xml b/org.eclipse.jgit.ant/pom.xml
index 5d9d889e61..39c8a2f25b 100644
--- a/org.eclipse.jgit.ant/pom.xml
+++ b/org.eclipse.jgit.ant/pom.xml
@@ -15,7 +15,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ant</artifactId>
diff --git a/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitAddTask.java b/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitAddTask.java
index 0d409bbf03..07b60cfc79 100644
--- a/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitAddTask.java
+++ b/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitAddTask.java
@@ -75,7 +75,6 @@ public class GitAddTask extends Task {
return path;
}
- /** {@inheritDoc} */
@Override
public void execute() throws BuildException {
if (src == null) {
diff --git a/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCheckoutTask.java b/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCheckoutTask.java
index 1f10588b4e..ecb5f9addd 100644
--- a/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCheckoutTask.java
+++ b/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCheckoutTask.java
@@ -77,7 +77,6 @@ public class GitCheckoutTask extends Task {
this.force = force;
}
- /** {@inheritDoc} */
@Override
public void execute() throws BuildException {
CheckoutCommand checkout;
diff --git a/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCloneTask.java b/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCloneTask.java
index c143c9c6e1..facf2ac6a0 100644
--- a/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCloneTask.java
+++ b/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitCloneTask.java
@@ -76,7 +76,6 @@ public class GitCloneTask extends Task {
this.branch = branch;
}
- /** {@inheritDoc} */
@Override
public void execute() throws BuildException {
log("Cloning repository " + uri);
diff --git a/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitInitTask.java b/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitInitTask.java
index 161168fbe3..5c2a26b9ee 100644
--- a/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitInitTask.java
+++ b/org.eclipse.jgit.ant/src/org/eclipse/jgit/ant/tasks/GitInitTask.java
@@ -48,7 +48,6 @@ public class GitInitTask extends Task {
this.bare = bare;
}
- /** {@inheritDoc} */
@Override
public void execute() throws BuildException {
if (bare) {
diff --git a/org.eclipse.jgit.archive/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.archive/.settings/org.eclipse.jdt.core.prefs
index 2abe9529d3..b27b6c3c7d 100644
--- a/org.eclipse.jgit.archive/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.archive/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
index 7f72ee2e76..a8ec4c97c4 100644
--- a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.archive
Bundle-SymbolicName: org.eclipse.jgit.archive
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -13,17 +13,17 @@ Import-Package: org.apache.commons.compress.archivers;version="[1.4,2.0)",
org.apache.commons.compress.compressors.bzip2;version="[1.4,2.0)",
org.apache.commons.compress.compressors.gzip;version="[1.4,2.0)",
org.apache.commons.compress.compressors.xz;version="[1.4,2.0)",
- org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.osgi.framework;version="[1.3.0,2.0.0)"
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.jgit.archive.FormatActivator
-Export-Package: org.eclipse.jgit.archive;version="6.6.2";
+Export-Package: org.eclipse.jgit.archive;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.api,
org.apache.commons.compress.archivers,
org.osgi.framework",
- org.eclipse.jgit.archive.internal;version="6.6.2";x-internal:=true
+ org.eclipse.jgit.archive.internal;version="6.7.1";x-internal:=true
diff --git a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
index 2ab44a7404..b08cf20943 100644
--- a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.archive - Sources
Bundle-SymbolicName: org.eclipse.jgit.archive.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index 06e9559b4f..e94732bd4a 100644
--- a/org.eclipse.jgit.archive/pom.xml
+++ b/org.eclipse.jgit.archive/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.archive</artifactId>
diff --git a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/BaseFormat.java b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/BaseFormat.java
index 0ebac77228..25cd36817a 100644
--- a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/BaseFormat.java
+++ b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/BaseFormat.java
@@ -40,6 +40,7 @@ public class BaseFormat {
* options map
* @return stream with option applied
* @throws IOException
+ * if an IO error occurred
*/
protected ArchiveOutputStream applyFormatOptions(ArchiveOutputStream s,
Map<String, Object> o) throws IOException {
diff --git a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TarFormat.java b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TarFormat.java
index 702bad62fe..dfa60321b0 100644
--- a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TarFormat.java
+++ b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TarFormat.java
@@ -39,7 +39,6 @@ public final class TarFormat extends BaseFormat implements
private static final List<String> SUFFIXES = Collections
.unmodifiableList(Arrays.asList(".tar")); //$NON-NLS-1$
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s)
throws IOException {
@@ -47,7 +46,6 @@ public final class TarFormat extends BaseFormat implements
Collections.<String, Object> emptyMap());
}
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s,
Map<String, Object> o) throws IOException {
@@ -58,7 +56,6 @@ public final class TarFormat extends BaseFormat implements
return applyFormatOptions(out, o);
}
- /** {@inheritDoc} */
@Override
public void putEntry(ArchiveOutputStream out,
ObjectId tree, String path, FileMode mode, ObjectLoader loader)
@@ -108,19 +105,16 @@ public final class TarFormat extends BaseFormat implements
out.closeArchiveEntry();
}
- /** {@inheritDoc} */
@Override
public Iterable<String> suffixes() {
return SUFFIXES;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object other) {
return (other instanceof TarFormat);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return getClass().hashCode();
diff --git a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/Tbz2Format.java b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/Tbz2Format.java
index 940dafd40f..26da431147 100644
--- a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/Tbz2Format.java
+++ b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/Tbz2Format.java
@@ -33,7 +33,6 @@ public final class Tbz2Format extends BaseFormat implements
private final ArchiveCommand.Format<ArchiveOutputStream> tarFormat = new TarFormat();
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s)
throws IOException {
@@ -41,7 +40,6 @@ public final class Tbz2Format extends BaseFormat implements
Collections.<String, Object> emptyMap());
}
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s,
Map<String, Object> o) throws IOException {
@@ -55,7 +53,6 @@ public final class Tbz2Format extends BaseFormat implements
return tarFormat.createArchiveOutputStream(out, o);
}
- /** {@inheritDoc} */
@Override
public void putEntry(ArchiveOutputStream out,
ObjectId tree, String path, FileMode mode, ObjectLoader loader)
@@ -63,19 +60,16 @@ public final class Tbz2Format extends BaseFormat implements
tarFormat.putEntry(out, tree, path, mode, loader);
}
- /** {@inheritDoc} */
@Override
public Iterable<String> suffixes() {
return SUFFIXES;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object other) {
return (other instanceof Tbz2Format);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return getClass().hashCode();
diff --git a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TgzFormat.java b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TgzFormat.java
index 72e2439f68..d1ed035d0f 100644
--- a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TgzFormat.java
+++ b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TgzFormat.java
@@ -34,7 +34,6 @@ public final class TgzFormat extends BaseFormat implements
private final ArchiveCommand.Format<ArchiveOutputStream> tarFormat = new TarFormat();
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s)
throws IOException {
@@ -42,7 +41,6 @@ public final class TgzFormat extends BaseFormat implements
Collections.<String, Object> emptyMap());
}
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s,
Map<String, Object> o) throws IOException {
@@ -58,7 +56,6 @@ public final class TgzFormat extends BaseFormat implements
return tarFormat.createArchiveOutputStream(out, o);
}
- /** {@inheritDoc} */
@Override
public void putEntry(ArchiveOutputStream out,
ObjectId tree, String path, FileMode mode, ObjectLoader loader)
@@ -66,19 +63,16 @@ public final class TgzFormat extends BaseFormat implements
tarFormat.putEntry(out, tree, path, mode, loader);
}
- /** {@inheritDoc} */
@Override
public Iterable<String> suffixes() {
return SUFFIXES;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object other) {
return (other instanceof TgzFormat);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return getClass().hashCode();
diff --git a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TxzFormat.java b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TxzFormat.java
index b16fb6dcbd..42549de302 100644
--- a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TxzFormat.java
+++ b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/TxzFormat.java
@@ -33,7 +33,6 @@ public final class TxzFormat extends BaseFormat implements
private final ArchiveCommand.Format<ArchiveOutputStream> tarFormat = new TarFormat();
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s)
throws IOException {
@@ -41,7 +40,6 @@ public final class TxzFormat extends BaseFormat implements
Collections.<String, Object> emptyMap());
}
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s,
Map<String, Object> o) throws IOException {
@@ -55,7 +53,6 @@ public final class TxzFormat extends BaseFormat implements
return tarFormat.createArchiveOutputStream(out, o);
}
- /** {@inheritDoc} */
@Override
public void putEntry(ArchiveOutputStream out,
ObjectId tree, String path, FileMode mode, ObjectLoader loader)
@@ -63,19 +60,16 @@ public final class TxzFormat extends BaseFormat implements
tarFormat.putEntry(out, tree, path, mode, loader);
}
- /** {@inheritDoc} */
@Override
public Iterable<String> suffixes() {
return SUFFIXES;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object other) {
return (other instanceof TxzFormat);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return getClass().hashCode();
diff --git a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/ZipFormat.java b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/ZipFormat.java
index 97a24c75cb..6cb42ae1e5 100644
--- a/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/ZipFormat.java
+++ b/org.eclipse.jgit.archive/src/org/eclipse/jgit/archive/ZipFormat.java
@@ -35,7 +35,6 @@ public final class ZipFormat extends BaseFormat implements
private static final List<String> SUFFIXES = Collections
.unmodifiableList(Arrays.asList(".zip")); //$NON-NLS-1$
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s)
throws IOException {
@@ -43,7 +42,6 @@ public final class ZipFormat extends BaseFormat implements
Collections.<String, Object> emptyMap());
}
- /** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s,
Map<String, Object> o) throws IOException {
@@ -55,7 +53,6 @@ public final class ZipFormat extends BaseFormat implements
return applyFormatOptions(out, o);
}
- /** {@inheritDoc} */
@Override
public void putEntry(ArchiveOutputStream out,
ObjectId tree, String path, FileMode mode, ObjectLoader loader)
@@ -97,19 +94,16 @@ public final class ZipFormat extends BaseFormat implements
out.closeArchiveEntry();
}
- /** {@inheritDoc} */
@Override
public Iterable<String> suffixes() {
return SUFFIXES;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object other) {
return (other instanceof ZipFormat);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return getClass().hashCode();
diff --git a/org.eclipse.jgit.benchmarks/BUILD b/org.eclipse.jgit.benchmarks/BUILD
index ecd268c4b8..6198e4d0c7 100644
--- a/org.eclipse.jgit.benchmarks/BUILD
+++ b/org.eclipse.jgit.benchmarks/BUILD
@@ -7,9 +7,11 @@ SRCS = glob(
jmh_java_benchmarks(
name = "benchmarks",
srcs = SRCS,
+ testonly = 1,
deps = [
"//lib:javaewah",
"//lib:slf4j-api",
"//org.eclipse.jgit:jgit",
+ "//org.eclipse.jgit.junit:junit",
],
)
diff --git a/org.eclipse.jgit.benchmarks/pom.xml b/org.eclipse.jgit.benchmarks/pom.xml
index d96fe48171..b3edc49d79 100644
--- a/org.eclipse.jgit.benchmarks/pom.xml
+++ b/org.eclipse.jgit.benchmarks/pom.xml
@@ -14,7 +14,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jgit</groupId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
<artifactId>org.eclipse.jgit.benchmarks</artifactId>
<packaging>jar</packaging>
@@ -56,7 +56,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
- <version>3.1.0</version>
+ <version>3.3.0</version>
<executions>
<execution>
<id>enforce-maven</id>
@@ -76,7 +76,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
- <version>3.10.1</version>
+ <version>3.11.0</version>
<configuration>
<encoding>UTF-8</encoding>
<release>${java.version}</release>
@@ -175,7 +175,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
- <version>3.12.1</version>
+ <version>4.0.0-M9</version>
<dependencies>
<dependency><!-- add support for ssh/scp -->
<groupId>org.apache.maven.wagon</groupId>
@@ -187,7 +187,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
- <version>3.0.0-M8</version>
+ <version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -197,7 +197,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
- <version>3.4.2</version>
+ <version>3.4.3</version>
</plugin>
</plugins>
</pluginManagement>
diff --git a/org.eclipse.jgit.coverage/pom.xml b/org.eclipse.jgit.coverage/pom.xml
index 868802cc60..bed98fc5b4 100644
--- a/org.eclipse.jgit.coverage/pom.xml
+++ b/org.eclipse.jgit.coverage/pom.xml
@@ -14,7 +14,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -27,88 +27,88 @@
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.ant</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.archive</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.http.apache</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.http.server</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.lfs</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.lfs.server</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.pgm</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.ui</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.ssh.apache</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.test</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.ant.test</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.http.test</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.pgm.test</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.lfs.test</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
</dependencies>
diff --git a/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
index f70a9459ad..c58b5ceb8b 100644
--- a/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.gpg.bc.test
Bundle-SymbolicName: org.eclipse.jgit.gpg.bc.test
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)"
Import-Package: org.bouncycastle.jce.provider;version="[1.65.0,2.0.0)",
org.bouncycastle.openpgp;version="[1.65.0,2.0.0)",
org.bouncycastle.openpgp.operator;version="[1.65.0,2.0.0)",
org.bouncycastle.openpgp.operator.jcajce;version="[1.65.0,2.0.0)",
org.bouncycastle.util.encoders;version="[1.65.0,2.0.0)",
- org.eclipse.jgit.gpg.bc.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.gpg.bc.internal.keys;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.sha1;version="[6.6.2,6.7.0)",
- org.hamcrest;version="[1.1.0,3.0.0)",
+ org.eclipse.jgit.gpg.bc.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.sha1;version="[6.7.1,6.8.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.runner;version="[4.13,5.0.0)",
org.junit.runners;version="[4.13,5.0.0)"
diff --git a/org.eclipse.jgit.gpg.bc.test/pom.xml b/org.eclipse.jgit.gpg.bc.test/pom.xml
index 2e6d7c8ad9..9479948864 100644
--- a/org.eclipse.jgit.gpg.bc.test/pom.xml
+++ b/org.eclipse.jgit.gpg.bc.test/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.gpg.bc.test</artifactId>
diff --git a/org.eclipse.jgit.gpg.bc/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.gpg.bc/.settings/org.eclipse.jdt.core.prefs
index d1f54bbe65..d5c0e6c7e0 100644
--- a/org.eclipse.jgit.gpg.bc/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.gpg.bc/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF b/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
index 1df6959ec4..c3657f7dea 100644
--- a/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
@@ -3,10 +3,10 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.gpg.bc
Bundle-SymbolicName: org.eclipse.jgit.gpg.bc;singleton:=true
-Fragment-Host: org.eclipse.jgit;bundle-version="[6.6.2,6.7.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[6.7.1,6.8.0)"
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.bouncycastle.asn1;version="[1.69.0,2.0.0)",
org.bouncycastle.asn1.cryptlib;version="[1.69.0,2.0.0)",
@@ -29,9 +29,9 @@ Import-Package: org.bouncycastle.asn1;version="[1.69.0,2.0.0)",
org.bouncycastle.util;version="[1.69.0,2.0.0)",
org.bouncycastle.util.encoders;version="[1.69.0,2.0.0)",
org.bouncycastle.util.io;version="[1.69.0,2.0.0)",
- org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.gpg.bc;version="6.6.2",
- org.eclipse.jgit.gpg.bc.internal;version="6.6.2";x-friends:="org.eclipse.jgit.gpg.bc.test",
- org.eclipse.jgit.gpg.bc.internal.keys;version="6.6.2";x-friends:="org.eclipse.jgit.gpg.bc.test"
+Export-Package: org.eclipse.jgit.gpg.bc;version="6.7.1",
+ org.eclipse.jgit.gpg.bc.internal;version="6.7.1";x-friends:="org.eclipse.jgit.gpg.bc.test",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="6.7.1";x-friends:="org.eclipse.jgit.gpg.bc.test"
diff --git a/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
index 5d97eb9832..1215b8cfb6 100644
--- a/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.gpg.bc - Sources
Bundle-SymbolicName: org.eclipse.jgit.gpg.bc.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.gpg.bc/pom.xml b/org.eclipse.jgit.gpg.bc/pom.xml
index b44db9f068..d822bdb748 100644
--- a/org.eclipse.jgit.gpg.bc/pom.xml
+++ b/org.eclipse.jgit.gpg.bc/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.gpg.bc</artifactId>
diff --git a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyLocator.java b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyLocator.java
index 8cd03bd36f..d7bf34e3ac 100644
--- a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyLocator.java
+++ b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyLocator.java
@@ -324,7 +324,9 @@ public class BouncyCastleGpgKeyLocator {
* @throws IOException
* in case of problems reading the file
* @throws NoSuchAlgorithmException
+ * if an algorithm isn't available
* @throws NoSuchProviderException
+ * if a provider isn't available
* @throws NoOpenPgpKeyException
* if the file does not contain any OpenPGP key
*/
@@ -368,12 +370,17 @@ public class BouncyCastleGpgKeyLocator {
* @throws IOException
* in case of issues reading key files
* @throws NoSuchAlgorithmException
+ * algorithm is not available
* @throws NoSuchProviderException
+ * provider is not available
* @throws PGPException
* in case of issues finding a key, including no key found
* @throws CanceledException
+ * operation was cancelled
* @throws URISyntaxException
+ * URI is invalid
* @throws UnsupportedCredentialItem
+ * credential item is not supported
*/
@NonNull
public BouncyCastleGpgKey findSecretKey() throws IOException,
@@ -543,10 +550,11 @@ public class BouncyCastleGpgKeyLocator {
/**
* Return the first suitable key for signing in the key ring collection. For
* this case we only expect there to be one key available for signing.
- * </p>
*
* @param signingkey
+ * the signing key
* @param secringFile
+ * the secring file
*
* @return the first suitable PGP secret key found for signing
* @throws IOException
diff --git a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyPassphrasePrompt.java b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyPassphrasePrompt.java
index 6144195983..463b661127 100644
--- a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyPassphrasePrompt.java
+++ b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgKeyPassphrasePrompt.java
@@ -69,10 +69,13 @@ class BouncyCastleGpgKeyPassphrasePrompt implements AutoCloseable {
* the location the key was loaded from
* @return the passphrase (maybe <code>null</code>)
* @throws PGPException
+ * if a PGP problem occurred
* @throws CanceledException
* in case passphrase was not entered by user
* @throws URISyntaxException
+ * if the URI isn't parseable
* @throws UnsupportedCredentialItem
+ * if a credential item isn't supported
*/
public char[] getPassphrase(byte[] keyFingerprint, Path keyLocation)
throws PGPException, CanceledException, UnsupportedCredentialItem,
diff --git a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/KeyGrip.java b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/KeyGrip.java
index c931724710..3eee18aef5 100644
--- a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/KeyGrip.java
+++ b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/KeyGrip.java
@@ -36,8 +36,8 @@ import org.eclipse.jgit.util.sha1.SHA1;
* Utilities to compute the <em>keygrip</em> of a key. A keygrip is a SHA1 hash
* over the public key parameters and is used internally by the gpg-agent to
* find the secret key belonging to a public key: the secret key is stored in a
- * file under ~/.gnupg/private-keys-v1.d/ with a name "&lt;keygrip>.key". While
- * this storage organization is an implementation detail of GPG, the way
+ * file under ~/.gnupg/private-keys-v1.d/ with a name "&lt;keygrip&gt;.key".
+ * While this storage organization is an implementation detail of GPG, the way
* keygrips are computed is not; they are computed by libgcrypt and their
* definition is stable.
*/
diff --git a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SExprParser.java b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SExprParser.java
index a9bb22c780..c93c2164c9 100644
--- a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SExprParser.java
+++ b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SExprParser.java
@@ -95,7 +95,9 @@ public class SExprParser {
*
* @return a secret key object.
* @throws IOException
+ * if an IO error occurred
* @throws PGPException
+ * if some PGP error occurred
*/
public PGPSecretKey parseSecretKey(InputStream inputStream,
PBEProtectionRemoverFactory keyProtectionRemoverFactory,
@@ -252,7 +254,9 @@ public class SExprParser {
*
* @return a secret key object.
* @throws IOException
+ * if an IO error occurred
* @throws PGPException
+ * if a PGP error occurred
*/
public PGPSecretKey parseSecretKey(InputStream inputStream,
PBEProtectionRemoverFactory keyProtectionRemoverFactory,
diff --git a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SecretKeys.java b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SecretKeys.java
index 269a1ba0f6..a659d38fd3 100644
--- a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SecretKeys.java
+++ b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/keys/SecretKeys.java
@@ -373,6 +373,7 @@ public final class SecretKeys {
* index of the closing quote in {@code in}
* @return the dequoted raw string value
* @throws StreamCorruptedException
+ * if object stream is corrupt
*/
private static byte[] dequote(byte[] in, int from, int to)
throws StreamCorruptedException {
diff --git a/org.eclipse.jgit.http.apache/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.http.apache/.settings/org.eclipse.jdt.core.prefs
index f79df5b9dd..a08ba7b56f 100644
--- a/org.eclipse.jgit.http.apache/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.http.apache/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
index d28b70068c..dbc3947850 100644
--- a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.http.apache
Bundle-SymbolicName: org.eclipse.jgit.http.apache
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
@@ -25,11 +25,11 @@ Import-Package: org.apache.http;version="[4.3.0,5.0.0)",
org.apache.http.impl.conn;version="[4.4.0,5.0.0)",
org.apache.http.params;version="[4.3.0,5.0.0)",
org.apache.http.ssl;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="6.6.2";
+ org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="6.7.1";
uses:="org.apache.http.client,
org.eclipse.jgit.transport.http,
org.apache.http.entity,
diff --git a/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
index 20b3c64589..d0decf5a55 100644
--- a/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.http.apache - Sources
Bundle-SymbolicName: org.eclipse.jgit.http.apache.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.apache/pom.xml b/org.eclipse.jgit.http.apache/pom.xml
index ef7bf9922b..6820f65110 100644
--- a/org.eclipse.jgit.http.apache/pom.xml
+++ b/org.eclipse.jgit.http.apache/pom.xml
@@ -15,7 +15,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.http.apache</artifactId>
diff --git a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java
index 90348f54b9..6d806dee37 100644
--- a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java
+++ b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java
@@ -203,6 +203,7 @@ public class HttpClientConnection implements HttpConnection {
* Sets the buffer from which to take the request body
*
* @param buffer
+ * the buffer
*/
public void setBuffer(TemporaryBuffer buffer) {
this.entity = new TemporaryBufferEntity(buffer);
@@ -212,7 +213,9 @@ public class HttpClientConnection implements HttpConnection {
* Constructor for HttpClientConnection.
*
* @param urlStr
+ * url string
* @throws MalformedURLException
+ * if url is malformed
*/
public HttpClientConnection(String urlStr) throws MalformedURLException {
this(urlStr, null);
@@ -222,8 +225,11 @@ public class HttpClientConnection implements HttpConnection {
* Constructor for HttpClientConnection.
*
* @param urlStr
+ * url string
* @param proxy
+ * proxy
* @throws MalformedURLException
+ * if url is malformed
*/
public HttpClientConnection(String urlStr, Proxy proxy)
throws MalformedURLException {
@@ -234,9 +240,13 @@ public class HttpClientConnection implements HttpConnection {
* Constructor for HttpClientConnection.
*
* @param urlStr
+ * url string
* @param proxy
+ * proxy
* @param cl
+ * client
* @throws MalformedURLException
+ * if url is malformed
*/
public HttpClientConnection(String urlStr, Proxy proxy, HttpClient cl)
throws MalformedURLException {
@@ -245,20 +255,17 @@ public class HttpClientConnection implements HttpConnection {
this.proxy = proxy;
}
- /** {@inheritDoc} */
@Override
public int getResponseCode() throws IOException {
execute();
return resp.getStatusLine().getStatusCode();
}
- /** {@inheritDoc} */
@Override
public URL getURL() {
return url;
}
- /** {@inheritDoc} */
@Override
public String getResponseMessage() throws IOException {
execute();
@@ -287,7 +294,6 @@ public class HttpClientConnection implements HttpConnection {
}
}
- /** {@inheritDoc} */
@Override
public Map<String, List<String>> getHeaderFields() {
Map<String, List<String>> ret = new HashMap<>();
@@ -304,13 +310,11 @@ public class HttpClientConnection implements HttpConnection {
return ret;
}
- /** {@inheritDoc} */
@Override
public void setRequestProperty(String name, String value) {
req.addHeader(name, value);
}
- /** {@inheritDoc} */
@Override
public void setRequestMethod(String method) throws ProtocolException {
this.method = method;
@@ -328,25 +332,21 @@ public class HttpClientConnection implements HttpConnection {
}
}
- /** {@inheritDoc} */
@Override
public void setUseCaches(boolean usecaches) {
// not needed
}
- /** {@inheritDoc} */
@Override
public void setConnectTimeout(int timeout) {
this.timeout = Integer.valueOf(timeout);
}
- /** {@inheritDoc} */
@Override
public void setReadTimeout(int readTimeout) {
this.readTimeout = Integer.valueOf(readTimeout);
}
- /** {@inheritDoc} */
@Override
public String getContentType() {
HttpEntity responseEntity = resp.getEntity();
@@ -358,7 +358,6 @@ public class HttpClientConnection implements HttpConnection {
return null;
}
- /** {@inheritDoc} */
@Override
public InputStream getInputStream() throws IOException {
execute();
@@ -366,7 +365,6 @@ public class HttpClientConnection implements HttpConnection {
}
// will return only the first field
- /** {@inheritDoc} */
@Override
public String getHeaderField(@NonNull String name) {
Header header = resp.getFirstHeader(name);
@@ -379,7 +377,6 @@ public class HttpClientConnection implements HttpConnection {
.stream().map(Header::getValue).collect(Collectors.toList()));
}
- /** {@inheritDoc} */
@Override
public int getContentLength() {
Header contentLength = resp.getFirstHeader("content-length"); //$NON-NLS-1$
@@ -395,19 +392,16 @@ public class HttpClientConnection implements HttpConnection {
}
}
- /** {@inheritDoc} */
@Override
public void setInstanceFollowRedirects(boolean followRedirects) {
this.followRedirects = Boolean.valueOf(followRedirects);
}
- /** {@inheritDoc} */
@Override
public void setDoOutput(boolean dooutput) {
// TODO: check whether we can really ignore this.
}
- /** {@inheritDoc} */
@Override
public void setFixedLengthStreamingMode(int contentLength) {
if (entity != null)
@@ -416,7 +410,6 @@ public class HttpClientConnection implements HttpConnection {
entity.setContentLength(contentLength);
}
- /** {@inheritDoc} */
@Override
public OutputStream getOutputStream() throws IOException {
if (entity == null)
@@ -424,7 +417,6 @@ public class HttpClientConnection implements HttpConnection {
return entity.getBuffer();
}
- /** {@inheritDoc} */
@Override
public void setChunkedStreamingMode(int chunklen) {
if (entity == null)
@@ -432,31 +424,26 @@ public class HttpClientConnection implements HttpConnection {
entity.setChunked(true);
}
- /** {@inheritDoc} */
@Override
public String getRequestMethod() {
return method;
}
- /** {@inheritDoc} */
@Override
public boolean usingProxy() {
return isUsingProxy;
}
- /** {@inheritDoc} */
@Override
public void connect() throws IOException {
execute();
}
- /** {@inheritDoc} */
@Override
public void setHostnameVerifier(HostnameVerifier hostnameverifier) {
this.hostnameverifier = hostnameverifier;
}
- /** {@inheritDoc} */
@Override
public void configure(KeyManager[] km, TrustManager[] tm,
SecureRandom random) throws KeyManagementException {
diff --git a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java
index 101886c887..40be0747ef 100644
--- a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java
+++ b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java
@@ -33,6 +33,7 @@ public class TemporaryBufferEntity extends AbstractHttpEntity
* content stored in the specified buffer
*
* @param buffer
+ * the buffer
*/
public TemporaryBufferEntity(TemporaryBuffer buffer) {
this.buffer = buffer;
@@ -47,13 +48,11 @@ public class TemporaryBufferEntity extends AbstractHttpEntity
return buffer;
}
- /** {@inheritDoc} */
@Override
public boolean isRepeatable() {
return true;
}
- /** {@inheritDoc} */
@Override
public long getContentLength() {
if (contentLength != null)
@@ -61,20 +60,17 @@ public class TemporaryBufferEntity extends AbstractHttpEntity
return buffer.length();
}
- /** {@inheritDoc} */
@Override
public InputStream getContent() throws IOException, IllegalStateException {
return buffer.openInputStream();
}
- /** {@inheritDoc} */
@Override
public void writeTo(OutputStream outstream) throws IOException {
// TODO: dont we need a progressmonitor
buffer.writeTo(outstream, null);
}
- /** {@inheritDoc} */
@Override
public boolean isStreaming() {
return false;
@@ -84,6 +80,7 @@ public class TemporaryBufferEntity extends AbstractHttpEntity
* Set the <code>contentLength</code>
*
* @param contentLength
+ * content length
*/
public void setContentLength(int contentLength) {
this.contentLength = Integer.valueOf(contentLength);
diff --git a/org.eclipse.jgit.http.server/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.http.server/.settings/org.eclipse.jdt.core.prefs
index f79df5b9dd..a08ba7b56f 100644
--- a/org.eclipse.jgit.http.server/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.http.server/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
index 43c28793c2..f6044731e6 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -3,13 +3,13 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.http.server
Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.http.server;version="6.6.2",
- org.eclipse.jgit.http.server.glue;version="6.6.2";
+Export-Package: org.eclipse.jgit.http.server;version="6.7.1",
+ org.eclipse.jgit.http.server.glue;version="6.7.1";
uses:="javax.servlet,javax.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="6.6.2";
+ org.eclipse.jgit.http.server.resolver;version="6.7.1";
uses:="org.eclipse.jgit.transport.resolver,
org.eclipse.jgit.lib,
org.eclipse.jgit.transport,
@@ -18,14 +18,14 @@ Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: javax.servlet;version="[2.5.0,5.0.0)",
javax.servlet.http;version="[2.5.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.transport.parser;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.resolver;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)"
+ org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)"
diff --git a/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
index 4c3d78338a..7f25f9b360 100644
--- a/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.http.server - Sources
Bundle-SymbolicName: org.eclipse.jgit.http.server.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index 648575b22d..b3df6c7c1a 100644
--- a/org.eclipse.jgit.http.server/pom.xml
+++ b/org.eclipse.jgit.http.server/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/AsIsFileFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/AsIsFileFilter.java
index 59dc309ccf..fb74dc7024 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/AsIsFileFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/AsIsFileFilter.java
@@ -37,19 +37,16 @@ class AsIsFileFilter implements Filter {
this.asIs = getAnyFile;
}
- /** {@inheritDoc} */
@Override
public void init(FilterConfig config) throws ServletException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void destroy() {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java
index 0957cc80fa..2f3eee41d6 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java
@@ -189,7 +189,6 @@ public class GitFilter extends MetaFilter {
throw new IllegalStateException(HttpServerText.get().alreadyInitializedByContainer);
}
- /** {@inheritDoc} */
@Override
public void init(FilterConfig filterConfig) throws ServletException {
super.init(filterConfig);
@@ -305,7 +304,6 @@ public class GitFilter extends MetaFilter {
}
}
- /** {@inheritDoc} */
@Override
protected ServletBinder register(ServletBinder binder) {
if (resolver == null)
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitServlet.java
index 8e49b37b3d..0157dff9f5 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitServlet.java
@@ -170,7 +170,6 @@ public class GitServlet extends MetaServlet {
gitFilter.addReceivePackFilter(filter);
}
- /** {@inheritDoc} */
@Override
public void init(ServletConfig config) throws ServletException {
gitFilter.init(new FilterConfig() {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoPacksServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoPacksServlet.java
index e90580b75f..d94cc41268 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoPacksServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoPacksServlet.java
@@ -27,7 +27,6 @@ import org.eclipse.jgit.lib.ObjectDatabase;
class InfoPacksServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
- /** {@inheritDoc} */
@Override
public void doGet(final HttpServletRequest req,
final HttpServletResponse rsp) throws IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java
index f67313d77f..4d86be1916 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java
@@ -29,7 +29,6 @@ import org.eclipse.jgit.util.HttpSupport;
class InfoRefsServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
- /** {@inheritDoc} */
@Override
public void doGet(final HttpServletRequest req,
final HttpServletResponse rsp) throws IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/IsLocalFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/IsLocalFilter.java
index e0d95128e3..434cdb48d1 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/IsLocalFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/IsLocalFilter.java
@@ -33,19 +33,16 @@ import org.eclipse.jgit.lib.Repository;
* downstream servlet can directly access its contents on disk.
*/
class IsLocalFilter implements Filter {
- /** {@inheritDoc} */
@Override
public void init(FilterConfig config) throws ServletException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void destroy() {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/NoCacheFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/NoCacheFilter.java
index 4f9e6f2223..b1a2b30995 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/NoCacheFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/NoCacheFilter.java
@@ -26,19 +26,16 @@ import javax.servlet.http.HttpServletResponse;
/** Add HTTP response headers to prevent caching by proxies/browsers. */
class NoCacheFilter implements Filter {
- /** {@inheritDoc} */
@Override
public void init(FilterConfig config) throws ServletException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void destroy() {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ObjectFileServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ObjectFileServlet.java
index 625ab3e663..e581707ccf 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ObjectFileServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ObjectFileServlet.java
@@ -87,14 +87,12 @@ abstract class ObjectFileServlet extends HttpServlet {
abstract String etag(FileSender sender) throws IOException;
- /** {@inheritDoc} */
@Override
public void doGet(final HttpServletRequest req,
final HttpServletResponse rsp) throws IOException {
serve(req, rsp, true);
}
- /** {@inheritDoc} */
@Override
protected void doHead(final HttpServletRequest req,
final HttpServletResponse rsp) throws ServletException, IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java
index a7ca4d0931..c87bbe6145 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java
@@ -42,6 +42,7 @@ public interface ReceivePackErrorHandler {
* @param r
* A continuation that handles a git-receive-pack request.
* @throws IOException
+ * if an IO error occurred
*/
void receive(HttpServletRequest req, HttpServletResponse rsp,
ReceivePackRunnable r) throws IOException;
@@ -52,7 +53,9 @@ public interface ReceivePackErrorHandler {
* See {@link ReceivePack#receiveWithExceptionPropagation}.
*
* @throws ServiceMayNotContinueException
+ * if transport service cannot continue
* @throws IOException
+ * if an IO error occurred
*/
void receive() throws ServiceMayNotContinueException, IOException;
}
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
index f8c95f56d4..56b4c80743 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
@@ -136,7 +136,6 @@ class ReceivePackServlet extends HttpServlet {
this.handler = handler;
}
- /** {@inheritDoc} */
@Override
public void doPost(final HttpServletRequest req,
final HttpServletResponse rsp) throws IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java
index 943e7f5d4f..9ff922bd7d 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java
@@ -71,19 +71,16 @@ public class RepositoryFilter implements Filter {
this.resolver = resolver;
}
- /** {@inheritDoc} */
@Override
public void init(FilterConfig config) throws ServletException {
context = config.getServletContext();
}
- /** {@inheritDoc} */
@Override
public void destroy() {
context = null;
}
- /** {@inheritDoc} */
@Override
public void doFilter(final ServletRequest request,
final ServletResponse response, final FilterChain chain)
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java
index 11123d0079..fdac79d4b0 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java
@@ -50,7 +50,6 @@ class SmartOutputStream extends TemporaryBuffer {
this.compressStream = compressStream;
}
- /** {@inheritDoc} */
@Override
protected OutputStream overflow() throws IOException {
startedOutput = true;
@@ -63,7 +62,6 @@ class SmartOutputStream extends TemporaryBuffer {
return out;
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
super.close();
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
index 6110bff334..aa04431285 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
@@ -47,19 +47,16 @@ abstract class SmartServiceInfoRefs implements Filter {
this.filters = filters.toArray(new Filter[0]);
}
- /** {@inheritDoc} */
@Override
public void init(FilterConfig config) throws ServletException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void destroy() {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
@@ -122,8 +119,12 @@ abstract class SmartServiceInfoRefs implements Filter {
* @param db
* repository
* @throws IOException
+ * if an IO error occurred
* @throws ServiceNotEnabledException
+ * if a service is not available
* @throws ServiceNotAuthorizedException
+ * if service requires authentication and the current user
+ * didn't provide credentials
*/
protected abstract void begin(HttpServletRequest req, Repository db)
throws IOException, ServiceNotEnabledException,
@@ -135,35 +136,43 @@ abstract class SmartServiceInfoRefs implements Filter {
* @param req
* request
* @param pck
+ * used to frame lines in PacketLineOut format
* @throws IOException
+ * if an IO error occurred
* @throws ServiceNotEnabledException
+ * if a service is not available
* @throws ServiceNotAuthorizedException
+ * if service requires authentication and the current user
+ * didn't provide credentials
*/
protected abstract void advertise(HttpServletRequest req,
PacketLineOutRefAdvertiser pck) throws IOException,
ServiceNotEnabledException, ServiceNotAuthorizedException;
/**
- * Writes the appropriate response to an info/refs request received by
- * a smart service. In protocol v0, this starts with "#
- * service=serviceName" followed by a flush packet, but this is not
- * necessarily the case in other protocol versions.
+ * Writes the appropriate response to an info/refs request received by a
+ * smart service. In protocol v0, this starts with "# service=serviceName"
+ * followed by a flush packet, but this is not necessarily the case in other
+ * protocol versions.
* <p>
- * The default implementation writes "# service=serviceName" and a
- * flush packet, then calls {@link #advertise}. Subclasses should
- * override this method if they support protocol versions other than
- * protocol v0.
+ * The default implementation writes "# service=serviceName" and a flush
+ * packet, then calls {@link #advertise}. Subclasses should override this
+ * method if they support protocol versions other than protocol v0.
*
* @param req
* request
* @param pckOut
* destination of response
* @param serviceName
- * service name to be written out in protocol v0; may or may
- * not be used in other versions
+ * service name to be written out in protocol v0; may or may not
+ * be used in other versions
* @throws IOException
+ * if an IO error occurred
* @throws ServiceNotEnabledException
+ * if a service is not available
* @throws ServiceNotAuthorizedException
+ * if service requires authentication and the current user
+ * didn't provide credentials
*/
protected void respond(HttpServletRequest req,
PacketLineOut pckOut, String serviceName)
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/TextFileServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/TextFileServlet.java
index df8eb77271..0b225e769f 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/TextFileServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/TextFileServlet.java
@@ -35,7 +35,6 @@ class TextFileServlet extends HttpServlet {
this.fileName = name;
}
- /** {@inheritDoc} */
@Override
public void doGet(final HttpServletRequest req,
final HttpServletResponse rsp) throws IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java
index 2aadbbc984..aaf537f283 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java
@@ -58,6 +58,7 @@ public interface UploadPackErrorHandler {
}
return SC_INTERNAL_SERVER_ERROR;
}
+
/**
* @param req
* The HTTP request
@@ -66,6 +67,7 @@ public interface UploadPackErrorHandler {
* @param r
* A continuation that handles a git-upload-pack request.
* @throws IOException
+ * if an IO error occurred
*/
void upload(HttpServletRequest req, HttpServletResponse rsp,
UploadPackRunnable r) throws IOException;
@@ -76,7 +78,9 @@ public interface UploadPackErrorHandler {
* See {@link UploadPack#uploadWithExceptionPropagation}.
*
* @throws ServiceMayNotContinueException
+ * transport service cannot continue
* @throws IOException
+ * if an IO error occurred
*/
void upload() throws ServiceMayNotContinueException, IOException;
}
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
index f16e56d949..74419a50d8 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
@@ -158,7 +158,6 @@ class UploadPackServlet extends HttpServlet {
: this::defaultUploadPackHandler;
}
- /** {@inheritDoc} */
@Override
public void doPost(HttpServletRequest req, HttpServletResponse rsp)
throws IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ErrorServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ErrorServlet.java
index 7f4243a730..822bb79644 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ErrorServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ErrorServlet.java
@@ -35,7 +35,6 @@ public class ErrorServlet extends HttpServlet {
this.status = status;
}
- /** {@inheritDoc} */
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse rsp)
throws ServletException, IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaFilter.java
index 772b996616..e626bec134 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaFilter.java
@@ -97,13 +97,11 @@ public class MetaFilter implements Filter {
return register(new RegexPipeline.Binder(pattern));
}
- /** {@inheritDoc} */
@Override
public void init(FilterConfig filterConfig) throws ServletException {
servletContext = filterConfig.getServletContext();
}
- /** {@inheritDoc} */
@Override
public void destroy() {
if (pipelines != null) {
@@ -140,7 +138,6 @@ public class MetaFilter implements Filter {
};
}
- /** {@inheritDoc} */
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaServlet.java
index a0fa5ea5bb..9a1a24960f 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/MetaServlet.java
@@ -88,7 +88,6 @@ public class MetaServlet extends HttpServlet {
return filter.serveRegex(expression);
}
- /** {@inheritDoc} */
@Override
public void init(ServletConfig config) throws ServletException {
String name = filter.getClass().getName();
@@ -96,13 +95,11 @@ public class MetaServlet extends HttpServlet {
filter.init(new NoParameterFilterConfig(name, ctx));
}
- /** {@inheritDoc} */
@Override
public void destroy() {
filter.destroy();
}
- /** {@inheritDoc} */
@Override
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/NoParameterFilterConfig.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/NoParameterFilterConfig.java
index ebe272885b..3f7ee2a664 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/NoParameterFilterConfig.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/NoParameterFilterConfig.java
@@ -26,13 +26,11 @@ final class NoParameterFilterConfig implements FilterConfig {
this.context = context;
}
- /** {@inheritDoc} */
@Override
public String getInitParameter(String name) {
return null;
}
- /** {@inheritDoc} */
@Override
public Enumeration<String> getInitParameterNames() {
return new Enumeration<>() {
@@ -49,13 +47,11 @@ final class NoParameterFilterConfig implements FilterConfig {
};
}
- /** {@inheritDoc} */
@Override
public ServletContext getServletContext() {
return context;
}
- /** {@inheritDoc} */
@Override
public String getFilterName() {
return filterName;
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexGroupFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexGroupFilter.java
index a321c96728..c8ff6a3308 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexGroupFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexGroupFilter.java
@@ -49,19 +49,16 @@ public class RegexGroupFilter implements Filter {
this.groupIdx = groupIdx - 1;
}
- /** {@inheritDoc} */
@Override
public void init(FilterConfig config) throws ServletException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void destroy() {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void doFilter(final ServletRequest request,
final ServletResponse rsp, final FilterChain chain)
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexPipeline.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexPipeline.java
index 431202b2ba..5baa14a618 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexPipeline.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/RegexPipeline.java
@@ -131,7 +131,6 @@ class RegexPipeline extends UrlPipeline {
}
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "Pipeline[regex: " + pattern + " ]";
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ServletBinderImpl.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ServletBinderImpl.java
index 21f1800239..cd490230d9 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ServletBinderImpl.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/ServletBinderImpl.java
@@ -28,7 +28,6 @@ abstract class ServletBinderImpl implements ServletBinder {
this.filters = new ArrayList<>();
}
- /** {@inheritDoc} */
@Override
public ServletBinder through(Filter filter) {
if (filter == null)
@@ -37,7 +36,6 @@ abstract class ServletBinderImpl implements ServletBinder {
return this;
}
- /** {@inheritDoc} */
@Override
public void with(HttpServlet servlet) {
if (servlet == null)
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/SuffixPipeline.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/SuffixPipeline.java
index 86441b18c3..39d57b59ec 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/SuffixPipeline.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/SuffixPipeline.java
@@ -70,7 +70,6 @@ class SuffixPipeline extends UrlPipeline {
super.service(new WrappedRequest(req, newPath, newInfo), rsp);
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "Pipeline[ *" + suffix + " ]";
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/WrappedRequest.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/WrappedRequest.java
index e6bc934288..4bac040238 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/WrappedRequest.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/glue/WrappedRequest.java
@@ -38,20 +38,17 @@ public class WrappedRequest extends HttpServletRequestWrapper {
this.pathInfo = pathInfo;
}
- /** {@inheritDoc} */
@Override
public String getPathTranslated() {
final String p = getPathInfo();
return p != null ? getSession().getServletContext().getRealPath(p) : null;
}
- /** {@inheritDoc} */
@Override
public String getPathInfo() {
return pathInfo;
}
- /** {@inheritDoc} */
@Override
public String getServletPath() {
return path;
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java
index 16b27e8bd6..0bf10cbd78 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java
@@ -47,7 +47,6 @@ public class DefaultReceivePackFactory implements
}
}
- /** {@inheritDoc} */
@Override
public ReceivePack create(HttpServletRequest req, Repository db)
throws ServiceNotEnabledException, ServiceNotAuthorizedException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultUploadPackFactory.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultUploadPackFactory.java
index d362a96bec..29314359c8 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultUploadPackFactory.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultUploadPackFactory.java
@@ -38,7 +38,6 @@ public class DefaultUploadPackFactory implements
}
}
- /** {@inheritDoc} */
@Override
public UploadPack create(HttpServletRequest req, Repository db)
throws ServiceNotEnabledException, ServiceNotAuthorizedException {
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index c589d8eb93..ae776dcadb 100644
--- a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
@@ -3,10 +3,12 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.http.test
Bundle-SymbolicName: org.eclipse.jgit.http.test
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)",
+ org.hamcrest.library;bundle-version="[1.3.0,2.0.0)"
Import-Package: javax.servlet;version="[2.5.0,5.0.0)",
javax.servlet.http;version="[2.5.0,5.0.0)",
org.apache.commons.codec;version="[1.6.0,2.0.0)",
@@ -26,28 +28,26 @@ Import-Package: javax.servlet;version="[2.5.0,5.0.0)",
org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
org.eclipse.jetty.util.thread;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.http.server;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.http.server.glue;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.http.server.resolver;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.resolver;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.hamcrest;version="[1.1.0,3.0.0)",
- org.hamcrest.core;version="[1.1.0,3.0.0)",
+ org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.http.server;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.http.server.glue;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.http.server.resolver;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.rules;version="[4.13,5.0.0)",
org.junit.runner;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml
index a5e677b9ee..8546be4dab 100644
--- a/org.eclipse.jgit.http.test/pom.xml
+++ b/org.eclipse.jgit.http.test/pom.xml
@@ -18,7 +18,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.http.test</artifactId>
diff --git a/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java b/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java
index 4167b038e1..86da87f8d6 100644
--- a/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java
+++ b/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java
@@ -36,7 +36,6 @@ class RefsUnreadableInMemoryRepository extends InMemoryRepository {
failing = false;
}
- /** {@inheritDoc} */
@Override
public RefDatabase getRefDatabase() {
return refs;
@@ -54,7 +53,6 @@ class RefsUnreadableInMemoryRepository extends InMemoryRepository {
private class RefsUnreadableRefDatabase extends MemRefDatabase {
- /** {@inheritDoc} */
@Override
public Ref exactRef(String name) throws IOException {
if (failing) {
@@ -63,7 +61,6 @@ class RefsUnreadableInMemoryRepository extends InMemoryRepository {
return super.exactRef(name);
}
- /** {@inheritDoc} */
@Override
public Map<String, Ref> getRefs(String prefix) throws IOException {
if (failing) {
@@ -73,7 +70,6 @@ class RefsUnreadableInMemoryRepository extends InMemoryRepository {
return super.getRefs(prefix);
}
- /** {@inheritDoc} */
@Override
public List<Ref> getRefsByPrefix(String prefix) throws IOException {
if (failing) {
@@ -83,7 +79,6 @@ class RefsUnreadableInMemoryRepository extends InMemoryRepository {
return super.getRefsByPrefix(prefix);
}
- /** {@inheritDoc} */
@Override
public List<Ref> getRefsByPrefixWithExclusions(String include, Set<String> excludes)
throws IOException {
@@ -94,7 +89,6 @@ class RefsUnreadableInMemoryRepository extends InMemoryRepository {
return super.getRefsByPrefixWithExclusions(include, excludes);
}
- /** {@inheritDoc} */
@Override
public Set<Ref> getTipsWithSha1(ObjectId id) throws IOException {
if (failing) {
diff --git a/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/TestRepositoryResolver.java b/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/TestRepositoryResolver.java
index 6478b94228..82168d1c5a 100644
--- a/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/TestRepositoryResolver.java
+++ b/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/TestRepositoryResolver.java
@@ -41,7 +41,6 @@ public final class TestRepositoryResolver
this.repoName = repoName;
}
- /** {@inheritDoc} */
@Override
public Repository open(HttpServletRequest req, String name)
throws RepositoryNotFoundException, ServiceNotEnabledException {
diff --git a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
index 98533a4479..df6934e35b 100644
--- a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.junit.http
Bundle-SymbolicName: org.eclipse.jgit.junit.http
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
Bundle-ActivationPolicy: lazy
@@ -21,17 +21,17 @@ Import-Package: javax.servlet;version="[2.5.0,5.0.0)",
org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
org.eclipse.jetty.util.ssl;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.http.server;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.resolver;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.http.server;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.7.1,6.8.0)",
org.junit;version="[4.13,5.0.0)",
org.slf4j.helpers;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="6.6.2";
+Export-Package: org.eclipse.jgit.junit.http;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.eclipse.jgit.junit,
javax.servlet.http,
diff --git a/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
index d2a0690963..30be81fa89 100644
--- a/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.junit.http - Sources
Bundle-SymbolicName: org.eclipse.jgit.junit.http.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.http/pom.xml b/org.eclipse.jgit.junit.http/pom.xml
index 6618b63e95..4684725e1b 100644
--- a/org.eclipse.jgit.junit.http/pom.xml
+++ b/org.eclipse.jgit.junit.http/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.junit.http</artifactId>
diff --git a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AccessEvent.java b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AccessEvent.java
index 873d430675..3d4f379243 100644
--- a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AccessEvent.java
+++ b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AccessEvent.java
@@ -146,7 +146,6 @@ public class AccessEvent {
return responseHeaders != null ? responseHeaders.get(name) : null;
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder b = new StringBuilder();
diff --git a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AppServer.java b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AppServer.java
index 36f2f2bc7f..de4535ab52 100644
--- a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AppServer.java
+++ b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/AppServer.java
@@ -260,7 +260,9 @@ public class AppServer {
* Configure basic authentication.
*
* @param ctx
+ * servlet context handler
* @param methods
+ * the methods
* @return servlet context handler
*/
public ServletContextHandler authBasic(ServletContextHandler ctx,
diff --git a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/HttpTestCase.java b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/HttpTestCase.java
index 877b918695..8a4d363709 100644
--- a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/HttpTestCase.java
+++ b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/HttpTestCase.java
@@ -45,14 +45,12 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
/** In-memory application server; subclass must start. */
protected AppServer server;
- /** {@inheritDoc} */
@Override
public void setUp() throws Exception {
super.setUp();
server = createServer();
}
- /** {@inheritDoc} */
@Override
public void tearDown() throws Exception {
server.tearDown();
@@ -78,6 +76,7 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
*
* @return the TestRepository
* @throws IOException
+ * if an IO error occurred
*/
protected TestRepository<Repository> createTestRepository()
throws IOException {
@@ -90,8 +89,10 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Convert path to URIish
*
* @param path
+ * the path
* @return the URIish
* @throws URISyntaxException
+ * if URI is invalid
*/
protected URIish toURIish(String path) throws URISyntaxException {
URI u = server.getURI().resolve(path);
@@ -102,9 +103,12 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Convert a path relative to the app's context path to a URIish
*
* @param app
+ * app name
* @param name
+ * context path name
* @return the warnings (if any) from the last execution
* @throws URISyntaxException
+ * if URI is invalid
*/
protected URIish toURIish(ServletContextHandler app, String name)
throws URISyntaxException {
@@ -128,7 +132,9 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Get requests.
*
* @param base
+ * base URI
* @param path
+ * the request path relative to {@code base}
*
* @return list of events
*/
@@ -140,6 +146,7 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Get requests.
*
* @param path
+ * request path
*
* @return list of events
*/
@@ -151,8 +158,11 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Run fsck
*
* @param db
+ * the repository
* @param tips
+ * tips to start checking from
* @throws Exception
+ * if an error occurred
*/
protected static void fsck(Repository db, RevObject... tips)
throws Exception {
@@ -166,6 +176,7 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Mirror refs
*
* @param refs
+ * the refs
* @return set of RefSpecs
*/
protected static Set<RefSpec> mirror(String... refs) {
@@ -183,9 +194,12 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Push a commit
*
* @param from
+ * repository from which to push
* @param q
+ * commit to push
* @return collection of RefUpdates
* @throws IOException
+ * if an IO error occurred
*/
protected static Collection<RemoteRefUpdate> push(TestRepository from,
RevCommit q) throws IOException {
@@ -205,7 +219,9 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Create loose object path
*
* @param base
+ * base URI
* @param id
+ * objectId
* @return path of the loose object
*/
public static String loose(URIish base, AnyObjectId id) {
@@ -219,6 +235,7 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Join a base URIish and a path
*
* @param base
+ * base URI
* @param path
* a relative path
* @return the joined path
@@ -237,8 +254,11 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Rewrite a url
*
* @param url
+ * the URL
* @param newProtocol
+ * new protocol
* @param newPort
+ * new port
* @return the rewritten url
*/
protected static String rewriteUrl(String url, String newProtocol,
@@ -263,9 +283,12 @@ public abstract class HttpTestCase extends LocalDiskRepositoryTestCase {
* Extend a path
*
* @param uri
+ * the URI
* @param pathComponents
+ * path components
* @return the extended URIish
* @throws URISyntaxException
+ * if URI is invalid
*/
protected static URIish extendPath(URIish uri, String pathComponents)
throws URISyntaxException {
diff --git a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java
index 715fd19451..cd1eba4bfd 100644
--- a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java
+++ b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java
@@ -28,19 +28,19 @@ public class MockServletConfig implements ServletConfig {
* Set init parameter.
*
* @param name
+ * parameter name
* @param value
+ * parameter value
*/
public void setInitParameter(String name, String value) {
parameters.put(name, value);
}
- /** {@inheritDoc} */
@Override
public String getInitParameter(String name) {
return parameters.get(name);
}
- /** {@inheritDoc} */
@Override
public Enumeration<String> getInitParameterNames() {
final Iterator<String> i = parameters.keySet().iterator();
@@ -58,13 +58,11 @@ public class MockServletConfig implements ServletConfig {
};
}
- /** {@inheritDoc} */
@Override
public String getServletName() {
return "MOCK_SERVLET";
}
- /** {@inheritDoc} */
@Override
public ServletContext getServletContext() {
return null;
diff --git a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/RecordingLogger.java b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/RecordingLogger.java
index af63084e93..f56e1fa5c4 100644
--- a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/RecordingLogger.java
+++ b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/RecordingLogger.java
@@ -70,6 +70,7 @@ public class RecordingLogger extends MarkerIgnoringBase {
* Constructor for <code>RecordingLogger</code>.
*
* @param name
+ * logger name
*/
public RecordingLogger(String name) {
this.name = name;
diff --git a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/SimpleHttpServer.java b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/SimpleHttpServer.java
index 2493f999fa..01f18dab75 100644
--- a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/SimpleHttpServer.java
+++ b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/SimpleHttpServer.java
@@ -40,6 +40,7 @@ public class SimpleHttpServer {
* Constructor for <code>SimpleHttpServer</code>.
*
* @param repository
+ * the repository
*/
public SimpleHttpServer(Repository repository) {
this(repository, false);
@@ -49,7 +50,9 @@ public class SimpleHttpServer {
* Constructor for <code>SimpleHttpServer</code>.
*
* @param repository
+ * the repository
* @param withSsl
+ * whether to encrypt the communication
*/
public SimpleHttpServer(Repository repository, boolean withSsl) {
this.db = repository;
@@ -60,6 +63,7 @@ public class SimpleHttpServer {
* Start the server
*
* @throws Exception
+ * if an error occurred
*/
public void start() throws Exception {
ServletContextHandler sBasic = server.authBasic(smart("/sbasic"));
@@ -76,6 +80,7 @@ public class SimpleHttpServer {
* Stop the server.
*
* @throws Exception
+ * if an error occurred
*/
public void stop() throws Exception {
server.tearDown();
diff --git a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/TestRequestLog.java b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/TestRequestLog.java
index 04cb2428a2..afa8c35bb2 100644
--- a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/TestRequestLog.java
+++ b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/TestRequestLog.java
@@ -72,7 +72,6 @@ class TestRequestLog extends HandlerWrapper {
}
}
- /** {@inheritDoc} */
@Override
public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response)
diff --git a/org.eclipse.jgit.junit.ssh/.settings/.api_filters b/org.eclipse.jgit.junit.ssh/.settings/.api_filters
deleted file mode 100644
index 44c9dfae49..0000000000
--- a/org.eclipse.jgit.junit.ssh/.settings/.api_filters
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<component id="org.eclipse.jgit.junit.ssh" version="2">
- <resource path="src/org/eclipse/jgit/junit/ssh/SshTestHarness.java" type="org.eclipse.jgit.junit.ssh.SshTestHarness">
- <filter id="336658481">
- <message_arguments>
- <message_argument value="org.eclipse.jgit.junit.ssh.SshTestHarness"/>
- <message_argument value="publicKey2"/>
- </resource>
- <resource path="META-INF/MANIFEST.MF">
- <filter id="923795461">
- <message_arguments>
- <message_argument value="5.11.2"/>
- <message_argument value="5.10.0"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/jgit/junit/ssh/SshTestBase.java" type="org.eclipse.jgit.junit.ssh.SshTestBase">
- <filter id="338792546">
- <message_arguments>
- <message_argument value="org.eclipse.jgit.junit.ssh.SshTestBase"/>
- <message_argument value="testSshWithConfig()"/>
- </message_arguments>
- </filter>
- </resource>
-</component>
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
index 8729675924..6a9561ee26 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.junit.ssh
Bundle-SymbolicName: org.eclipse.jgit.junit.ssh
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
Bundle-ActivationPolicy: lazy
@@ -33,16 +33,16 @@ Import-Package: org.apache.sshd.common;version="[2.10.0,2.11.0)",
org.apache.sshd.server.subsystem;version="[2.10.0,2.11.0)",
org.apache.sshd.sftp;version="[2.10.0,2.11.0)",
org.apache.sshd.sftp.server;version="[2.10.0,2.11.0)",
- org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.experimental.theories;version="[4.13,5.0.0)",
org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit.ssh;version="6.6.2"
+Export-Package: org.eclipse.jgit.junit.ssh;version="6.7.1"
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
index 1bb45a1e16..1b0a63c9a3 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.junit.ssh - Sources
Bundle-SymbolicName: org.eclipse.jgit.junit.ssh.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.ssh/pom.xml b/org.eclipse.jgit.junit.ssh/pom.xml
index 1d01ec3e29..40e128cebb 100644
--- a/org.eclipse.jgit.junit.ssh/pom.xml
+++ b/org.eclipse.jgit.junit.ssh/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.junit.ssh</artifactId>
diff --git a/org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestGitServer.java b/org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestGitServer.java
index 5d043ffc3a..1138be8a96 100644
--- a/org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestGitServer.java
+++ b/org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestGitServer.java
@@ -116,7 +116,9 @@ public class SshTestGitServer {
* @param hostKey
* the unencrypted private key to use as host key
* @throws IOException
+ * if an IO error occurred
* @throws GeneralSecurityException
+ * if something went wrong
*/
public SshTestGitServer(@NonNull String testUser, @NonNull Path testKey,
@NonNull Repository repository, @NonNull byte[] hostKey)
@@ -138,7 +140,9 @@ public class SshTestGitServer {
* @param hostKey
* the unencrypted private key to use as host key
* @throws IOException
+ * if an IO error occurred
* @throws GeneralSecurityException
+ * if something went wrong
* @since 5.9
*/
public SshTestGitServer(@NonNull String testUser, @NonNull Path testKey,
@@ -413,6 +417,7 @@ public class SshTestGitServer {
* @return the port the server listens on; test clients should connect to
* that port
* @throws IOException
+ * if an IO error occurred
*/
public int start() throws IOException {
server.start();
@@ -423,6 +428,7 @@ public class SshTestGitServer {
* Stops the test server.
*
* @throws IOException
+ * if an IO error occurred
*/
public void stop() throws IOException {
executorService.shutdownNow();
diff --git a/org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestHarness.java b/org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestHarness.java
index a28d5ebd98..b183b22603 100644
--- a/org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestHarness.java
+++ b/org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestHarness.java
@@ -89,8 +89,6 @@ public abstract class SshTestHarness extends RepositoryTestCase {
protected File knownHosts;
- private File homeDir;
-
@Override
public void setUp() throws Exception {
super.setUp();
@@ -99,13 +97,8 @@ public abstract class SshTestHarness extends RepositoryTestCase {
git.add().addFilepattern("file.txt").call();
git.commit().setMessage("Initial commit").call();
}
- mockSystemReader.setProperty("user.home",
- getTemporaryDirectory().getAbsolutePath());
- mockSystemReader.setProperty("HOME",
- getTemporaryDirectory().getAbsolutePath());
- homeDir = FS.DETECTED.userHome();
- FS.DETECTED.setUserHome(getTemporaryDirectory().getAbsoluteFile());
- sshDir = new File(getTemporaryDirectory(), ".ssh");
+ // The home directory is mocked here
+ sshDir = new File(FS.DETECTED.userHome(), ".ssh");
assertTrue(sshDir.mkdir());
File serverDir = new File(getTemporaryDirectory(), "srv");
assertTrue(serverDir.mkdir());
@@ -191,6 +184,7 @@ public abstract class SshTestHarness extends RepositoryTestCase {
* to use
* @return the public-key part of the line
* @throws IOException
+ * if an IO error occurred
*/
protected static String createKnownHostsFile(File file, String host,
int port, File publicKey) throws IOException {
@@ -235,7 +229,6 @@ public abstract class SshTestHarness extends RepositoryTestCase {
server.stop();
server = null;
}
- FS.DETECTED.setUserHome(homeDir);
SshSessionFactory.setInstance(null);
factory = null;
}
diff --git a/org.eclipse.jgit.junit/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.junit/.settings/org.eclipse.jdt.core.prefs
index bdfba71f54..bb15648cbf 100644
--- a/org.eclipse.jgit.junit/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.junit/.settings/org.eclipse.jdt.core.prefs
@@ -56,7 +56,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
index f195156432..29410b42fb 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -3,35 +3,35 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.junit
Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.dircache;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.merge;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="6.6.2",
- org.eclipse.jgit.treewalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.io;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.time;version="[6.6.2,6.7.0)",
+Import-Package: org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.dircache;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.merge;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="6.7.1",
+ org.eclipse.jgit.treewalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.io;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.time;version="[6.7.1,6.8.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.rules;version="[4.13,5.0.0)",
org.junit.runner;version="[4.13,5.0.0)",
org.junit.runners;version="[4.13,5.0.0)",
org.junit.runners.model;version="[4.13,5.0.0)",
org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="6.6.2";
+Export-Package: org.eclipse.jgit.junit;version="6.7.1";
uses:="org.eclipse.jgit.dircache,
org.eclipse.jgit.lib,
org.eclipse.jgit.revwalk,
@@ -44,4 +44,4 @@ Export-Package: org.eclipse.jgit.junit;version="6.6.2";
org.junit.runners.model,
org.junit.runner,
org.eclipse.jgit.util.time",
- org.eclipse.jgit.junit.time;version="6.6.2";uses:="org.eclipse.jgit.util.time"
+ org.eclipse.jgit.junit.time;version="6.7.1";uses:="org.eclipse.jgit.util.time"
diff --git a/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
index a420be6410..98554425f3 100644
--- a/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.junit - Sources
Bundle-SymbolicName: org.eclipse.jgit.junit.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index a86842ba72..620325bc6d 100644
--- a/org.eclipse.jgit.junit/pom.xml
+++ b/org.eclipse.jgit.junit/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.junit</artifactId>
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/JGitTestUtil.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/JGitTestUtil.java
index 61d3b860e9..177d8737cb 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/JGitTestUtil.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/JGitTestUtil.java
@@ -107,6 +107,7 @@ public abstract class JGitTestUtil {
* Get test resource file.
*
* @param fileName
+ * file name
* @return the test resource file
*/
public static File getTestResourceFile(String fileName) {
@@ -141,8 +142,11 @@ public abstract class JGitTestUtil {
* Copy test resource.
*
* @param name
+ * resource name
* @param dest
+ * destination file
* @throws IOException
+ * if an IO error occurred
*/
public static void copyTestResource(String name, File dest)
throws IOException {
@@ -165,10 +169,14 @@ public abstract class JGitTestUtil {
* Write a trash file.
*
* @param db
+ * the repository
* @param name
+ * file name
* @param data
+ * file content
* @return the trash file
* @throws IOException
+ * if an IO error occurred
*/
public static File writeTrashFile(final Repository db,
final String name, final String data) throws IOException {
@@ -181,11 +189,16 @@ public abstract class JGitTestUtil {
* Write a trash file.
*
* @param db
+ * the repository
* @param subdir
+ * under working tree
* @param name
+ * file name
* @param data
+ * file content
* @return the trash file
* @throws IOException
+ * if an IO error occurred
*/
public static File writeTrashFile(final Repository db,
final String subdir,
@@ -237,9 +250,12 @@ public abstract class JGitTestUtil {
* Read a file's content
*
* @param db
+ * the repository
* @param name
+ * file name
* @return the content of the file
* @throws IOException
+ * if an IO error occurred
*/
public static String read(Repository db, String name)
throws IOException {
@@ -251,6 +267,7 @@ public abstract class JGitTestUtil {
* Check if file exists
*
* @param db
+ * the repository
* @param name
* name of the file
* @return {@code true} if the file exists
@@ -264,8 +281,11 @@ public abstract class JGitTestUtil {
* Delete a trash file.
*
* @param db
+ * the repository
* @param name
+ * file name
* @throws IOException
+ * if an IO error occurred
*/
public static void deleteTrashFile(final Repository db,
final String name) throws IOException {
@@ -284,6 +304,7 @@ public abstract class JGitTestUtil {
* the target of the symbolic link
* @return the path to the symbolic link
* @throws Exception
+ * if an error occurred
* @since 4.2
*/
public static Path writeLink(Repository db, String link,
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java
index 59662cec95..f816158b10 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java
@@ -85,6 +85,8 @@ public abstract class LocalDiskRepositoryTestCase {
private final Set<Repository> toClose = new HashSet<>();
private File tmp;
+ private File homeDir;
+
/**
* The current test name.
*
@@ -107,6 +109,7 @@ public abstract class LocalDiskRepositoryTestCase {
* Setup test
*
* @throws Exception
+ * if an error occurred
*/
@Before
public void setUp() throws Exception {
@@ -118,6 +121,14 @@ public abstract class LocalDiskRepositoryTestCase {
mockSystemReader = new MockSystemReader();
SystemReader.setInstance(mockSystemReader);
+ // Mock the home directory. We don't want to pick up the real user's git
+ // config, or global git ignore.
+ // XDG_CONFIG_HOME isn't set in the MockSystemReader.
+ mockSystemReader.setProperty("user.home", tmp.getAbsolutePath());
+ mockSystemReader.setProperty("HOME", tmp.getAbsolutePath());
+ homeDir = FS.DETECTED.userHome();
+ FS.DETECTED.setUserHome(tmp.getAbsoluteFile());
+
// Measure timer resolution before the test to avoid time critical tests
// are affected by time needed for measurement.
// The MockSystemReader must be configured first since we need to use
@@ -189,25 +200,30 @@ public abstract class LocalDiskRepositoryTestCase {
* Tear down the test
*
* @throws Exception
+ * if an error occurred
*/
@After
public void tearDown() throws Exception {
RepositoryCache.clear();
- for (Repository r : toClose)
+ for (Repository r : toClose) {
r.close();
+ }
toClose.clear();
// Since memory mapping is controlled by the GC we need to
// tell it this is a good time to clean up and unlock
// memory mapped files.
//
- if (useMMAP)
+ if (useMMAP) {
System.gc();
- if (tmp != null)
+ }
+ FS.DETECTED.setUserHome(homeDir);
+ if (tmp != null) {
recursiveDelete(tmp, false, true);
- if (tmp != null && !tmp.exists())
+ }
+ if (tmp != null && !tmp.exists()) {
CleanupThread.removed(tmp);
-
+ }
SystemReader.setInstance(null);
}
@@ -314,11 +330,11 @@ public abstract class LocalDiskRepositoryTestCase {
* {@link #CONTENT} controlling which info is present in the
* resulting string.
* @return a string encoding the index state
- * @throws IllegalStateException
* @throws IOException
+ * if an IO error occurred
*/
public static String indexState(Repository repo, int includedOptions)
- throws IllegalStateException, IOException {
+ throws IOException {
DirCache dc = repo.readDirCache();
StringBuilder sb = new StringBuilder();
TreeSet<Instant> timeStamps = new TreeSet<>();
@@ -452,6 +468,7 @@ public abstract class LocalDiskRepositoryTestCase {
* a subdirectory
* @return a unique directory for a test
* @throws IOException
+ * if an IO error occurred
*/
protected File createTempDirectory(String name) throws IOException {
File directory = new File(createTempFile(), name);
@@ -467,6 +484,7 @@ public abstract class LocalDiskRepositoryTestCase {
* working directory
* @return a unique directory for a test repository
* @throws IOException
+ * if an IO error occurred
*/
protected File createUniqueTestGitDir(boolean bare) throws IOException {
String gitdirName = createTempFile().getPath();
@@ -487,6 +505,7 @@ public abstract class LocalDiskRepositoryTestCase {
*
* @return a unique path that does not exist.
* @throws IOException
+ * if an IO error occurred
*/
protected File createTempFile() throws IOException {
File p = File.createTempFile("tmp_", "", tmp);
@@ -586,6 +605,7 @@ public abstract class LocalDiskRepositoryTestCase {
* the file
* @return the content of the file
* @throws IOException
+ * if an IO error occurred
*/
protected String read(File f) throws IOException {
return JGitTestUtil.read(f);
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java
index 6bfe70659b..4dbfc59ec7 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java
@@ -144,32 +144,30 @@ public class MockSystemReader extends SystemReader {
* Set a property
*
* @param key
+ * the key
* @param value
+ * the value
*/
public void setProperty(String key, String value) {
values.put(key, value);
}
- /** {@inheritDoc} */
@Override
public String getenv(String variable) {
return values.get(variable);
}
- /** {@inheritDoc} */
@Override
public String getProperty(String key) {
return values.get(key);
}
- /** {@inheritDoc} */
@Override
public FileBasedConfig openUserConfig(Config parent, FS fs) {
assert parent == null || parent == systemGitConfig;
return userGitConfig;
}
- /** {@inheritDoc} */
@Override
public FileBasedConfig openSystemConfig(Config parent, FS fs) {
assert parent == null;
@@ -193,19 +191,16 @@ public class MockSystemReader extends SystemReader {
return systemGitConfig;
}
- /** {@inheritDoc} */
@Override
public String getHostname() {
return "fake.host.example.com";
}
- /** {@inheritDoc} */
@Override
public long getCurrentTime() {
return now;
}
- /** {@inheritDoc} */
@Override
public MonotonicClock getClock() {
return () -> {
@@ -236,31 +231,26 @@ public class MockSystemReader extends SystemReader {
now += secDelta * 1000L;
}
- /** {@inheritDoc} */
@Override
public int getTimezone(long when) {
return getTimeZone().getOffset(when) / (60 * 1000);
}
- /** {@inheritDoc} */
@Override
public TimeZone getTimeZone() {
return TimeZone.getTimeZone("GMT-03:30");
}
- /** {@inheritDoc} */
@Override
public Locale getLocale() {
return Locale.US;
}
- /** {@inheritDoc} */
@Override
public SimpleDateFormat getSimpleDateFormat(String pattern) {
return new SimpleDateFormat(pattern, getLocale());
}
- /** {@inheritDoc} */
@Override
public DateFormat getDateTimeInstance(int dateStyle, int timeStyle) {
return DateFormat
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/Repeat.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/Repeat.java
index 343aa92f8a..4bf2eb59da 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/Repeat.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/Repeat.java
@@ -21,6 +21,8 @@ import java.lang.annotation.Target;
public @interface Repeat {
/**
* Number of repetitions
+ *
+ * @return number of repetitions
*/
public abstract int n();
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepeatRule.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepeatRule.java
index adcc10cad8..30fffe9d94 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepeatRule.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepeatRule.java
@@ -125,7 +125,6 @@ public class RepeatRule implements TestRule {
}
}
- /** {@inheritDoc} */
@Override
public Statement apply(Statement statement, Description description) {
Statement result = statement;
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepositoryTestCase.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepositoryTestCase.java
index 04988f6289..3a283ce10d 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepositoryTestCase.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/RepositoryTestCase.java
@@ -62,8 +62,11 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Copy a file
*
* @param src
+ * file to copy
* @param dst
+ * destination of the copy
* @throws IOException
+ * if an IO error occurred
*/
protected static void copyFile(File src, File dst)
throws IOException {
@@ -81,9 +84,12 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Write a trash file
*
* @param name
+ * file name
* @param data
+ * file content
* @return the trash file
* @throws IOException
+ * if an IO error occurred
*/
protected File writeTrashFile(String name, String data)
throws IOException {
@@ -99,6 +105,7 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* the target of the symbolic link
* @return the path to the symbolic link
* @throws Exception
+ * if an error occurred
* @since 4.2
*/
protected Path writeLink(String link, String target)
@@ -110,10 +117,14 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Write a trash file
*
* @param subdir
+ * in working tree
* @param name
+ * file name
* @param data
+ * file content
* @return the trash file
* @throws IOException
+ * if an IO error occurred
*/
protected File writeTrashFile(final String subdir, final String name,
final String data)
@@ -125,8 +136,10 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Read content of a file
*
* @param name
+ * file name
* @return the file's content
* @throws IOException
+ * if an IO error occurred
*/
protected String read(String name) throws IOException {
return JGitTestUtil.read(db, name);
@@ -149,6 +162,7 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* @param name
* file name
* @throws IOException
+ * if an IO error occurred
*/
protected void deleteTrashFile(String name) throws IOException {
JGitTestUtil.deleteTrashFile(db, name);
@@ -158,9 +172,11 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Check content of a file.
*
* @param f
+ * file
* @param checkData
* expected content
* @throws IOException
+ * if an IO error occurred
*/
protected static void checkFile(File f, String checkData)
throws IOException {
@@ -181,7 +197,6 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
/** Working directory of {@link #db}. */
protected File trash;
- /** {@inheritDoc} */
@Override
@Before
public void setUp() throws Exception {
@@ -229,11 +244,11 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* {@link #CONTENT} controlling which info is present in the
* resulting string.
* @return a string encoding the index state
- * @throws IllegalStateException
* @throws IOException
+ * if an IO error occurred
*/
public String indexState(int includedOptions)
- throws IllegalStateException, IOException {
+ throws IOException {
return indexState(db, includedOptions);
}
@@ -251,7 +266,9 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* a {@link org.eclipse.jgit.treewalk.FileTreeIterator} which
* determines which files should go into the new index
* @throws FileNotFoundException
+ * file was not found
* @throws IOException
+ * if an IO error occurred
*/
protected void resetIndex(FileTreeIterator treeItr)
throws FileNotFoundException, IOException {
@@ -339,7 +356,9 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* @return return the last measured value of the filesystem timer which is
* greater than then the lastmodification time of lastfile.
* @throws InterruptedException
+ * if thread was interrupted
* @throws IOException
+ * if an IO error occurred
* @since 5.1.9
*/
public static Instant fsTick(File lastFile)
@@ -378,8 +397,11 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Create a branch
*
* @param objectId
+ * new value to create the branch on
* @param branchName
+ * branch name
* @throws IOException
+ * if an IO error occurred
*/
protected void createBranch(ObjectId objectId, String branchName)
throws IOException {
@@ -393,6 +415,7 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
*
* @return list of refs
* @throws IOException
+ * if an IO error occurred
*/
public List<Ref> getRefs() throws IOException {
return db.getRefDatabase().getRefs();
@@ -402,11 +425,12 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Checkout a branch
*
* @param branchName
- * @throws IllegalStateException
+ * branch name
* @throws IOException
+ * if an IO error occurred
*/
protected void checkoutBranch(String branchName)
- throws IllegalStateException, IOException {
+ throws IOException {
try (RevWalk walk = new RevWalk(db)) {
RevCommit head = walk.parseCommit(db.resolve(Constants.HEAD));
RevCommit branch = walk.parseCommit(db.resolve(branchName));
@@ -436,7 +460,9 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* the contents which should be written into the files
* @return the File object associated to the last written file.
* @throws IOException
+ * if an IO error occurred
* @throws InterruptedException
+ * if thread was interrupted
*/
protected File writeTrashFiles(boolean ensureDistinctTimestamps,
String... contents)
@@ -459,8 +485,11 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* one.
*
* @param filename
+ * file name
* @param contents
+ * file content
* @param branch
+ * branch name
* @return the created commit
*/
protected RevCommit commitFile(String filename, String contents, String branch) {
@@ -494,7 +523,9 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Create <code>DirCacheEntry</code>
*
* @param path
+ * file path
* @param mode
+ * file mode
* @return the DirCacheEntry
*/
protected DirCacheEntry createEntry(String path, FileMode mode) {
@@ -505,8 +536,11 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Create <code>DirCacheEntry</code>
*
* @param path
+ * file path
* @param mode
+ * file mode
* @param content
+ * file content
* @return the DirCacheEntry
*/
protected DirCacheEntry createEntry(final String path, final FileMode mode,
@@ -518,9 +552,13 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Create <code>DirCacheEntry</code>
*
* @param path
+ * file path
* @param mode
+ * file mode
* @param stage
+ * stage index of the new entry
* @param content
+ * file content
* @return the DirCacheEntry
*/
protected DirCacheEntry createEntry(final String path, final FileMode mode,
@@ -538,7 +576,9 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Create <code>DirCacheEntry</code>
*
* @param path
+ * file path
* @param objectId
+ * of the entry
* @return the DirCacheEntry
*/
protected DirCacheEntry createGitLink(String path, AnyObjectId objectId) {
@@ -553,8 +593,11 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
* Assert files are equal
*
* @param expected
+ * expected file
* @param actual
+ * actual file
* @throws IOException
+ * if an IO error occurred
*/
public static void assertEqualsFile(File expected, File actual)
throws IOException {
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/StrictWorkMonitor.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/StrictWorkMonitor.java
index c77bca9751..0168ecea30 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/StrictWorkMonitor.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/StrictWorkMonitor.java
@@ -20,32 +20,27 @@ import org.eclipse.jgit.lib.ProgressMonitor;
public final class StrictWorkMonitor implements ProgressMonitor {
private int lastWork, totalWork;
- /** {@inheritDoc} */
@Override
public void start(int totalTasks) {
// empty
}
- /** {@inheritDoc} */
@Override
public void beginTask(String title, int total) {
this.totalWork = total;
lastWork = 0;
}
- /** {@inheritDoc} */
@Override
public void update(int completed) {
lastWork += completed;
}
- /** {@inheritDoc} */
@Override
public void endTask() {
assertEquals("Units of work recorded", totalWork, lastWork);
}
- /** {@inheritDoc} */
@Override
public boolean isCancelled() {
return false;
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
index 483b9a7c81..4b45535477 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
@@ -115,6 +115,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* @param db
* the test repository to write into.
* @throws IOException
+ * if an IO error occurred
*/
public TestRepository(R db) throws IOException {
this(db, new RevWalk(db), new MockSystemReader());
@@ -128,6 +129,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* @param rw
* the RevObject pool to use for object lookup.
* @throws IOException
+ * if an IO error occurred
*/
public TestRepository(R db, RevWalk rw) throws IOException {
this(db, rw, new MockSystemReader());
@@ -144,6 +146,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the MockSystemReader to use for clock and other system
* operations.
* @throws IOException
+ * if an IO error occurred
* @since 4.2
*/
public TestRepository(R db, RevWalk rw, MockSystemReader reader)
@@ -235,6 +238,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* file content, will be UTF-8 encoded.
* @return reference to the blob.
* @throws Exception
+ * if an error occurred
*/
public RevBlob blob(String content) throws Exception {
return blob(content.getBytes(UTF_8));
@@ -247,6 +251,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* binary file content.
* @return the new, fully parsed blob.
* @throws Exception
+ * if an error occurred
*/
public RevBlob blob(byte[] content) throws Exception {
ObjectId id;
@@ -266,6 +271,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* a blob, previously constructed in the repository.
* @return the entry.
* @throws Exception
+ * if an error occurred
*/
public DirCacheEntry file(String path, RevBlob blob)
throws Exception {
@@ -284,6 +290,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* a blob, previously constructed in the repository.
* @return the entry.
* @throws Exception
+ * if an error occurred
* @since 6.3
*/
public DirCacheEntry link(String path, RevBlob blob) throws Exception {
@@ -301,6 +308,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* to be sorted properly and may be empty.
* @return the new, fully parsed tree specified by the entry list.
* @throws Exception
+ * if an error occurred
*/
public RevTree tree(DirCacheEntry... entries) throws Exception {
final DirCache dc = DirCache.newInCore();
@@ -326,6 +334,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the path to find the entry of.
* @return the parsed object entry at this path, never null.
* @throws Exception
+ * if an error occurred
*/
public RevObject get(RevTree tree, String path)
throws Exception {
@@ -357,6 +366,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* zero or more IDs of the commit's parents.
* @return the ID of the new commit.
* @throws Exception
+ * if an error occurred
* @since 5.5
*/
public ObjectId unparsedCommit(ObjectId... parents) throws Exception {
@@ -373,6 +383,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* zero or more parents of the commit.
* @return the new commit.
* @throws Exception
+ * if an error occurred
*/
public RevCommit commit(RevCommit... parents) throws Exception {
return commit(1, tree(), parents);
@@ -389,6 +400,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* zero or more parents of the commit.
* @return the new commit.
* @throws Exception
+ * if an error occurred
*/
public RevCommit commit(RevTree tree, RevCommit... parents)
throws Exception {
@@ -407,6 +419,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* zero or more parents of the commit.
* @return the new commit.
* @throws Exception
+ * if an error occurred
*/
public RevCommit commit(int secDelta, RevCommit... parents)
throws Exception {
@@ -428,6 +441,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* zero or more parents of the commit.
* @return the new, fully parsed commit.
* @throws Exception
+ * if an error occurred
*/
public RevCommit commit(final int secDelta, final RevTree tree,
final RevCommit... parents) throws Exception {
@@ -450,6 +464,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* zero or more IDs of the commit's parents.
* @return the ID of the new commit.
* @throws Exception
+ * if an error occurred
* @since 5.5
*/
public ObjectId unparsedCommit(final int secDelta, final RevTree tree,
@@ -496,6 +511,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* object the tag should be pointed at.
* @return the new, fully parsed annotated tag object.
* @throws Exception
+ * if an error occurred
*/
public RevTag tag(String name, RevObject dst) throws Exception {
final TagBuilder t = new TagBuilder();
@@ -524,6 +540,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the target object.
* @return the target object.
* @throws Exception
+ * if an error occurred
*/
public RevCommit update(String ref, CommitBuilder to) throws Exception {
return update(ref, to.create());
@@ -534,12 +551,13 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
*
* @param ref
* the name of the reference to amend, which must already exist.
- * If {@code ref} does not start with {@code refs/} and is not the
- * magic names {@code HEAD} {@code FETCH_HEAD} or {@code
- * MERGE_HEAD}, then {@code refs/heads/} will be prefixed in front
- * of the given name, thereby assuming it is a branch.
+ * If {@code ref} does not start with {@code refs/} and is not
+ * the magic names {@code HEAD} {@code FETCH_HEAD} or {@code
+ * MERGE_HEAD}, then {@code refs/heads/} will be prefixed in
+ * front of the given name, thereby assuming it is a branch.
* @return commit builder that amends the branch on commit.
* @throws Exception
+ * if an error occurred
*/
public CommitBuilder amendRef(String ref) throws Exception {
String name = normalizeRef(ref);
@@ -556,6 +574,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the id of the commit to amend.
* @return commit builder.
* @throws Exception
+ * if an error occurred
*/
public CommitBuilder amend(AnyObjectId id) throws Exception {
return amend(pool.parseCommit(id), commit());
@@ -610,6 +629,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the target object.
* @return the target object.
* @throws Exception
+ * if an error occurred
*/
public <T extends AnyObjectId> T update(String ref, T obj) throws Exception {
ref = normalizeRef(ref);
@@ -632,9 +652,10 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* Delete a reference.
*
* @param ref
- * the name of the reference to delete. This is normalized
- * in the same way as {@link #update(String, AnyObjectId)}.
+ * the name of the reference to delete. This is normalized in the
+ * same way as {@link #update(String, AnyObjectId)}.
* @throws Exception
+ * if an error occurred
* @since 4.4
*/
public void delete(String ref) throws Exception {
@@ -674,6 +695,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* @param id
* ID of detached head.
* @throws Exception
+ * if an error occurred
* @see #reset(String)
*/
public void reset(AnyObjectId id) throws Exception {
@@ -695,13 +717,14 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
/**
* Soft-reset HEAD to a different commit.
* <p>
- * This is equivalent to {@code git reset --soft} in that it modifies HEAD but
- * not the index or the working tree of a non-bare repository.
+ * This is equivalent to {@code git reset --soft} in that it modifies HEAD
+ * but not the index or the working tree of a non-bare repository.
*
* @param name
- * revision string; either an existing ref name, or something that
- * can be parsed to an object ID.
+ * revision string; either an existing ref name, or something
+ * that can be parsed to an object ID.
* @throws Exception
+ * if an error occurred
*/
public void reset(String name) throws Exception {
RefUpdate.Result result;
@@ -735,6 +758,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* @return the new, fully parsed commit, or null if no work was done due to
* the resulting tree being identical.
* @throws Exception
+ * if an error occurred
*/
public RevCommit cherryPick(AnyObjectId id) throws Exception {
RevCommit commit = pool.parseCommit(id);
@@ -779,6 +803,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* Update the dumb client server info files.
*
* @throws Exception
+ * if an error occurred
*/
public void updateServerInfo() throws Exception {
if (db instanceof FileRepository) {
@@ -816,6 +841,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* parsing of.
* @return {@code object}
* @throws Exception
+ * if an error occurred
*/
public <T extends RevObject> T parseBody(T object) throws Exception {
pool.parseBody(object);
@@ -851,6 +877,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the object to tag
* @return the tagged object
* @throws Exception
+ * if an error occurred
*/
public ObjectId lightweightTag(String name, ObjectId obj) throws Exception {
if (!name.startsWith(Constants.R_TAGS))
@@ -868,8 +895,11 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the tips to start checking from; if not supplied the refs of
* the repository are used instead.
* @throws MissingObjectException
+ * if object is missing
* @throws IncorrectObjectTypeException
+ * if object has unexpected type
* @throws IOException
+ * if an IO error occurred
*/
public void fsck(RevObject... tips) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -922,6 +952,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* not removed.
*
* @throws Exception
+ * if an error occurred
*/
public void packAndPrune() throws Exception {
if (db.getObjectDatabase() instanceof ObjectDirectory) {
@@ -1022,6 +1053,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the commit to update to.
* @return {@code to}.
* @throws Exception
+ * if an error occurred
*/
public RevCommit update(CommitBuilder to) throws Exception {
return update(to.create());
@@ -1034,6 +1066,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the commit to update to.
* @return {@code to}.
* @throws Exception
+ * if an error occurred
*/
public RevCommit update(RevCommit to) throws Exception {
return TestRepository.this.update(ref, to);
@@ -1041,7 +1074,9 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
/**
* Delete this branch.
+ *
* @throws Exception
+ * if an error occurred
* @since 4.4
*/
public void delete() throws Exception {
@@ -1102,6 +1137,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* parent commit
* @return this commit builder
* @throws Exception
+ * if an error occurred
*/
public CommitBuilder parent(RevCommit p) throws Exception {
if (parents.isEmpty()) {
@@ -1165,6 +1201,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* the file content
* @return this commit builder
* @throws Exception
+ * if an error occurred
*/
public CommitBuilder add(String path, String content) throws Exception {
return add(path, blob(content));
@@ -1179,6 +1216,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
* blob for this file
* @return this commit builder
* @throws Exception
+ * if an error occurred
*/
public CommitBuilder add(String path, RevBlob id)
throws Exception {
@@ -1404,6 +1442,7 @@ public class TestRepository<R extends Repository> implements AutoCloseable {
*
* @return child commit builder
* @throws Exception
+ * if an error occurred
*/
public CommitBuilder child() throws Exception {
return new CommitBuilder(this);
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/time/MonotonicFakeClock.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/time/MonotonicFakeClock.java
index e5338d36cd..31db6a2c7b 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/time/MonotonicFakeClock.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/time/MonotonicFakeClock.java
@@ -40,7 +40,6 @@ public class MonotonicFakeClock implements MonotonicClock {
now += unit.toMillis(add);
}
- /** {@inheritDoc} */
@Override
public ProposedTimestamp propose() {
long t = now++;
diff --git a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
index 432a9f8f9d..79f0677a1e 100644
--- a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.lfs.server.test
Bundle-SymbolicName: org.eclipse.jgit.lfs.server.test
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -26,24 +26,24 @@ Import-Package: javax.servlet;version="[3.1.0,5.0.0)",
org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
org.eclipse.jetty.util.thread;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.server;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.server.fs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.test;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.server;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.test;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.hamcrest.core;version="[1.1.0,3.0.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.rules;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.lfs.server.test/pom.xml b/org.eclipse.jgit.lfs.server.test/pom.xml
index 53d2e0e2df..4592990311 100644
--- a/org.eclipse.jgit.lfs.server.test/pom.xml
+++ b/org.eclipse.jgit.lfs.server.test/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
diff --git a/org.eclipse.jgit.lfs.server/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.lfs.server/.settings/org.eclipse.jdt.core.prefs
index 0857bc15f2..3a92f0c434 100644
--- a/org.eclipse.jgit.lfs.server/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.lfs.server/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
index 247fcfe23e..79d2947286 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.lfs.server
Bundle-SymbolicName: org.eclipse.jgit.lfs.server
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs.server;version="6.6.2";
+Export-Package: org.eclipse.jgit.lfs.server;version="6.7.1";
uses:="javax.servlet.http,
org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="6.6.2";
+ org.eclipse.jgit.lfs.server.fs;version="6.7.1";
uses:="javax.servlet,
javax.servlet.http,
org.eclipse.jgit.lfs.server,
org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.internal;version="6.6.2";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="6.6.2";
+ org.eclipse.jgit.lfs.server.internal;version="6.7.1";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="6.7.1";
uses:="org.eclipse.jgit.lfs.server,
org.eclipse.jgit.lfs.lib"
Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -24,15 +24,15 @@ Import-Package: com.google.gson;version="[2.8.0,3.0.0)",
javax.servlet.annotation;version="[3.1.0,5.0.0)",
javax.servlet.http;version="[3.1.0,5.0.0)",
org.apache.http;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.slf4j;version="[1.7.0,2.0.0)"
diff --git a/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
index 1214dafa8b..ed5b2e6ffa 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.lfs.server - Sources
Bundle-SymbolicName: org.eclipse.jgit.lfs.server.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs.server/pom.xml b/org.eclipse.jgit.lfs.server/pom.xml
index 623ec95c80..74d3ae86d2 100644
--- a/org.eclipse.jgit.lfs.server/pom.xml
+++ b/org.eclipse.jgit.lfs.server/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.lfs.server</artifactId>
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LargeFileRepository.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LargeFileRepository.java
index 5e37664eb3..4c81baf838 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LargeFileRepository.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LargeFileRepository.java
@@ -60,6 +60,7 @@ public interface LargeFileRepository {
* @return length of the object content in bytes, -1 if the object doesn't
* exist
* @throws java.io.IOException
+ * if an IO error occurred
*/
long getSize(AnyLongObjectId id) throws IOException;
}
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java
index 3ec08ecc83..6747b014dc 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java
@@ -164,7 +164,6 @@ public abstract class LfsProtocolServlet extends HttpServlet {
}
}
- /** {@inheritDoc} */
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/FileLfsRepository.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/FileLfsRepository.java
index 31d5b2f8c5..ff648aaebf 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/FileLfsRepository.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/FileLfsRepository.java
@@ -38,13 +38,16 @@ public class FileLfsRepository implements LargeFileRepository {
private final Path dir;
/**
- * <p>Constructor for FileLfsRepository.</p>
+ * <p>
+ * Constructor for FileLfsRepository.
+ * </p>
*
* @param url
* external URL of this repository
* @param dir
* storage directory
* @throws java.io.IOException
+ * if an IO error occurred
*/
public FileLfsRepository(String url, Path dir) throws IOException {
this.url = url;
@@ -52,26 +55,22 @@ public class FileLfsRepository implements LargeFileRepository {
Files.createDirectories(dir);
}
- /** {@inheritDoc} */
@Override
public Response.Action getDownloadAction(AnyLongObjectId id) {
return getAction(id);
}
- /** {@inheritDoc} */
@Override
public Action getUploadAction(AnyLongObjectId id, long size) {
return getAction(id);
}
- /** {@inheritDoc} */
@Override
@Nullable
public Action getVerifyAction(AnyLongObjectId id) {
return null;
}
- /** {@inheritDoc} */
@Override
public long getSize(AnyLongObjectId id) throws IOException {
Path p = getPath(id);
@@ -148,6 +147,8 @@ public class FileLfsRepository implements LargeFileRepository {
}
/**
+ * Get URL of content server
+ *
* @return the url of the content server
* @since 4.11
*/
@@ -156,6 +157,8 @@ public class FileLfsRepository implements LargeFileRepository {
}
/**
+ * Set the URL of the content server
+ *
* @param url
* the url of the content server
* @since 4.11
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectDownloadListener.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectDownloadListener.java
index d42701125e..2ea92da82b 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectDownloadListener.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectDownloadListener.java
@@ -50,7 +50,9 @@ public class ObjectDownloadListener implements WriteListener {
private ByteBuffer buffer = ByteBuffer.allocateDirect(8192);
/**
- * <p>Constructor for ObjectDownloadListener.</p>
+ * <p>
+ * Constructor for ObjectDownloadListener.
+ * </p>
*
* @param repository
* the repository storing large objects
@@ -61,6 +63,7 @@ public class ObjectDownloadListener implements WriteListener {
* @param id
* id of the object to be downloaded
* @throws java.io.IOException
+ * if an IO error occurred
*/
public ObjectDownloadListener(FileLfsRepository repository,
AsyncContext context, HttpServletResponse response,
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectUploadListener.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectUploadListener.java
index f5212fe259..1ac2b2072a 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectUploadListener.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/fs/ObjectUploadListener.java
@@ -92,7 +92,9 @@ public class ObjectUploadListener implements ReadListener {
* @param id
* a {@link org.eclipse.jgit.lfs.lib.AnyLongObjectId} object.
* @throws java.io.FileNotFoundException
+ * if file wasn't found
* @throws java.io.IOException
+ * if an IO error occurred
*/
public ObjectUploadListener(FileLfsRepository repository,
AsyncContext context, HttpServletRequest request,
@@ -146,7 +148,6 @@ public class ObjectUploadListener implements ReadListener {
}
}
- /** {@inheritDoc} */
@Override
public void onAllDataRead() throws IOException {
close();
@@ -156,6 +157,7 @@ public class ObjectUploadListener implements ReadListener {
* Close resources held by this listener
*
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected void close() throws IOException {
try {
@@ -174,7 +176,6 @@ public class ObjectUploadListener implements ReadListener {
}
}
- /** {@inheritDoc} */
@Override
public void onError(Throwable e) {
try {
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java
index c7c7a7146b..5ebce5d8c0 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java
@@ -58,7 +58,6 @@ public class S3Repository implements LargeFileRepository {
this.s3Config = config;
}
- /** {@inheritDoc} */
@Override
public Response.Action getDownloadAction(AnyLongObjectId oid) {
URL endpointUrl = getObjectUrl(oid);
@@ -75,7 +74,6 @@ public class S3Repository implements LargeFileRepository {
return a;
}
- /** {@inheritDoc} */
@Override
public Response.Action getUploadAction(AnyLongObjectId oid, long size) {
cacheObjectMetaData(oid, size);
@@ -95,13 +93,11 @@ public class S3Repository implements LargeFileRepository {
return a;
}
- /** {@inheritDoc} */
@Override
public Action getVerifyAction(AnyLongObjectId id) {
return null; // TODO(ms) implement this
}
- /** {@inheritDoc} */
@Override
public long getSize(AnyLongObjectId oid) throws IOException {
URL endpointUrl = getObjectUrl(oid);
@@ -130,7 +126,7 @@ public class S3Repository implements LargeFileRepository {
String contentLengthHeader = conn
.getHeaderField(HDR_CONTENT_LENGTH);
if (contentLengthHeader != null) {
- return Integer.parseInt(contentLengthHeader);
+ return Long.parseLong(contentLengthHeader);
}
}
return -1;
diff --git a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
index 86839773fd..a368244ee0 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -3,27 +3,27 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.lfs.test
Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.attributes;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
+Import-Package: org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.attributes;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.hamcrest.core;version="[1.1.0,3.0.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.runner;version="[4.13,5.0.0)",
org.junit.runners;version="[4.13,5.0.0)"
-Export-Package: org.eclipse.jgit.lfs.test;version="6.6.2";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="6.7.1";x-friends:="org.eclipse.jgit.lfs.server.test"
diff --git a/org.eclipse.jgit.lfs.test/pom.xml b/org.eclipse.jgit.lfs.test/pom.xml
index 092d2c038f..680e1cab0b 100644
--- a/org.eclipse.jgit.lfs.test/pom.xml
+++ b/org.eclipse.jgit.lfs.test/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.lfs.test</artifactId>
diff --git a/org.eclipse.jgit.lfs/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.lfs/.settings/org.eclipse.jdt.core.prefs
index 0857bc15f2..3a92f0c434 100644
--- a/org.eclipse.jgit.lfs/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.lfs/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
index 9f24a8188d..436b177eaa 100644
--- a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
@@ -3,32 +3,32 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.lfs
Bundle-SymbolicName: org.eclipse.jgit.lfs
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs;version="6.6.2",
- org.eclipse.jgit.lfs.errors;version="6.6.2",
- org.eclipse.jgit.lfs.internal;version="6.6.2";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
- org.eclipse.jgit.lfs.lib;version="6.6.2"
+Export-Package: org.eclipse.jgit.lfs;version="6.7.1",
+ org.eclipse.jgit.lfs.errors;version="6.7.1",
+ org.eclipse.jgit.lfs.internal;version="6.7.1";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
+ org.eclipse.jgit.lfs.lib;version="6.7.1"
Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: com.google.gson;version="[2.8.2,3.0.0)",
com.google.gson.stream;version="[2.8.2,3.0.0)",
- org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)";resolution:=optional,
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.attributes;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.diff;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.dircache;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.hooks;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.pack;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.io;version="[6.6.2,6.7.0)"
+ org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)";resolution:=optional,
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.attributes;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.diff;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.dircache;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.hooks;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.pack;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.io;version="[6.7.1,6.8.0)"
diff --git a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
index decae54132..eca1e3a9dc 100644
--- a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.lfs - Sources
Bundle-SymbolicName: org.eclipse.jgit.lfs.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index 178990fe9f..16931f25d0 100644
--- a/org.eclipse.jgit.lfs/pom.xml
+++ b/org.eclipse.jgit.lfs/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.lfs</artifactId>
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java
index f0526ff8a2..13b74dff7d 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java
@@ -95,7 +95,6 @@ public class CleanFilter extends FilterCommand {
this.aOut = new AtomicObjectOutputStream(tmpFile.toAbsolutePath());
}
- /** {@inheritDoc} */
@Override
public int run() throws IOException {
try {
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPointer.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPointer.java
index 0a8a3faec3..afe963640d 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPointer.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPointer.java
@@ -136,6 +136,7 @@ public class LfsPointer implements Comparable<LfsPointer> {
* @return an {@link org.eclipse.jgit.lfs.LfsPointer} or {@code null} if the
* stream was not parseable as LfsPointer
* @throws java.io.IOException
+ * if an IO error occurred
*/
@Nullable
public static LfsPointer parseLfsPointer(InputStream in)
@@ -264,7 +265,6 @@ public class LfsPointer implements Comparable<LfsPointer> {
return VERSION.equals(rest) || VERSION_LEGACY.equals(rest);
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "LfsPointer: oid=" + oid.name() + ", size=" //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/SmudgeFilter.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/SmudgeFilter.java
index c26a1bfbb3..b6515b92e1 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/SmudgeFilter.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/SmudgeFilter.java
@@ -127,6 +127,7 @@ public class SmudgeFilter extends FilterCommand {
* the objects to download
* @return the paths of all mediafiles which have been downloaded
* @throws IOException
+ * if an IO error occurred
* @since 4.11
*/
public static Collection<Path> downloadLfsResource(Lfs lfs, Repository db,
@@ -217,7 +218,6 @@ public class SmudgeFilter extends FilterCommand {
return downloadedPaths;
}
- /** {@inheritDoc} */
@Override
public int run() throws IOException {
try {
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/AtomicObjectOutputStream.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/AtomicObjectOutputStream.java
index 3f1f0acac4..009250294e 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/AtomicObjectOutputStream.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/AtomicObjectOutputStream.java
@@ -45,6 +45,7 @@ public class AtomicObjectOutputStream extends OutputStream {
* @param id
* a {@link org.eclipse.jgit.lfs.lib.AnyLongObjectId} object.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public AtomicObjectOutputStream(Path path, AnyLongObjectId id)
throws IOException {
@@ -61,6 +62,7 @@ public class AtomicObjectOutputStream extends OutputStream {
* @param path
* a {@link java.nio.file.Path} object.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public AtomicObjectOutputStream(Path path) throws IOException {
this(path, null);
@@ -78,25 +80,21 @@ public class AtomicObjectOutputStream extends OutputStream {
return id;
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
out.write(b);
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b) throws IOException {
out.write(b);
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b, int off, int len) throws IOException {
out.write(b, off, len);
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
out.close();
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConfig.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConfig.java
index 857ccbe056..0469337b1f 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConfig.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConfig.java
@@ -70,6 +70,7 @@ public class LfsConfig {
*
* @return the delegate {@link Config}
* @throws IOException
+ * if an IO error occurred
*/
private Config getDelegate() throws IOException {
if (delegate == null) {
@@ -86,6 +87,7 @@ public class LfsConfig {
* @return The loaded lfs config
*
* @throws IOException
+ * if an IO error occurred
*/
private Config load() throws IOException {
Config result = null;
@@ -114,6 +116,7 @@ public class LfsConfig {
*
* @return the config, or <code>null</code>
* @throws IOException
+ * if an IO error occurred
*/
@Nullable
private Config loadFromWorkingTree()
@@ -139,6 +142,7 @@ public class LfsConfig {
*
* @return the config, or <code>null</code> if the entry does not exist
* @throws IOException
+ * if an IO error occurred
*/
@Nullable
private Config loadFromIndex()
@@ -162,6 +166,7 @@ public class LfsConfig {
*
* @return the config, or <code>null</code> if the file does not exist
* @throws IOException
+ * if an IO error occurred
*/
@Nullable
private Config loadFromHead() throws IOException {
@@ -207,6 +212,7 @@ public class LfsConfig {
* the key name
* @return a String value from the config, <code>null</code> if not found
* @throws IOException
+ * if an IO error occurred
*/
@Nullable
public String getString(final String section, final String subsection,
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConnectionFactory.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConnectionFactory.java
index 12b688d157..f9c623d8b7 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConnectionFactory.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConnectionFactory.java
@@ -67,6 +67,7 @@ public class LfsConnectionFactory {
* @return the connection for the lfs server. e.g.
* "https://github.com/github/git-lfs.git/info/lfs"
* @throws IOException
+ * if an IO error occurred
*/
public static HttpConnection getLfsConnection(Repository db, String method,
String purpose) throws IOException {
@@ -287,6 +288,7 @@ public class LfsConnectionFactory {
* no timeout can be determined, the token will be used only once.
*
* @param action
+ * action with an additional expiration timestamp
*/
public AuthCache(Protocol.ExpiringAction action) {
this.cachedAction = action;
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AbbreviatedLongObjectId.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AbbreviatedLongObjectId.java
index 9016e53940..7ae805c33f 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AbbreviatedLongObjectId.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AbbreviatedLongObjectId.java
@@ -314,13 +314,11 @@ public final class AbbreviatedLongObjectId implements Serializable {
return mask(nibbles, word, v);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return (int) (w1 >> 32);
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
if (o instanceof AbbreviatedLongObjectId) {
@@ -355,7 +353,6 @@ public final class AbbreviatedLongObjectId implements Serializable {
return new String(b, 0, nibbles);
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AnyLongObjectId.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AnyLongObjectId.java
index d866db4a2d..75d500ef20 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AnyLongObjectId.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/AnyLongObjectId.java
@@ -249,7 +249,6 @@ public abstract class AnyLongObjectId implements Comparable<AnyLongObjectId> {
return abbr.prefixCompare(this) == 0;
}
- /** {@inheritDoc} */
@Override
public final int hashCode() {
return (int) (w1 >> 32);
@@ -267,7 +266,6 @@ public abstract class AnyLongObjectId implements Comparable<AnyLongObjectId> {
return other != null ? equals(this, other) : false;
}
- /** {@inheritDoc} */
@Override
public final boolean equals(Object o) {
if (o instanceof AnyLongObjectId) {
@@ -475,7 +473,6 @@ public abstract class AnyLongObjectId implements Comparable<AnyLongObjectId> {
dst[o--] = '0';
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LfsPointerFilter.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LfsPointerFilter.java
index 99bae49abb..75798ca0f1 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LfsPointerFilter.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LfsPointerFilter.java
@@ -41,7 +41,6 @@ public class LfsPointerFilter extends TreeFilter {
return pointer;
}
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk walk) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -63,13 +62,11 @@ public class LfsPointerFilter extends TreeFilter {
}
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
return false;
}
- /** {@inheritDoc} */
@Override
public TreeFilter clone() {
return new LfsPointerFilter();
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LongObjectId.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LongObjectId.java
index 15b3ca4c62..3959115462 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LongObjectId.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/LongObjectId.java
@@ -256,7 +256,6 @@ public class LongObjectId extends AnyLongObjectId implements Serializable {
w4 = src.w4;
}
- /** {@inheritDoc} */
@Override
public LongObjectId toObjectId() {
return this;
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/MutableLongObjectId.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/MutableLongObjectId.java
index 012e4ae915..5397d8135c 100644
--- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/MutableLongObjectId.java
+++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/lib/MutableLongObjectId.java
@@ -221,7 +221,6 @@ public class MutableLongObjectId extends AnyLongObjectId {
}
}
- /** {@inheritDoc} */
@Override
public LongObjectId toObjectId() {
return new LongObjectId(this);
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
index d5db5b2a86..1fce72013b 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
index 9c9eb31e16..3d9949e5ea 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
index b38d002829..2291429adf 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.gpg.bc"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
</url>
<requires>
- <import plugin="org.eclipse.jgit" version="6.6.2" match="equivalent"/>
+ <import plugin="org.eclipse.jgit" version="6.7.1" match="equivalent"/>
</requires>
<plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
index 5770ced0ba..bccaf7c931 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
index 384add81dc..7c18420318 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.http.apache"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
</url>
<requires>
- <import plugin="org.eclipse.jgit" version="6.6.2" match="equivalent"/>
+ <import plugin="org.eclipse.jgit" version="6.7.1" match="equivalent"/>
</requires>
<plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
index 104793bcc1..af9b03dba0 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
index 7b95d3bc33..63aa2ccfec 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.junit"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
@@ -24,7 +24,7 @@
<requires>
<import plugin="com.jcraft.jsch"/>
- <import plugin="org.eclipse.jgit" version="6.6.2" match="equivalent"/>
+ <import plugin="org.eclipse.jgit" version="6.7.1" match="equivalent"/>
</requires>
<plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
index 8cd1c4921d..df693201c5 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
index 0c1cbd025b..df3a3f118a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.lfs"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
</url>
<requires>
- <import feature="org.eclipse.jgit" version="6.6.2" match="equivalent"/>
+ <import feature="org.eclipse.jgit" version="6.7.1" match="equivalent"/>
</requires>
<plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
index 6a6fdef263..1a224ab406 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
index c3be1494d7..503e14db78 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.pgm"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
@@ -35,9 +35,9 @@
version="0.0.0"/>
<requires>
- <import feature="org.eclipse.jgit" version="6.6.2" match="equivalent"/>
- <import feature="org.eclipse.jgit.lfs" version="6.6.2" match="equivalent"/>
- <import feature="org.eclipse.jgit.ssh.apache" version="6.6.2" match="equivalent"/>
+ <import feature="org.eclipse.jgit" version="6.7.1" match="equivalent"/>
+ <import feature="org.eclipse.jgit.lfs" version="6.7.1" match="equivalent"/>
+ <import feature="org.eclipse.jgit.ssh.apache" version="6.7.1" match="equivalent"/>
</requires>
<plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
index 176ca747e5..37c30b3b68 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/category.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/category.xml
index a5d2304ba0..60349bcb06 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/category.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/category.xml
@@ -39,9 +39,6 @@
<bundle id="org.eclipse.jgit.ui" version="0.0.0">
<category name="JGit-additional-bundles"/>
</bundle>
- <bundle id="assertj-core">
- <category name="JGit-dependency-bundles"/>
- </bundle>
<bundle id="com.google.gson">
<category name="JGit-dependency-bundles"/>
</bundle>
@@ -87,45 +84,24 @@
<bundle id="org.eclipse.jetty.http">
<category name="JGit-dependency-bundles"/>
</bundle>
- <bundle id="org.eclipse.jetty.http.source">
- <category name="JGit-dependency-bundles"/>
- </bundle>
<bundle id="org.eclipse.jetty.io">
<category name="JGit-dependency-bundles"/>
</bundle>
- <bundle id="org.eclipse.jetty.io.source">
- <category name="JGit-dependency-bundles"/>
- </bundle>
<bundle id="org.eclipse.jetty.security">
<category name="JGit-dependency-bundles"/>
</bundle>
- <bundle id="org.eclipse.jetty.security.source">
- <category name="JGit-dependency-bundles"/>
- </bundle>
<bundle id="org.eclipse.jetty.server">
<category name="JGit-dependency-bundles"/>
</bundle>
- <bundle id="org.eclipse.jetty.server.source">
- <category name="JGit-dependency-bundles"/>
- </bundle>
<bundle id="org.eclipse.jetty.servlet">
<category name="JGit-dependency-bundles"/>
</bundle>
- <bundle id="org.eclipse.jetty.servlet.source">
- <category name="JGit-dependency-bundles"/>
- </bundle>
<bundle id="org.eclipse.jetty.util">
<category name="JGit-dependency-bundles"/>
</bundle>
- <bundle id="org.eclipse.jetty.util.source">
- <category name="JGit-dependency-bundles"/>
- </bundle>
<bundle id="org.eclipse.jetty.util.ajax">
<category name="JGit-dependency-bundles"/>
</bundle>
- <bundle id="org.eclipse.jetty.util.ajax.source">
- <category name="JGit-dependency-bundles"/>
- </bundle>
<bundle id="net.i2p.crypto.eddsa">
<category name="JGit-dependency-bundles"/>
</bundle>
@@ -228,6 +204,18 @@
<bundle id="org.tukaani.xz.source">
<category name="JGit-dependency-bundles"/>
</bundle>
+ <bundle id="org.eclipse.osgi">
+ <category name="JGit-dependency-bundles"/>
+ </bundle>
+ <bundle id="org.eclipse.osgi.source">
+ <category name="JGit-dependency-bundles"/>
+ </bundle>
+ <bundle id="org.osgi.service.cm">
+ <category name="JGit-dependency-bundles"/>
+ </bundle>
+ <bundle id="org.osgi.service.cm.source">
+ <category name="JGit-dependency-bundles"/>
+ </bundle>
<category-def name="JGit" label="Java implementation of Git">
<description>
Java implementation of Git
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
index ae31d3ad81..979dcae3dd 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.repository</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
index 2989aa80f0..2ba6d18036 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.source"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
</url>
<requires>
- <import feature="org.eclipse.jgit" version="6.6.2" match="equivalent"/>
+ <import feature="org.eclipse.jgit" version="6.7.1" match="equivalent"/>
</requires>
<plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
index fc45feb0ae..0d1e70f69e 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
@@ -30,7 +30,7 @@
<dependency>
<groupId>org.eclipse.jgit.feature</groupId>
<artifactId>org.eclipse.jgit</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</dependency>
</dependencies>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
index e838d1f812..1faa07d76d 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.ssh.apache"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
</url>
<requires>
- <import feature="org.eclipse.jgit" version="6.6.2" match="equivalent"/>
+ <import feature="org.eclipse.jgit" version="6.7.1" match="equivalent"/>
</requires>
<plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
index b93597f319..72b51fe310 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
index 126c5ba921..305b969f45 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.ssh.jsch"
label="%featureName"
- version="6.6.2.qualifier"
+ version="6.7.1.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
</url>
<requires>
- <import plugin="org.eclipse.jgit" version="6.6.2" match="equivalent"/>
+ <import plugin="org.eclipse.jgit" version="6.7.1" match="equivalent"/>
</requires>
<plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
index 8f72b4e095..a1c7c23ca0 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
index 7c4a732d99..5e3aacbadc 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
@@ -2,4 +2,4 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: JGit Target Platform Bundle
Bundle-SymbolicName: org.eclipse.jgit.target
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.target
deleted file mode 100644
index 04ff3f5afb..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.target
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde?>
-<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.17" sequenceNumber="1686300730">
- <locations>
- <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
- <unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
- <unit id="com.jcraft.jsch.source" version="0.1.55.v20221112-0806"/>
- <unit id="com.jcraft.jzlib" version="1.1.3.v20220502-1820"/>
- <unit id="com.jcraft.jzlib.source" version="1.1.3.v20220502-1820"/>
- <unit id="net.i2p.crypto.eddsa" version="0.3.0.v20220506-1020"/>
- <unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
- <unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
- </location>
- <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
- <unit id="org.eclipse.osgi" version="0.0.0"/>
- <repository location="https://download.eclipse.org/releases/2020-09/"/>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="xz">
- <dependencies>
- <dependency>
- <groupId>org.tukaani</groupId>
- <artifactId>xz</artifactId>
- <version>1.9</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="slf4j">
- <dependencies>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.7.36</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>1.7.36</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="sshd">
- <dependencies>
- <dependency>
- <groupId>org.apache.sshd</groupId>
- <artifactId>sshd-osgi</artifactId>
- <version>2.10.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.sshd</groupId>
- <artifactId>sshd-sftp</artifactId>
- <version>2.10.0</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
- <dependencies>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna</artifactId>
- <version>5.13.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna-platform</artifactId>
- <version>5.13.0</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jetty">
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-http</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-io</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-security</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util-ajax</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>jakarta.servlet</groupId>
- <artifactId>jakarta.servlet-api</artifactId>
- <version>4.0.4</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="javaewah">
- <dependencies>
- <dependency>
- <groupId>com.googlecode.javaewah</groupId>
- <artifactId>JavaEWAH</artifactId>
- <version>1.2.3</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="hamcrest">
- <dependencies>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest</artifactId>
- <version>2.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="gson">
- <dependencies>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.10.1</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bytebuddy">
- <dependencies>
- <dependency>
- <groupId>net.bytebuddy</groupId>
- <artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>net.bytebuddy</groupId>
- <artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bouncycastle">
- <dependencies>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="assertj">
- <dependencies>
- <dependency>
- <groupId>org.assertj</groupId>
- <artifactId>assertj-core</artifactId>
- <version>3.24.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="args4j">
- <dependencies>
- <dependency>
- <groupId>args4j</groupId>
- <artifactId>args4j</artifactId>
- <version>2.33</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="apache">
- <dependencies>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-compress</artifactId>
- <version>1.23.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- </locations>
-</target>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.tpd
deleted file mode 100644
index 2560b0cb02..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.tpd
+++ /dev/null
@@ -1,8 +0,0 @@
-target "jgit-4.17" with source configurePhase
-
-include "orbit/R20230531010532-2023-06.tpd"
-include "maven/dependencies.tpd"
-
-location "https://download.eclipse.org/releases/2020-09/" {
- org.eclipse.osgi lazy
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.target
deleted file mode 100644
index 156cfd66de..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.target
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde?>
-<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.18" sequenceNumber="1686300731">
- <locations>
- <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
- <unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
- <unit id="com.jcraft.jsch.source" version="0.1.55.v20221112-0806"/>
- <unit id="com.jcraft.jzlib" version="1.1.3.v20220502-1820"/>
- <unit id="com.jcraft.jzlib.source" version="1.1.3.v20220502-1820"/>
- <unit id="net.i2p.crypto.eddsa" version="0.3.0.v20220506-1020"/>
- <unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
- <unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
- </location>
- <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
- <unit id="org.eclipse.osgi" version="0.0.0"/>
- <repository location="https://download.eclipse.org/releases/2020-12/"/>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="xz">
- <dependencies>
- <dependency>
- <groupId>org.tukaani</groupId>
- <artifactId>xz</artifactId>
- <version>1.9</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="slf4j">
- <dependencies>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.7.36</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>1.7.36</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="sshd">
- <dependencies>
- <dependency>
- <groupId>org.apache.sshd</groupId>
- <artifactId>sshd-osgi</artifactId>
- <version>2.10.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.sshd</groupId>
- <artifactId>sshd-sftp</artifactId>
- <version>2.10.0</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
- <dependencies>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna</artifactId>
- <version>5.13.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna-platform</artifactId>
- <version>5.13.0</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jetty">
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-http</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-io</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-security</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util-ajax</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>jakarta.servlet</groupId>
- <artifactId>jakarta.servlet-api</artifactId>
- <version>4.0.4</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="javaewah">
- <dependencies>
- <dependency>
- <groupId>com.googlecode.javaewah</groupId>
- <artifactId>JavaEWAH</artifactId>
- <version>1.2.3</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="hamcrest">
- <dependencies>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest</artifactId>
- <version>2.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="gson">
- <dependencies>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.10.1</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bytebuddy">
- <dependencies>
- <dependency>
- <groupId>net.bytebuddy</groupId>
- <artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>net.bytebuddy</groupId>
- <artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bouncycastle">
- <dependencies>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="assertj">
- <dependencies>
- <dependency>
- <groupId>org.assertj</groupId>
- <artifactId>assertj-core</artifactId>
- <version>3.24.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="args4j">
- <dependencies>
- <dependency>
- <groupId>args4j</groupId>
- <artifactId>args4j</artifactId>
- <version>2.33</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="apache">
- <dependencies>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-compress</artifactId>
- <version>1.23.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- </locations>
-</target>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.tpd
deleted file mode 100644
index de0655fe99..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.tpd
+++ /dev/null
@@ -1,8 +0,0 @@
-target "jgit-4.18" with source configurePhase
-
-include "orbit/R20230531010532-2023-06.tpd"
-include "maven/dependencies.tpd"
-
-location "https://download.eclipse.org/releases/2020-12/" {
- org.eclipse.osgi lazy
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.tpd
deleted file mode 100644
index 9f1802ded4..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.tpd
+++ /dev/null
@@ -1,8 +0,0 @@
-target "jgit-4.19-staging" with source configurePhase
-
-include "orbit/R20230531010532-2023-06.tpd"
-include "maven/dependencies.tpd"
-
-location "https://download.eclipse.org/releases/2021-03/" {
- org.eclipse.osgi lazy
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.target
deleted file mode 100644
index 0d7b240e74..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.target
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde?>
-<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.20" sequenceNumber="1686300731">
- <locations>
- <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
- <unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
- <unit id="com.jcraft.jsch.source" version="0.1.55.v20221112-0806"/>
- <unit id="com.jcraft.jzlib" version="1.1.3.v20220502-1820"/>
- <unit id="com.jcraft.jzlib.source" version="1.1.3.v20220502-1820"/>
- <unit id="net.i2p.crypto.eddsa" version="0.3.0.v20220506-1020"/>
- <unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
- <unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
- </location>
- <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
- <unit id="org.eclipse.osgi" version="0.0.0"/>
- <repository location="https://download.eclipse.org/releases/2021-06/"/>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="xz">
- <dependencies>
- <dependency>
- <groupId>org.tukaani</groupId>
- <artifactId>xz</artifactId>
- <version>1.9</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="slf4j">
- <dependencies>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.7.36</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>1.7.36</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="sshd">
- <dependencies>
- <dependency>
- <groupId>org.apache.sshd</groupId>
- <artifactId>sshd-osgi</artifactId>
- <version>2.10.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.sshd</groupId>
- <artifactId>sshd-sftp</artifactId>
- <version>2.10.0</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
- <dependencies>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna</artifactId>
- <version>5.13.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna-platform</artifactId>
- <version>5.13.0</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jetty">
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-http</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-io</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-security</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util-ajax</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>jakarta.servlet</groupId>
- <artifactId>jakarta.servlet-api</artifactId>
- <version>4.0.4</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="javaewah">
- <dependencies>
- <dependency>
- <groupId>com.googlecode.javaewah</groupId>
- <artifactId>JavaEWAH</artifactId>
- <version>1.2.3</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="hamcrest">
- <dependencies>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest</artifactId>
- <version>2.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="gson">
- <dependencies>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.10.1</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bytebuddy">
- <dependencies>
- <dependency>
- <groupId>net.bytebuddy</groupId>
- <artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>net.bytebuddy</groupId>
- <artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bouncycastle">
- <dependencies>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="assertj">
- <dependencies>
- <dependency>
- <groupId>org.assertj</groupId>
- <artifactId>assertj-core</artifactId>
- <version>3.24.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="args4j">
- <dependencies>
- <dependency>
- <groupId>args4j</groupId>
- <artifactId>args4j</artifactId>
- <version>2.33</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="apache">
- <dependencies>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-compress</artifactId>
- <version>1.23.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
- </location>
- </locations>
-</target>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.tpd
deleted file mode 100644
index 97a5e8226b..0000000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.tpd
+++ /dev/null
@@ -1,8 +0,0 @@
-target "jgit-4.20" with source configurePhase
-
-include "orbit/R20230531010532-2023-06.tpd"
-include "maven/dependencies.tpd"
-
-location "https://download.eclipse.org/releases/2021-06/" {
- org.eclipse.osgi lazy
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.target
index 94f671db88..ce14ebb8dd 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.21" sequenceNumber="1686300731">
+<target name="jgit-4.21" sequenceNumber="1753139747">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,251 +12,261 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
- <repository location="https://download.eclipse.org/releases/2021-09/"/>
+ <repository location="https://download.eclipse.org/releases/2021-12/"/>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="xz">
- <dependencies>
- <dependency>
- <groupId>org.tukaani</groupId>
- <artifactId>xz</artifactId>
- <version>1.9</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.tukaani</groupId>
+ <artifactId>xz</artifactId>
+ <version>1.9</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="slf4j">
- <dependencies>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.7.36</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>1.7.36</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.7.36</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <version>1.7.36</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="sshd">
- <dependencies>
- <dependency>
- <groupId>org.apache.sshd</groupId>
- <artifactId>sshd-osgi</artifactId>
- <version>2.10.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.sshd</groupId>
- <artifactId>sshd-sftp</artifactId>
- <version>2.10.0</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sshd</groupId>
+ <artifactId>sshd-osgi</artifactId>
+ <version>2.10.0</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sshd</groupId>
+ <artifactId>sshd-sftp</artifactId>
+ <version>2.10.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
- <dependencies>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna</artifactId>
- <version>5.13.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna-platform</artifactId>
- <version>5.13.0</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>net.java.dev.jna</groupId>
+ <artifactId>jna</artifactId>
+ <version>5.13.0</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>net.java.dev.jna</groupId>
+ <artifactId>jna-platform</artifactId>
+ <version>5.13.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jetty">
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-http</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-io</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-security</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util-ajax</artifactId>
- <version>10.0.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>jakarta.servlet</groupId>
- <artifactId>jakarta.servlet-api</artifactId>
- <version>4.0.4</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-http</artifactId>
+ <version>10.0.15</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-io</artifactId>
+ <version>10.0.15</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-security</artifactId>
+ <version>10.0.15</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ <version>10.0.15</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlet</artifactId>
+ <version>10.0.15</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <version>10.0.15</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-util-ajax</artifactId>
+ <version>10.0.15</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ <version>4.0.4</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="javaewah">
- <dependencies>
- <dependency>
- <groupId>com.googlecode.javaewah</groupId>
- <artifactId>JavaEWAH</artifactId>
- <version>1.2.3</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>com.googlecode.javaewah</groupId>
+ <artifactId>JavaEWAH</artifactId>
+ <version>1.2.3</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="hamcrest">
- <dependencies>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest</artifactId>
- <version>2.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest</artifactId>
+ <version>2.2</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="gson">
- <dependencies>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.10.1</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.10.1</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bytebuddy">
- <dependencies>
- <dependency>
- <groupId>net.bytebuddy</groupId>
- <artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>net.bytebuddy</groupId>
- <artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>net.bytebuddy</groupId>
+ <artifactId>byte-buddy</artifactId>
+ <version>1.14.7</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>net.bytebuddy</groupId>
+ <artifactId>byte-buddy-agent</artifactId>
+ <version>1.14.7</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bouncycastle">
- <dependencies>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcpg-jdk18on</artifactId>
+ <version>1.76</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk18on</artifactId>
+ <version>1.76</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcpkix-jdk18on</artifactId>
+ <version>1.76</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcutil-jdk18on</artifactId>
+ <version>1.76</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="assertj">
- <dependencies>
- <dependency>
- <groupId>org.assertj</groupId>
- <artifactId>assertj-core</artifactId>
- <version>3.24.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <version>3.24.2</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="args4j">
- <dependencies>
- <dependency>
- <groupId>args4j</groupId>
- <artifactId>args4j</artifactId>
- <version>2.33</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>args4j</groupId>
+ <artifactId>args4j</artifactId>
+ <version>2.33</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="apache">
- <dependencies>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-compress</artifactId>
- <version>1.23.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.2</version>
- <type>jar</type>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.16.0</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-compress</artifactId>
+ <version>1.23.0</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.2</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
</locations>
</target>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.tpd
index be434747b6..deff8a4809 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.tpd
@@ -1,8 +1,8 @@
target "jgit-4.21" with source configurePhase
-include "orbit/R20230531010532-2023-06.tpd"
+include "orbit/orbit-4.29.tpd"
include "maven/dependencies.tpd"
-location "https://download.eclipse.org/releases/2021-09/" {
+location "https://download.eclipse.org/releases/2021-12/" {
org.eclipse.osgi lazy
}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.target
index e14dd30130..f241937486 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.22" sequenceNumber="1686300729">
+<target name="jgit-4.22" sequenceNumber="1693839266">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,21 +12,21 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
@@ -74,6 +74,16 @@
</dependency>
</dependencies>
</location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
<dependencies>
<dependency>
@@ -177,13 +187,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -193,25 +203,25 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -241,7 +251,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.15</version>
+ <version>1.16.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.tpd
index 2f8f60ec9d..f258eeeca3 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.tpd
@@ -1,6 +1,6 @@
target "jgit-4.22" with source configurePhase
-include "orbit/R20230531010532-2023-06.tpd"
+include "orbit/orbit-4.29.tpd"
include "maven/dependencies.tpd"
location "https://download.eclipse.org/releases/2021-12/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.target
index 5455f076ec..3468e11304 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.23" sequenceNumber="1686300730">
+<target name="jgit-4.23" sequenceNumber="1693839266">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,21 +12,21 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
@@ -74,6 +74,16 @@
</dependency>
</dependencies>
</location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
<dependencies>
<dependency>
@@ -177,13 +187,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -193,25 +203,25 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -241,7 +251,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.15</version>
+ <version>1.16.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.tpd
index a4a1c52875..5bdffaeaaa 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.tpd
@@ -1,6 +1,6 @@
target "jgit-4.23" with source configurePhase
-include "orbit/R20230531010532-2023-06.tpd"
+include "orbit/orbit-4.29.tpd"
include "maven/dependencies.tpd"
location "https://download.eclipse.org/releases/2022-03/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.target
index c383bce284..2c1d9617fe 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.24" sequenceNumber="1686300729">
+<target name="jgit-4.24" sequenceNumber="1693839266">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,21 +12,21 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
@@ -74,6 +74,16 @@
</dependency>
</dependencies>
</location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
<dependencies>
<dependency>
@@ -177,13 +187,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -193,25 +203,25 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -241,7 +251,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.15</version>
+ <version>1.16.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.tpd
index 980e7f99b9..cd61ee0223 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.tpd
@@ -1,6 +1,6 @@
target "jgit-4.24" with source configurePhase
-include "orbit/R20230531010532-2023-06.tpd"
+include "orbit/orbit-4.29.tpd"
include "maven/dependencies.tpd"
location "https://download.eclipse.org/releases/2022-06/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.target
index 185b543b03..ed3cd4de7a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.25" sequenceNumber="1686300730">
+<target name="jgit-4.25" sequenceNumber="1693839266">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,21 +12,21 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
@@ -74,6 +74,16 @@
</dependency>
</dependencies>
</location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
<dependencies>
<dependency>
@@ -177,13 +187,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -193,25 +203,25 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -241,7 +251,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.15</version>
+ <version>1.16.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.tpd
index c6f636efbe..c7f1591804 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.tpd
@@ -1,6 +1,6 @@
target "jgit-4.25" with source configurePhase
-include "orbit/R20230531010532-2023-06.tpd"
+include "orbit/orbit-4.29.tpd"
include "maven/dependencies.tpd"
location "https://download.eclipse.org/releases/2022-09/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.target
index 811eb849d8..cfd906f710 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.26" sequenceNumber="1686300730">
+<target name="jgit-4.26" sequenceNumber="1693839266">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,21 +12,21 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
@@ -74,6 +74,16 @@
</dependency>
</dependencies>
</location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
<dependencies>
<dependency>
@@ -177,13 +187,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -193,25 +203,25 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -241,7 +251,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.15</version>
+ <version>1.16.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.tpd
index 1e2c19a80c..6d2fea173a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.tpd
@@ -1,6 +1,6 @@
target "jgit-4.26" with source configurePhase
-include "orbit/R20230531010532-2023-06.tpd"
+include "orbit/orbit-4.29.tpd"
include "maven/dependencies.tpd"
location "https://download.eclipse.org/releases/2022-12/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.target
index a1e02e7cb2..0e63b9f477 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.27" sequenceNumber="1686300730">
+<target name="jgit-4.27" sequenceNumber="1693839266">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,21 +12,21 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
@@ -74,6 +74,16 @@
</dependency>
</dependencies>
</location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
<dependencies>
<dependency>
@@ -177,13 +187,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -193,25 +203,25 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -241,7 +251,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.15</version>
+ <version>1.16.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.tpd
index bbb4baf5ac..c359ccd10a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.tpd
@@ -1,6 +1,6 @@
target "jgit-4.27" with source configurePhase
-include "orbit/R20230531010532-2023-06.tpd"
+include "orbit/orbit-4.29.tpd"
include "maven/dependencies.tpd"
location "https://download.eclipse.org/releases/2023-03/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.target
index cd8f781a7b..4d7d67fb1e 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.28" sequenceNumber="1686300646">
+<target name="jgit-4.28" sequenceNumber="1693839266">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,25 +12,25 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
- <repository location="https://download.eclipse.org/staging/2023-06"/>
+ <repository location="https://download.eclipse.org/releases/2023-06"/>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="xz">
<dependencies>
@@ -74,6 +74,16 @@
</dependency>
</dependencies>
</location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
<dependencies>
<dependency>
@@ -177,13 +187,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -193,25 +203,25 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -241,7 +251,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.15</version>
+ <version>1.16.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.tpd
index 46185ca91f..814b1219c3 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.tpd
@@ -1,8 +1,8 @@
target "jgit-4.28" with source configurePhase
-include "orbit/R20230531010532-2023-06.tpd"
+include "orbit/orbit-4.29.tpd"
include "maven/dependencies.tpd"
-location "https://download.eclipse.org/staging/2023-06" {
+location "https://download.eclipse.org/releases/2023-06" {
org.eclipse.osgi lazy
}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.target
index 14b15fae56..1fcfdbc1d0 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.19-staging" sequenceNumber="1686300730">
+<target name="jgit-4.29" sequenceNumber="1693839266">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20221112-0806"/>
@@ -12,25 +12,25 @@
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20220506-1020"/>
<unit id="org.apache.ant" version="1.10.12.v20211102-1452"/>
<unit id="org.apache.ant.source" version="1.10.12.v20211102-1452"/>
- <unit id="org.apache.httpcomponents.httpclient" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14.v20230516-1249"/>
- <unit id="org.apache.httpcomponents.httpcore" version="4.4.16.v20221207-1049"/>
- <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16.v20221207-1049"/>
- <unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/>
- <unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/>
- <unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/>
- <unit id="org.junit" version="4.13.2.v20211018-1956"/>
- <unit id="org.junit.source" version="4.13.2.v20211018-1956"/>
- <unit id="org.mockito.mockito-core" version="4.8.1.v20221103-2317"/>
- <unit id="org.mockito.mockito-core.source" version="4.8.1.v20221103-2317"/>
- <unit id="org.objenesis" version="3.3.0.v20221103-2317"/>
- <unit id="org.objenesis.source" version="3.3.0.v20221103-2317"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository"/>
+ <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+ <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+ <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+ <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+ <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+ <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+ <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+ <unit id="org.objenesis" version="3.3.0"/>
+ <unit id="org.objenesis.source" version="3.3.0"/>
+ <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+ <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+ <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="org.eclipse.osgi" version="0.0.0"/>
- <repository location="https://download.eclipse.org/releases/2021-03/"/>
+ <repository location="https://download.eclipse.org/releases/2023-09"/>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="xz">
<dependencies>
@@ -74,6 +74,16 @@
</dependency>
</dependencies>
</location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+ <dependencies>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>5.5.0</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
<dependencies>
<dependency>
@@ -177,13 +187,13 @@
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
- <version>1.12.18</version>
+ <version>1.14.7</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -193,25 +203,25 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk18on</artifactId>
- <version>1.73</version>
+ <version>1.76</version>
<type>jar</type>
</dependency>
</dependencies>
@@ -241,7 +251,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.15</version>
+ <version>1.16.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.tpd
new file mode 100644
index 0000000000..3318e4f2e5
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.tpd
@@ -0,0 +1,8 @@
+target "jgit-4.29" with source configurePhase
+
+include "orbit/orbit-4.29.tpd"
+include "maven/dependencies.tpd"
+
+location "https://download.eclipse.org/releases/2023-09" {
+ org.eclipse.osgi lazy
+}
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 cbb7d1e104..ec4adf99ae 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 @@ maven apache
dependency {
groupId = "commons-codec"
artifactId = "commons-codec"
- version = "1.15"
+ version = "1.16.0"
}
dependency {
groupId = "org.apache.commons"
@@ -59,22 +59,22 @@ maven bouncycastle
dependency {
groupId = "org.bouncycastle"
artifactId = "bcpg-jdk18on"
- version = "1.73"
+ version = "1.76"
}
dependency {
groupId = "org.bouncycastle"
artifactId = "bcprov-jdk18on"
- version = "1.73"
+ version = "1.76"
}
dependency {
groupId = "org.bouncycastle"
artifactId = "bcpkix-jdk18on"
- version = "1.73"
+ version = "1.76"
}
dependency {
groupId = "org.bouncycastle"
artifactId = "bcutil-jdk18on"
- version = "1.73"
+ version = "1.76"
}
}
@@ -87,12 +87,12 @@ maven bytebuddy
dependency {
groupId = "net.bytebuddy"
artifactId = "byte-buddy"
- version = "1.12.18"
+ version = "1.14.7"
}
dependency {
groupId = "net.bytebuddy"
artifactId = "byte-buddy-agent"
- version = "1.12.18"
+ version = "1.14.7"
}
}
@@ -201,6 +201,19 @@ maven jna
}
}
+maven mockito
+ scope = compile
+ dependencyDepth = none
+ missingManifest = error
+ includeSources
+{
+ dependency {
+ groupId = "org.mockito"
+ artifactId = "mockito-core"
+ version = "5.5.0"
+ }
+}
+
maven sshd
scope = compile
dependencyDepth = none
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd
index 089981c95e..46055d3728 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/R20230531010532-2023-06.tpd
@@ -20,8 +20,6 @@ location "https://download.eclipse.org/tools/orbit/downloads/drops/R202305310105
org.hamcrest.library.source [1.3.0.v20180524-2246,1.3.0.v20180524-2246]
org.junit [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
org.junit.source [4.13.2.v20211018-1956,4.13.2.v20211018-1956]
- org.mockito.mockito-core [4.8.1.v20221103-2317,4.8.1.v20221103-2317]
- org.mockito.mockito-core.source [4.8.1.v20221103-2317,4.8.1.v20221103-2317]
org.objenesis [3.3.0.v20221103-2317,3.3.0.v20221103-2317]
org.objenesis.source [3.3.0.v20221103-2317,3.3.0.v20221103-2317]
}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.29.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.29.tpd
new file mode 100644
index 0000000000..70a17a1ddc
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.29.tpd
@@ -0,0 +1,27 @@
+target "orbit-4.29" with source configurePhase
+// see https://download.eclipse.org/tools/orbit/downloads/
+
+location "https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.29.0" {
+ com.jcraft.jsch [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
+ com.jcraft.jsch.source [0.1.55.v20221112-0806,0.1.55.v20221112-0806]
+ com.jcraft.jzlib [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
+ com.jcraft.jzlib.source [1.1.3.v20220502-1820,1.1.3.v20220502-1820]
+ net.i2p.crypto.eddsa [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
+ net.i2p.crypto.eddsa.source [0.3.0.v20220506-1020,0.3.0.v20220506-1020]
+ org.apache.ant [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
+ org.apache.ant.source [1.10.12.v20211102-1452,1.10.12.v20211102-1452]
+ org.apache.httpcomponents.httpclient [4.5.14,4.5.14]
+ org.apache.httpcomponents.httpclient.source [4.5.14,4.5.14]
+ org.apache.httpcomponents.httpcore [4.4.16,4.4.16]
+ org.apache.httpcomponents.httpcore.source [4.4.16,4.4.16]
+ org.hamcrest.core [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
+ org.hamcrest.core.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
+ org.hamcrest.library [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
+ org.hamcrest.library.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
+ org.junit [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
+ org.junit.source [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
+ org.objenesis [3.3,3.3]
+ org.objenesis.source [3.3,3.3]
+ org.osgi.service.cm [1.6.1.202109301733,1.6.1.202109301733]
+ org.osgi.service.cm.source [1.6.1.202109301733,1.6.1.202109301733]
+}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
index 86d2cbb9ae..666bca4bd7 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
@@ -16,7 +16,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.target</artifactId>
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index b5f5605407..ee36f150f4 100644
--- a/org.eclipse.jgit.packaging/pom.xml
+++ b/org.eclipse.jgit.packaging/pom.xml
@@ -16,15 +16,15 @@
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JGit Tycho Parent</name>
<properties>
<java.version>11</java.version>
- <tycho-version>4.0.8</tycho-version>
- <target-platform>jgit-4.17</target-platform>
+ <tycho-version>4.0.13</tycho-version>
+ <target-platform>jgit-4.21</target-platform>
</properties>
<pluginRepositories>
@@ -32,14 +32,6 @@
<id>repo.eclipse.org.cbi-releases</id>
<url>https://repo.eclipse.org/content/repositories/cbi-releases/</url>
</pluginRepository>
- <pluginRepository>
- <id>repo.eclipse.org.cbi-snapshots</id>
- <url>https://repo.eclipse.org/content/repositories/cbi-snapshots/</url>
- </pluginRepository>
- <pluginRepository>
- <id>tycho-snapshots</id>
- <url>https://repo.eclipse.org/content/repositories/tycho-snapshots/</url>
- </pluginRepository>
</pluginRepositories>
<modules>
@@ -190,6 +182,19 @@
</rules>
</configuration>
</execution>
+ <execution>
+ <id>enforce-java</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <rules>
+ <requireJavaVersion>
+ <version>17</version>
+ </requireJavaVersion>
+ </rules>
+ </configuration>
+ </execution>
</executions>
</plugin>
<plugin>
@@ -298,7 +303,7 @@
<plugin>
<groupId>org.eclipse.cbi.maven.plugins</groupId>
<artifactId>eclipse-jarsigner-plugin</artifactId>
- <version>1.3.5</version>
+ <version>1.4.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
diff --git a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
index 598aa02f9c..dddf560405 100644
--- a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
@@ -3,30 +3,30 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.pgm.test
Bundle-SymbolicName: org.eclipse.jgit.pgm.test
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.diff;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.dircache;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.diffmergetool;version="6.6.2",
- org.eclipse.jgit.internal.storage.file;version="6.6.2",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.merge;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.pgm;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.pgm.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.pgm.opt;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.io;version="[6.6.2,6.7.0)",
+Import-Package: org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.diff;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.dircache;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="6.7.1",
+ org.eclipse.jgit.internal.storage.file;version="6.7.1",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.merge;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.pgm;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.pgm.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.pgm.opt;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.io;version="[6.7.1,6.8.0)",
org.hamcrest.core;bundle-version="[1.1.0,3.0.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.rules;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.pgm.test/pom.xml b/org.eclipse.jgit.pgm.test/pom.xml
index 84887faa53..b19a7be8f8 100644
--- a/org.eclipse.jgit.pgm.test/pom.xml
+++ b/org.eclipse.jgit.pgm.test/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.pgm.test</artifactId>
diff --git a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/MergeToolTest.java b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/MergeToolTest.java
index 54c4f26099..65c7e9a88c 100644
--- a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/MergeToolTest.java
+++ b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/MergeToolTest.java
@@ -91,7 +91,7 @@ public class MergeToolTest extends ToolTestCase {
createMergeConflict();
- String araxisErrorLine = "compare: unrecognized option `-wait' @ error/compare.c/CompareImageCommand/1123.";
+ String araxisErrorLine = "compare-im6.q16: unrecognized option `-wait' @ error/compare.c/CompareImageCommand/1131.";
String[] expectedErrorOutput = { araxisErrorLine, araxisErrorLine, };
runAndCaptureUsingInitRaw(Arrays.asList(expectedErrorOutput),
MERGE_TOOL, "--no-prompt");
diff --git a/org.eclipse.jgit.pgm/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.pgm/.settings/org.eclipse.jdt.core.prefs
index 2abe9529d3..b27b6c3c7d 100644
--- a/org.eclipse.jgit.pgm/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.pgm/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
index 250acbb73b..235c2fcfcf 100644
--- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.pgm
Bundle-SymbolicName: org.eclipse.jgit.pgm
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -14,49 +14,49 @@ Import-Package: javax.servlet;version="[3.1.0,5.0.0)",
org.eclipse.jetty.servlet;version="[10.0.0,11.0.0)",
org.eclipse.jetty.util;version="[10.0.0,11.0.0)",
org.eclipse.jetty.util.component;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.archive;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.awtui;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.blame;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.diff;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.dircache;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.gitrepo;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.io;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.server;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.server.fs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs.server.s3;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.merge;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.notes;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revplot;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk.filter;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.pack;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.resolver;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.sshd;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.io;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.archive;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.awtui;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.blame;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.diff;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.dircache;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.gitrepo;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.io;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.server;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.merge;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.notes;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revplot;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk.filter;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.pack;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.sshd;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.io;version="[6.7.1,6.8.0)",
org.kohsuke.args4j;version="[2.33.0,3.0.0)",
org.kohsuke.args4j.spi;version="[2.33.0,3.0.0)"
-Export-Package: org.eclipse.jgit.console;version="6.6.2";
+Export-Package: org.eclipse.jgit.console;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="6.6.2";
+ org.eclipse.jgit.pgm;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.eclipse.jgit.util.io,
org.eclipse.jgit.awtui,
@@ -68,14 +68,14 @@ Export-Package: org.eclipse.jgit.console;version="6.6.2";
org.eclipse.jgit.treewalk,
org.eclipse.jgit.api,
javax.swing",
- org.eclipse.jgit.pgm.debug;version="6.6.2";
+ org.eclipse.jgit.pgm.debug;version="6.7.1";
uses:="org.eclipse.jgit.util.io,
org.eclipse.jgit.pgm,
org.eclipse.jetty.servlet",
- org.eclipse.jgit.pgm.internal;version="6.6.2";
+ org.eclipse.jgit.pgm.internal;version="6.7.1";
x-friends:="org.eclipse.jgit.pgm.test,
org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="6.6.2";
+ org.eclipse.jgit.pgm.opt;version="6.7.1";
uses:="org.kohsuke.args4j,
org.eclipse.jgit.lib,
org.eclipse.jgit.revwalk,
diff --git a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
index 3a3b108d07..0755ae51ef 100644
--- a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.pgm - Sources
Bundle-SymbolicName: org.eclipse.jgit.pgm.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin b/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
index ea1d1e3faa..08d37278de 100644
--- a/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
+++ b/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
@@ -46,6 +46,7 @@ org.eclipse.jgit.pgm.debug.BenchmarkReftable
org.eclipse.jgit.pgm.debug.DiffAlgorithms
org.eclipse.jgit.pgm.debug.LfsStore
org.eclipse.jgit.pgm.debug.MakeCacheTree
+org.eclipse.jgit.pgm.debug.ReadChangedPathFilter
org.eclipse.jgit.pgm.debug.ReadDirCache
org.eclipse.jgit.pgm.debug.ReadReftable
org.eclipse.jgit.pgm.debug.RebuildCommitGraph
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index 06975ff1f8..c1916abbc8 100644
--- a/org.eclipse.jgit.pgm/pom.xml
+++ b/org.eclipse.jgit.pgm/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.pgm</artifactId>
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleAuthenticator.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleAuthenticator.java
index 681cf5d626..201fa3d22d 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleAuthenticator.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleAuthenticator.java
@@ -38,7 +38,6 @@ public class ConsoleAuthenticator extends CachedAuthenticator {
private final Console cons = System.console();
- /** {@inheritDoc} */
@Override
protected PasswordAuthentication promptPasswordAuthentication() {
final String realm = formatRealm();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleCredentialsProvider.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleCredentialsProvider.java
index 63ce838f0b..5bdfc7bb51 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleCredentialsProvider.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/console/ConsoleCredentialsProvider.java
@@ -43,13 +43,11 @@ public class ConsoleCredentialsProvider extends CredentialsProvider {
private final Console cons = System.console();
- /** {@inheritDoc} */
@Override
public boolean isInteractive() {
return true;
}
- /** {@inheritDoc} */
@Override
public boolean supports(CredentialItem... items) {
for (CredentialItem i : items) {
@@ -71,7 +69,6 @@ public class ConsoleCredentialsProvider extends CredentialsProvider {
return true;
}
- /** {@inheritDoc} */
@Override
public boolean get(URIish uri, CredentialItem... items)
throws UnsupportedCredentialItem {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Add.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Add.java
index ff0b55d1b8..2ebab5e5d2 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Add.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Add.java
@@ -31,7 +31,6 @@ class Add extends TextBuiltin {
@Argument(required = true, metaVar = "metaVar_filepattern", usage = "usage_filesToAddContentFrom")
private List<String> filepatterns = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java
index 0acad86f40..9c0915c631 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java
@@ -42,13 +42,11 @@ class AmazonS3Client extends TextBuiltin {
@Argument(index = 3, metaVar = "metaVar_KEY", required = true)
private String key;
- /** {@inheritDoc} */
@Override
protected final boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
final AmazonS3 s3 = new AmazonS3(properties());
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java
index 4028105b87..f98f8cb728 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java
@@ -41,7 +41,6 @@ class Archive extends TextBuiltin {
@Option(name = "--output", aliases = { "-o" }, metaVar = "metaVar_file", usage = "usage_archiveOutput")
private String output;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
if (tree == null)
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java
index 1a3a2f6f4b..93d02c196c 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java
@@ -104,7 +104,6 @@ class Blame extends TextBuiltin {
/** Used to get a current time stamp for lines without commit. */
private final PersonIdent dummyDate = new PersonIdent("", ""); //$NON-NLS-1$ //$NON-NLS-2$
- /** {@inheritDoc} */
@Override
protected void run() {
if (file == null) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Branch.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Branch.java
index 27668b5378..e680394a79 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Branch.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Branch.java
@@ -148,7 +148,6 @@ class Branch extends TextBuiltin {
private int maxNameLength;
- /** {@inheritDoc} */
@Override
protected void run() {
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
index 98724bfceb..229d54d44f 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
@@ -51,7 +51,6 @@ class Checkout extends TextBuiltin {
@Option(name = "--", metaVar = "metaVar_paths", handler = RestOfArgumentsHandler.class)
private List<String> paths = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
if (createBranch) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clean.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clean.java
index 6db73e632d..348f2e7dbb 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clean.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clean.java
@@ -32,7 +32,6 @@ class Clean extends TextBuiltin {
@Option(name = "--dryRun", aliases = { "-n" })
private boolean dryRun = false;
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
index 9f9fa8fe99..1efba55f05 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
@@ -72,13 +72,11 @@ class Clone extends AbstractFetchCommand implements CloneCommand.Callback {
@Argument(index = 1, metaVar = "metaVar_directory")
private String localName;
- /** {@inheritDoc} */
@Override
protected final boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
if (localName != null && gitdir != null)
@@ -148,7 +146,6 @@ class Clone extends AbstractFetchCommand implements CloneCommand.Callback {
}
}
- /** {@inheritDoc} */
@Override
public void initializedSubmodules(Collection<String> submodules) {
try {
@@ -162,7 +159,6 @@ class Clone extends AbstractFetchCommand implements CloneCommand.Callback {
}
}
- /** {@inheritDoc} */
@Override
public void cloningSubmodule(String path) {
try {
@@ -174,7 +170,6 @@ class Clone extends AbstractFetchCommand implements CloneCommand.Callback {
}
}
- /** {@inheritDoc} */
@Override
public void checkingOut(AnyObjectId commit, String path) {
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CommandRef.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CommandRef.java
index 7a197a75a5..fb5a8fffc1 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CommandRef.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CommandRef.java
@@ -141,7 +141,6 @@ public class CommandRef {
return r;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Commit.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Commit.java
index b0713f782c..8df028d2e2 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Commit.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Commit.java
@@ -84,7 +84,6 @@ class Commit extends TextBuiltin {
@Argument(metaVar = "metaVar_commitPaths", usage = "usage_CommitPaths")
private List<String> paths = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java
index 979c6fa945..52f40c2957 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java
@@ -68,7 +68,6 @@ class Config extends TextBuiltin {
@Option(name = "--file", aliases = { "-f" }, metaVar = "metaVar_file", usage = "usage_configFile")
private File configFile;
- /** {@inheritDoc} */
@Override
protected void run() {
if (!list) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java
index 47e4b6ba79..06e37da841 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java
@@ -28,7 +28,6 @@ class ConvertRefStorage extends TextBuiltin {
"-r" }, usage = "usage_convertRefStorageRefLogs")
private boolean writeLogs = true;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
((FileRepository) db).convertRefStorage(format, writeLogs, backup);
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Daemon.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Daemon.java
index f987f2c806..ec201a55ef 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Daemon.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Daemon.java
@@ -64,13 +64,11 @@ class Daemon extends TextBuiltin {
@Argument(required = true, metaVar = "metaVar_directory", usage = "usage_directoriesToExport")
List<File> directory = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
PackConfig packConfig = new PackConfig();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Describe.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Describe.java
index 116db037d4..913d7c790d 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Describe.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Describe.java
@@ -47,7 +47,6 @@ class Describe extends TextBuiltin {
@Option(name = "--abbrev", usage = "usage_Abbrev")
private Integer abbrev;
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Diff.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Diff.java
index 3152c44554..61979d1695 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Diff.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Diff.java
@@ -155,14 +155,12 @@ class Diff extends TextBuiltin {
// END -- Options shared with Log
- /** {@inheritDoc} */
@Override
protected void init(Repository repository, String gitDir) {
super.init(repository, gitDir);
diffFmt = new DiffFormatter(new BufferedOutputStream(outs));
}
- /** {@inheritDoc} */
@Override
protected void run() {
diffFmt.setRepository(db);
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java
index 9aaf3f5c5a..352ffde26c 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTree.java
@@ -40,7 +40,6 @@ class DiffTree extends TextBuiltin {
@Option(name = "--", metaVar = "metaVar_path", handler = PathTreeFilterHandler.class)
private TreeFilter pathFilter = TreeFilter.ALL;
- /** {@inheritDoc} */
@Override
protected void run() {
try (TreeWalk walk = new TreeWalk(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Fetch.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Fetch.java
index 2e0c36b287..7a007e3b58 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Fetch.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Fetch.java
@@ -113,7 +113,6 @@ class Fetch extends AbstractFetchCommand implements FetchCommand.Callback {
@Argument(index = 1, metaVar = "metaVar_refspec")
private List<RefSpec> toget;
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
@@ -167,7 +166,6 @@ class Fetch extends AbstractFetchCommand implements FetchCommand.Callback {
}
}
- /** {@inheritDoc} */
@Override
public void fetchingSubmodule(String name) {
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Glog.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Glog.java
index 5318018928..ce687c4639 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Glog.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Glog.java
@@ -65,7 +65,6 @@ class Glog extends RevWalkTextBuiltin {
frame.getContentPane().add(world);
}
- /** {@inheritDoc} */
@Override
protected int walkLoop() throws Exception {
graphPane.getCommitList().source(walk);
@@ -77,13 +76,11 @@ class Glog extends RevWalkTextBuiltin {
return graphPane.getCommitList().size();
}
- /** {@inheritDoc} */
@Override
protected void show(RevCommit c) throws Exception {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
protected RevWalk createWalk() {
if (objects)
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/IndexPack.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/IndexPack.java
index 9732335130..b3808d6fda 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/IndexPack.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/IndexPack.java
@@ -28,7 +28,6 @@ class IndexPack extends TextBuiltin {
@Option(name = "--index-version", usage = "usage_indexFileFormatToCreate")
private int indexVersion = -1;
- /** {@inheritDoc} */
@Override
protected void run() {
BufferedInputStream in = new BufferedInputStream(ins);
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Init.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Init.java
index 7a0d96d419..9c4af813a4 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Init.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Init.java
@@ -40,13 +40,11 @@ class Init extends TextBuiltin {
@Argument(index = 0, metaVar = "metaVar_directory")
private String directory;
- /** {@inheritDoc} */
@Override
protected final boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() {
InitCommand command = Git.init();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Log.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Log.java
index d693051738..852a4b377b 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Log.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Log.java
@@ -182,14 +182,12 @@ class Log extends RevWalkTextBuiltin {
dateFormatter = new GitDateFormatter(Format.DEFAULT);
}
- /** {@inheritDoc} */
@Override
protected void init(Repository repository, String gitDir) {
super.init(repository, gitDir);
diffFmt = new DiffFormatter(new BufferedOutputStream(outs));
}
- /** {@inheritDoc} */
@Override
protected void run() {
config = new GpgConfig(db.getConfig());
@@ -244,7 +242,6 @@ class Log extends RevWalkTextBuiltin {
NoteMap.read(argWalk.getObjectReader(), notesCommit));
}
- /** {@inheritDoc} */
@Override
protected void show(RevCommit c) throws Exception {
outw.print(CLIText.get().commitLabel);
@@ -314,10 +311,14 @@ class Log extends RevWalkTextBuiltin {
}
/**
+ * Show notes for given commit
+ *
* @param c
+ * given commit
* @return <code>true</code> if at least one note was printed,
* <code>false</code> otherwise
* @throws IOException
+ * if an IO error occurred
*/
private boolean showNotes(RevCommit c) throws IOException {
if (noteMaps == null)
@@ -344,12 +345,17 @@ class Log extends RevWalkTextBuiltin {
/**
* @param c
+ * given commit
* @param map
+ * note map
* @param label
+ * label
* @param emptyLine
+ * whether to start with an empty line
* @return <code>true</code> if note was printed, <code>false</code>
* otherwise
* @throws IOException
+ * if an IO error occurred
*/
private boolean showNotes(RevCommit c, NoteMap map, String label,
boolean emptyLine)
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsRemote.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsRemote.java
index 83446ccd53..89ceed256d 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsRemote.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsRemote.java
@@ -40,7 +40,6 @@ class LsRemote extends TextBuiltin {
@Argument(index = 0, metaVar = "metaVar_uriish", required = true)
private String remote;
- /** {@inheritDoc} */
@Override
protected void run() {
LsRemoteCommand command = Git.lsRemoteRepository().setRemote(remote)
@@ -63,7 +62,6 @@ class LsRemote extends TextBuiltin {
}
}
- /** {@inheritDoc} */
@Override
protected boolean requiresRepository() {
return false;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java
index bb140018bd..34b48c1b1a 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/LsTree.java
@@ -38,7 +38,6 @@ class LsTree extends TextBuiltin {
@Option(name = "--", metaVar = "metaVar_paths", handler = StopOptionHandler.class)
private List<String> paths = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected void run() {
try (TreeWalk walk = new TreeWalk(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Main.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Main.java
index 613fc5ff32..d059eff5d7 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Main.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Main.java
@@ -97,6 +97,7 @@ public class Main {
* @param argv
* arguments.
* @throws java.lang.Exception
+ * if an error occurred
*/
public static void main(String[] argv) throws Exception {
// make sure built-in filters are registered
@@ -121,6 +122,7 @@ public class Main {
* @param argv
* arguments.
* @throws java.lang.Exception
+ * if an error occurred
*/
protected void run(String[] argv) throws Exception {
writer = createErrorWriter();
@@ -263,9 +265,11 @@ public class Main {
/**
* @param status
+ * exit status code, nonzero value indicates an error
* @param t
* can be {@code null}
* @throws Exception
+ * if an IO error occurred
*/
void exit(int status, Exception t) throws Exception {
writer.flush();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
index 27a3d90fad..b78998dd74 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
@@ -86,7 +86,6 @@ class Merge extends TextBuiltin {
}
}
- /** {@inheritDoc} */
@Override
protected void run() {
if (squash && ff == FastForwardMode.NO_FF) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/MergeBase.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/MergeBase.java
index 68eeff748d..aacde2f430 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/MergeBase.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/MergeBase.java
@@ -33,7 +33,6 @@ class MergeBase extends TextBuiltin {
@Argument(index = 1, metaVar = "metaVar_commitish", required = true)
private List<RevCommit> commits = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected void run() {
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java
index f2e3a16008..6535d95e9a 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java
@@ -81,7 +81,6 @@ class Push extends TextBuiltin {
private boolean shownURI;
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ReceivePack.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ReceivePack.java
index f570f7f99b..f89a4d12be 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ReceivePack.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ReceivePack.java
@@ -26,13 +26,11 @@ class ReceivePack extends TextBuiltin {
@Argument(index = 0, required = true, metaVar = "metaVar_directory", usage = "usage_RepositoryToReceiveInto")
File dstGitdir;
- /** {@inheritDoc} */
@Override
protected final boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() {
final org.eclipse.jgit.transport.ReceivePack rp;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java
index c63532df60..46485cc5ef 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java
@@ -28,7 +28,6 @@ class Reflog extends TextBuiltin {
@Argument(metaVar = "metaVar_ref")
private String ref;
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java
index 6d6feed7b8..a3100ac8ed 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java
@@ -52,7 +52,6 @@ class Remote extends TextBuiltin {
@Argument(index = 2, metaVar = "metaVar_uriish")
private String uri;
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
@@ -114,7 +113,6 @@ class Remote extends TextBuiltin {
}
}
- /** {@inheritDoc} */
@Override
public void printUsage(String message, CmdLineParser clp)
throws IOException {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Repo.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Repo.java
index 0588a7cdbe..da622e1130 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Repo.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Repo.java
@@ -26,7 +26,6 @@ class Repo extends TextBuiltin {
@Argument(required = true, metaVar = "metaVar_path", usage = "usage_pathToXml")
private String path;
- /** {@inheritDoc} */
@Override
protected void run() {
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reset.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reset.java
index 3454cf2515..f33cb6be71 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reset.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reset.java
@@ -41,7 +41,6 @@ class Reset extends TextBuiltin {
@Option(name = "--", metaVar = "metaVar_paths", handler = RestOfArgumentsHandler.class)
private List<String> paths = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevList.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevList.java
index e86ad01823..59fc5f296c 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevList.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevList.java
@@ -18,7 +18,6 @@ import org.eclipse.jgit.revwalk.RevTree;
@Command(usage = "usage_RevList")
class RevList extends RevWalkTextBuiltin {
- /** {@inheritDoc} */
@Override
protected void show(RevCommit c) throws Exception {
if (c.has(RevFlag.UNINTERESTING))
@@ -32,7 +31,6 @@ class RevList extends RevWalkTextBuiltin {
outw.println();
}
- /** {@inheritDoc} */
@Override
protected void show(ObjectWalk ow, RevObject obj)
throws Exception {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevParse.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevParse.java
index 9e4d1c9dd5..b1fb07b5b8 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevParse.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevParse.java
@@ -35,7 +35,6 @@ class RevParse extends TextBuiltin {
@Argument(index = 0, metaVar = "metaVar_commitish")
private List<ObjectId> commits = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected void run() {
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java
index 696a924ecf..51e597c57a 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java
@@ -114,7 +114,6 @@ abstract class RevWalkTextBuiltin extends TextBuiltin {
@Option(name = "--max-count", aliases = "-n", metaVar = "metaVar_n")
private int maxCount = -1;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
walk = createWalk();
@@ -228,7 +227,8 @@ abstract class RevWalkTextBuiltin extends TextBuiltin {
*
* @param c
* The current {@link org.eclipse.jgit.revwalk.RevCommit}
- * @throws java.lang.Exception
+ * @throws Exception
+ * if an error occurred
*/
protected abstract void show(RevCommit c) throws Exception;
@@ -243,7 +243,8 @@ abstract class RevWalkTextBuiltin extends TextBuiltin {
* {@link #walkLoop()}
* @param currentObject
* The current {@link org.eclipse.jgit.revwalk.RevObject}
- * @throws java.lang.Exception
+ * @throws Exception
+ * if an error occurred
*/
protected void show(final ObjectWalk objectWalk,
final RevObject currentObject) throws Exception {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Rm.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Rm.java
index 4a337983eb..234da1a1c5 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Rm.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Rm.java
@@ -27,7 +27,6 @@ class Rm extends TextBuiltin {
@Option(name = "--", handler = StopOptionHandler.class)
private List<String> paths = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java
index c18d35a205..4feb090032 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Show.java
@@ -161,14 +161,12 @@ class Show extends TextBuiltin {
fmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy ZZZZZ", Locale.US); //$NON-NLS-1$
}
- /** {@inheritDoc} */
@Override
protected void init(Repository repository, String gitDir) {
super.init(repository, gitDir);
diffFmt = new DiffFormatter(new BufferedOutputStream(outs));
}
- /** {@inheritDoc} */
@SuppressWarnings("boxing")
@Override
protected void run() {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ShowRef.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ShowRef.java
index a58785fef3..64b182e17d 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ShowRef.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ShowRef.java
@@ -21,7 +21,6 @@ import org.eclipse.jgit.lib.RefComparator;
@Command(usage = "usage_ShowRef")
class ShowRef extends TextBuiltin {
- /** {@inheritDoc} */
@Override
protected void run() {
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java
index 141de0cd5d..1ef39a1a7d 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java
@@ -55,7 +55,6 @@ class Status extends TextBuiltin {
@Option(name = "--", metaVar = "metaVar_paths", handler = RestOfArgumentsHandler.class)
protected List<String> filterPaths;
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
@@ -239,10 +238,11 @@ class Status extends TextBuiltin {
* Print section header
*
* @param pattern
- * a {@link java.lang.String} object.
+ * a {@link String} object.
* @param arguments
- * a {@link java.lang.Object} object.
- * @throws java.io.IOException
+ * a {@link Object} object.
+ * @throws IOException
+ * if an IO error occurred
*/
protected void printSectionHeader(String pattern, Object... arguments)
throws IOException {
@@ -259,9 +259,10 @@ class Status extends TextBuiltin {
* Print String list
*
* @param list
- * a {@link java.util.Collection} object.
- * @return a int.
- * @throws java.io.IOException
+ * a {@link Collection} object.
+ * @return size of the list
+ * @throws IOException
+ * if an IO error occurred
*/
protected int printList(Collection<String> list) throws IOException {
if (!list.isEmpty()) {
@@ -281,21 +282,22 @@ class Status extends TextBuiltin {
* Print String list
*
* @param status1
- * a {@link java.lang.String} object.
+ * a {@link String} object.
* @param status2
- * a {@link java.lang.String} object.
+ * a {@link String} object.
* @param status3
- * a {@link java.lang.String} object.
+ * a {@link String} object.
* @param list
- * a {@link java.util.Collection} object.
+ * a {@link Collection} object.
* @param set1
- * a {@link java.util.Collection} object.
+ * a {@link Collection} object.
* @param set2
- * a {@link java.util.Collection} object.
+ * a {@link Collection} object.
* @param set3
- * a {@link java.util.Collection} object.
+ * a {@link Collection} object.
* @return a int.
- * @throws java.io.IOException
+ * @throws IOException
+ * if an IO error occurred
*/
protected int printList(String status1, String status2, String status3,
Collection<String> list, Collection<String> set1,
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java
index 0603de18ac..4ea67ab92c 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java
@@ -88,7 +88,6 @@ class Tag extends TextBuiltin {
@Argument(index = 1, metaVar = "metaVar_object")
private ObjectId object;
- /** {@inheritDoc} */
@Override
protected void run() {
try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/TextBuiltin.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/TextBuiltin.java
index 6cfe93d850..c572e3bc7d 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/TextBuiltin.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/TextBuiltin.java
@@ -249,6 +249,7 @@ public abstract class TextBuiltin {
* @param args
* the arguments supplied on the command line, if any.
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected void parseArguments(String[] args) throws IOException {
final CmdLineParser clp = new CmdLineParser(this);
@@ -277,6 +278,7 @@ public abstract class TextBuiltin {
* @param clp
* a {@link org.eclipse.jgit.pgm.opt.CmdLineParser} object.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void printUsageAndExit(CmdLineParser clp) throws IOException {
printUsageAndExit("", clp); //$NON-NLS-1$
@@ -290,6 +292,7 @@ public abstract class TextBuiltin {
* @param clp
* a {@link org.eclipse.jgit.pgm.opt.CmdLineParser} object.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void printUsageAndExit(String message, CmdLineParser clp) throws IOException {
printUsage(message, clp);
@@ -304,6 +307,7 @@ public abstract class TextBuiltin {
* @param clp
* parser used to print options
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
*/
protected void printUsage(String message, CmdLineParser clp)
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/UploadPack.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/UploadPack.java
index ac51643b6e..db2c393b9a 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/UploadPack.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/UploadPack.java
@@ -30,13 +30,11 @@ class UploadPack extends TextBuiltin {
@Argument(index = 0, required = true, metaVar = "metaVar_directory", usage = "usage_RepositoryToReadFrom")
File srcGitdir;
- /** {@inheritDoc} */
@Override
protected final boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() {
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Version.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Version.java
index d06f1e2fbf..8546094ac2 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Version.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Version.java
@@ -22,7 +22,6 @@ import org.eclipse.jgit.pgm.internal.CLIText;
@Command(common = true, usage = "usage_DisplayTheVersionOfJgit")
class Version extends TextBuiltin {
- /** {@inheritDoc} */
@Override
protected void run() {
// read the Implementation-Version from Manifest
@@ -48,7 +47,6 @@ class Version extends TextBuiltin {
}
}
- /** {@inheritDoc} */
@Override
protected final boolean requiresRepository() {
return false;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/BenchmarkReftable.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/BenchmarkReftable.java
index f23f4cf0ea..f156b8cf4c 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/BenchmarkReftable.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/BenchmarkReftable.java
@@ -70,7 +70,6 @@ class BenchmarkReftable extends TextBuiltin {
@Argument(index = 1)
private String reftablePath;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
switch (test) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
index a63387c24c..67300dcc6a 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
@@ -96,13 +96,11 @@ class DiffAlgorithms extends TextBuiltin {
private ThreadMXBean mxBean;
- /** {@inheritDoc} */
@Override
protected boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
mxBean = ManagementFactory.getThreadMXBean();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/LfsStore.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/LfsStore.java
index 9c0ced5c1e..653530d11a 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/LfsStore.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/LfsStore.java
@@ -181,13 +181,11 @@ class LfsStore extends TextBuiltin {
String secretKey;
- /** {@inheritDoc} */
@Override
protected boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
AppServer server = new AppServer(port);
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/MakeCacheTree.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/MakeCacheTree.java
index 63897a3891..5188336890 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/MakeCacheTree.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/MakeCacheTree.java
@@ -24,7 +24,6 @@ import org.eclipse.jgit.pgm.internal.CLIText;
@Command(usage = "usage_MakeCacheTree")
class MakeCacheTree extends TextBuiltin {
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
final DirCache cache = db.readDirCache();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadChangedPathFilter.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadChangedPathFilter.java
new file mode 100644
index 0000000000..1414165e54
--- /dev/null
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadChangedPathFilter.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2023, Google LLC
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.pgm.debug;
+
+import java.io.FileInputStream;
+import java.util.HashSet;
+
+import org.eclipse.jgit.pgm.Command;
+import org.eclipse.jgit.pgm.TextBuiltin;
+import org.eclipse.jgit.util.NB;
+import org.kohsuke.args4j.Argument;
+
+/**
+ * Prints the contents of the BDAT chunk from commit-graph file.
+ * <p>
+ * This is a debugging tool for changed path filter development.
+ */
+@Command
+class ReadChangedPathFilter extends TextBuiltin {
+
+ static final int CHUNK_ID_OID_FANOUT = 0x4f494446; /* "OIDF" */
+
+ static final int CHUNK_ID_BLOOM_FILTER_INDEX = 0x42494458; /* "BIDX" */
+
+ static final int CHUNK_ID_BLOOM_FILTER_DATA = 0x42444154; /* "BDAT" */
+
+ @Argument(index = 0)
+ private String input;
+
+ static HashSet<String> changedPathStrings(byte[] data) {
+ int oidf_offset = -1;
+ int bidx_offset = -1;
+ int bdat_offset = -1;
+ for (int i = 8; i < data.length - 4; i += 12) {
+ switch (NB.decodeInt32(data, i)) {
+ case CHUNK_ID_OID_FANOUT:
+ oidf_offset = (int) NB.decodeInt64(data, i + 4);
+ break;
+ case CHUNK_ID_BLOOM_FILTER_INDEX:
+ bidx_offset = (int) NB.decodeInt64(data, i + 4);
+ break;
+ case CHUNK_ID_BLOOM_FILTER_DATA:
+ bdat_offset = (int) NB.decodeInt64(data, i + 4);
+ break;
+ }
+ }
+ bdat_offset += 12; // skip version, hash count, bits per entry
+ int commit_count = NB.decodeInt32(data, oidf_offset + 255 * 4);
+ int[] changed_path_length_cumuls = new int[commit_count];
+ for (int i = 0; i < commit_count; i++) {
+ changed_path_length_cumuls[i] = NB.decodeInt32(data,
+ bidx_offset + i * 4);
+ }
+ HashSet<String> changed_paths = new HashSet<>();
+ for (int i = 0; i < commit_count; i++) {
+ int prior_cumul = i == 0 ? 0 : changed_path_length_cumuls[i - 1];
+ String changed_path = ""; //$NON-NLS-1$
+ for (int j = prior_cumul; j < changed_path_length_cumuls[i]; j++) {
+ changed_path += data[bdat_offset + j] + ","; //$NON-NLS-1$
+ }
+ changed_paths.add(changed_path);
+ }
+ return changed_paths;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected void run() throws Exception {
+ try (FileInputStream in = new FileInputStream(input)
+ ) {
+ byte[] data = in.readAllBytes();
+ outw.println(changedPathStrings(data).toString());
+ }
+ }
+}
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadDirCache.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadDirCache.java
index 33d1059911..6e0f915ff2 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadDirCache.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadDirCache.java
@@ -21,7 +21,6 @@ import org.eclipse.jgit.pgm.internal.CLIText;
@Command(usage = "usage_ReadDirCache")
class ReadDirCache extends TextBuiltin {
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
final int cnt = 100;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadReftable.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadReftable.java
index 6dace841ea..a2443d315f 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadReftable.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ReadReftable.java
@@ -30,7 +30,6 @@ class ReadReftable extends TextBuiltin {
@Argument(index = 1, required = false)
private String ref;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
try (FileInputStream in = new FileInputStream(input);
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java
index 8d884c12db..2f96ef7d57 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java
@@ -81,7 +81,6 @@ class RebuildCommitGraph extends TextBuiltin {
private Map<ObjectId, ObjectId> rewrites = new HashMap<>();
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
if (!really && db.getRefDatabase().hasRefs()) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCacheTree.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCacheTree.java
index 28a8d8634a..057d20b8d6 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCacheTree.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCacheTree.java
@@ -24,7 +24,6 @@ import org.eclipse.jgit.pgm.internal.CLIText;
@Command(usage = "usage_ShowCacheTree")
class ShowCacheTree extends TextBuiltin {
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
final DirCache cache = db.readDirCache();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCommands.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCommands.java
index 9e61357da8..daea1fbe83 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCommands.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowCommands.java
@@ -26,7 +26,6 @@ class ShowCommands extends TextBuiltin {
@Option(name = "--pretty", metaVar = "metaVar_commandDetail", usage = "usage_alterTheDetailShown")
private Format pretty = Format.USAGE;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
final CommandRef[] list = CommandCatalog.all();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowDirCache.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowDirCache.java
index 1f4733f792..3633d880d7 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowDirCache.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowDirCache.java
@@ -33,7 +33,6 @@ class ShowDirCache extends TextBuiltin {
@Option(name = "--millis", aliases = { "-m" }, usage = "usage_showTimeInMilliseconds")
private boolean millis = false;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
final DateTimeFormatter fmt = DateTimeFormatter
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
index 49f7ada457..c95f1384e8 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java
@@ -39,7 +39,6 @@ class ShowPackDelta extends TextBuiltin {
@Argument(index = 0)
private ObjectId objectId;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
ObjectReader reader = db.newObjectReader();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java
index 1ca3034f4f..d7d31bd4b2 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/TextHashFunctions.java
@@ -228,13 +228,11 @@ class TextHashFunctions extends TextBuiltin {
@Option(name = "--repository", aliases = { "-r" }, metaVar = "GIT_DIR", usage = "Repository to scan")
List<File> gitDirs = new ArrayList<>();
- /** {@inheritDoc} */
@Override
protected boolean requiresRepository() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
if (gitDirs.isEmpty()) {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/VerifyReftable.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/VerifyReftable.java
index 16a4c9f333..aa1b81f2b6 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/VerifyReftable.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/VerifyReftable.java
@@ -42,7 +42,6 @@ class VerifyReftable extends TextBuiltin {
@Argument(index = 1)
private String reftablePath;
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
List<Ref> refs = WriteReftable.readRefs(lsRemotePath);
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteDirCache.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteDirCache.java
index 44836ec0dc..d367f02497 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteDirCache.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteDirCache.java
@@ -18,7 +18,6 @@ import org.eclipse.jgit.pgm.internal.CLIText;
@Command(usage = "usage_WriteDirCache")
class WriteDirCache extends TextBuiltin {
- /** {@inheritDoc} */
@Override
protected void run() throws Exception {
final DirCache cache = db.readDirCache();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteReftable.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteReftable.java
index 80d2f763f1..faa2bceb74 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteReftable.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/WriteReftable.java
@@ -71,7 +71,6 @@ class WriteReftable extends TextBuiltin {
@Argument(index = 1)
private String out;
- /** {@inheritDoc} */
@SuppressWarnings({ "nls", "boxing" })
@Override
protected void run() throws Exception {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/AbstractTreeIteratorHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/AbstractTreeIteratorHandler.java
index d8604726ab..cea2309f7f 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/AbstractTreeIteratorHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/AbstractTreeIteratorHandler.java
@@ -63,7 +63,6 @@ public class AbstractTreeIteratorHandler extends
clp = (org.eclipse.jgit.pgm.opt.CmdLineParser) parser;
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
final String name = params.getParameter(0);
@@ -115,7 +114,6 @@ public class AbstractTreeIteratorHandler extends
return 1;
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_treeish;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/CmdLineParser.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/CmdLineParser.java
index df0b39b52a..463213dc4f 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/CmdLineParser.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/CmdLineParser.java
@@ -110,7 +110,6 @@ public class CmdLineParser extends org.kohsuke.args4j.CmdLineParser {
this.db = repo;
}
- /** {@inheritDoc} */
@Override
public void parseArgument(String... args) throws CmdLineException {
final ArrayList<String> tmp = new ArrayList<>(args.length);
@@ -265,7 +264,6 @@ public class CmdLineParser extends org.kohsuke.args4j.CmdLineParser {
}
}
- /** {@inheritDoc} */
@Override
protected OptionHandler createOptionHandler(OptionDef o, Setter setter) {
if (o instanceof NamedOptionDef) {
@@ -275,7 +273,6 @@ public class CmdLineParser extends org.kohsuke.args4j.CmdLineParser {
}
- /** {@inheritDoc} */
@Override
public void printSingleLineUsage(Writer w, ResourceBundle rb) {
List<OptionHandler> options = getOptions();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/GpgSignHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/GpgSignHandler.java
index af90b83d17..56423ada41 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/GpgSignHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/GpgSignHandler.java
@@ -53,7 +53,6 @@ public class GpgSignHandler extends StringOptionHandler {
super(parser, option, setter);
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
String alias = params.getParameter(-1);
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/InstantHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/InstantHandler.java
index feee78e9b6..9c54169888 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/InstantHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/InstantHandler.java
@@ -44,7 +44,6 @@ public class InstantHandler extends OptionHandler<Instant> {
super(parser, option, setter);
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
Instant instant = Instant.parse(params.getParameter(0));
@@ -52,7 +51,6 @@ public class InstantHandler extends OptionHandler<Instant> {
return 1;
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_instant;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/ObjectIdHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/ObjectIdHandler.java
index 6cd36c3d98..b50df90788 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/ObjectIdHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/ObjectIdHandler.java
@@ -49,7 +49,6 @@ public class ObjectIdHandler extends OptionHandler<ObjectId> {
clp = (org.eclipse.jgit.pgm.opt.CmdLineParser) parser;
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
final String name = params.getParameter(0);
@@ -68,7 +67,6 @@ public class ObjectIdHandler extends OptionHandler<ObjectId> {
CLIText.format(CLIText.get().notAnObject), name);
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_object;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/OptionWithValuesListHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/OptionWithValuesListHandler.java
index 7d7c806507..7bb2766fe0 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/OptionWithValuesListHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/OptionWithValuesListHandler.java
@@ -33,7 +33,6 @@ public class OptionWithValuesListHandler extends OptionHandler<List<?>> {
super(parser, option, setter);
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
final List<String> list = new ArrayList<>();
@@ -50,7 +49,6 @@ public class OptionWithValuesListHandler extends OptionHandler<List<?>> {
return list.size();
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_values;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/PathTreeFilterHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/PathTreeFilterHandler.java
index 653511947f..f215040499 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/PathTreeFilterHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/PathTreeFilterHandler.java
@@ -49,7 +49,6 @@ public class PathTreeFilterHandler extends OptionHandler<TreeFilter> {
super(parser, option, setter);
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
final List<PathFilter> filters = new ArrayList<>();
@@ -73,7 +72,6 @@ public class PathTreeFilterHandler extends OptionHandler<TreeFilter> {
return filters.size();
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_paths;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RefSpecHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RefSpecHandler.java
index effa22a697..0491445879 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RefSpecHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RefSpecHandler.java
@@ -43,14 +43,12 @@ public class RefSpecHandler extends OptionHandler<RefSpec> {
super(parser, option, setter);
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
setter.addValue(new RefSpec(params.getParameter(0)));
return 1;
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_refspec;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevCommitHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevCommitHandler.java
index 8b2bed36a7..a095a28af8 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevCommitHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevCommitHandler.java
@@ -53,7 +53,6 @@ public class RevCommitHandler extends OptionHandler<RevCommit> {
clp = (org.eclipse.jgit.pgm.opt.CmdLineParser) parser;
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
String name = params.getParameter(0);
@@ -116,7 +115,6 @@ public class RevCommitHandler extends OptionHandler<RevCommit> {
setter.addValue(c);
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_commitish;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevTreeHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevTreeHandler.java
index 357886d0fa..08f1d28392 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevTreeHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/RevTreeHandler.java
@@ -52,7 +52,6 @@ public class RevTreeHandler extends OptionHandler<RevTree> {
clp = (org.eclipse.jgit.pgm.opt.CmdLineParser) parser;
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
final String name = params.getParameter(0);
@@ -83,7 +82,6 @@ public class RevTreeHandler extends OptionHandler<RevTree> {
return 1;
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_treeish;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/SubcommandHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/SubcommandHandler.java
index e0962031e8..e71ba90e4b 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/SubcommandHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/SubcommandHandler.java
@@ -49,7 +49,6 @@ public class SubcommandHandler extends OptionHandler<TextBuiltin> {
clp = (org.eclipse.jgit.pgm.opt.CmdLineParser) parser;
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
final String name = params.getParameter(0);
@@ -67,7 +66,6 @@ public class SubcommandHandler extends OptionHandler<TextBuiltin> {
return 1;
}
- /** {@inheritDoc} */
@Override
public String getDefaultMetaVariable() {
return CLIText.get().metaVar_command;
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java
index 3562754a00..2f99cff768 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/opt/UntrackedFilesHandler.java
@@ -52,7 +52,6 @@ public class UntrackedFilesHandler extends StringOptionHandler {
super(parser, option, setter);
}
- /** {@inheritDoc} */
@Override
public int parseArguments(Parameters params) throws CmdLineException {
String alias = params.getParameter(-1);
diff --git a/org.eclipse.jgit.ssh.apache.agent/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.ssh.apache.agent/.settings/org.eclipse.jdt.core.prefs
index d1f54bbe65..d5c0e6c7e0 100644
--- a/org.eclipse.jgit.ssh.apache.agent/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.ssh.apache.agent/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
index 84d97e27e7..fd3e97798a 100644
--- a/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
@@ -2,16 +2,16 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.agent;singleton:=true
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
-Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[6.6.2,6.7.0)"
+Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[6.7.1,6.8.0)"
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.jgit.ssh.apache.agent
Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.transport.sshd;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)"
+Import-Package: org.eclipse.jgit.transport.sshd;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)"
Require-Bundle: com.sun.jna;bundle-version="[5.8.0,6.0.0)",
com.sun.jna.platform;bundle-version="[5.8.0,6.0.0)"
-Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="6.6.2";x-internal:=true
+Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="6.7.1";x-internal:=true
diff --git a/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
index f0c3ec2865..79f4f05469 100644
--- a/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.ssh.apache.agent - Sources
Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.agent.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache.agent/pom.xml b/org.eclipse.jgit.ssh.apache.agent/pom.xml
index 5b1ea044e0..ef6262ce47 100644
--- a/org.eclipse.jgit.ssh.apache.agent/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.agent/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ssh.apache.agent</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache.agent/src/org/eclipse/jgit/internal/transport/sshd/agent/connector/UnixSockets.java b/org.eclipse.jgit.ssh.apache.agent/src/org/eclipse/jgit/internal/transport/sshd/agent/connector/UnixSockets.java
index 6f8153d000..54e4e2a5a8 100644
--- a/org.eclipse.jgit.ssh.apache.agent/src/org/eclipse/jgit/internal/transport/sshd/agent/connector/UnixSockets.java
+++ b/org.eclipse.jgit.ssh.apache.agent/src/org/eclipse/jgit/internal/transport/sshd/agent/connector/UnixSockets.java
@@ -67,6 +67,7 @@ interface UnixSockets extends LibCAPI, Library {
* set it
* @return -1 on error, otherwise a value >= 0
* @throws LastErrorException
+ * represents non-zero error code for the last error
*/
int fcntl(int fd, int command, int flag) throws LastErrorException;
diff --git a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
index cf7edd2ce2..567c3fef1a 100644
--- a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
@@ -3,10 +3,11 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.ssh.apache.test
Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.test
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)"
Import-Package: org.apache.sshd.client.config.hosts;version="[2.10.0,2.11.0)",
org.apache.sshd.common;version="[2.10.0,2.11.0)",
org.apache.sshd.common.auth;version="[2.10.0,2.11.0)",
@@ -21,17 +22,16 @@ Import-Package: org.apache.sshd.client.config.hosts;version="[2.10.0,2.11.0)",
org.apache.sshd.core;version="[2.10.0,2.11.0)",
org.apache.sshd.server;version="[2.10.0,2.11.0)",
org.apache.sshd.server.forward;version="[2.10.0,2.11.0)",
- org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.transport.sshd.proxy;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit.ssh;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.sshd;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.sshd.agent;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.hamcrest;version="[1.1.0,3.0.0)",
+ org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit.ssh;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.sshd;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.sshd.agent;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.experimental.theories;version="[4.13,5.0.0)",
org.junit.runner;version="[4.13,5.0.0)"
diff --git a/org.eclipse.jgit.ssh.apache.test/pom.xml b/org.eclipse.jgit.ssh.apache.test/pom.xml
index 9e19ec4669..bda4294ed7 100644
--- a/org.eclipse.jgit.ssh.apache.test/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.test/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.ssh.apache/.settings/org.eclipse.jdt.core.prefs
index d1f54bbe65..d5c0e6c7e0 100644
--- a/org.eclipse.jgit.ssh.apache/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.ssh.apache/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
index 22f07ad9ce..fa51dfb61f 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
@@ -6,9 +6,9 @@ Bundle-SymbolicName: org.eclipse.jgit.ssh.apache
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.internal.transport.sshd;version="6.6.2";x-internal:=true;
+Export-Package: org.eclipse.jgit.internal.transport.sshd;version="6.7.1";x-internal:=true;
uses:="org.apache.sshd.client,
org.apache.sshd.client.auth,
org.apache.sshd.client.auth.keyboard,
@@ -23,17 +23,18 @@ Export-Package: org.eclipse.jgit.internal.transport.sshd;version="6.6.2";x-inter
org.apache.sshd.common.signature,
org.apache.sshd.common.util.buffer,
org.eclipse.jgit.transport",
- org.eclipse.jgit.internal.transport.sshd.agent;version="6.6.2";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.auth;version="6.6.2";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.proxy;version="6.6.2";x-friends:="org.eclipse.jgit.ssh.apache.test",
- org.eclipse.jgit.transport.sshd;version="6.6.2";
+ org.eclipse.jgit.internal.transport.sshd.agent;version="6.7.1";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.auth;version="6.7.1";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.pkcs11;version="6.7.1";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="6.7.1";x-friends:="org.eclipse.jgit.ssh.apache.test",
+ org.eclipse.jgit.transport.sshd;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.apache.sshd.client.config.hosts,
org.apache.sshd.common.keyprovider,
org.eclipse.jgit.util,
org.apache.sshd.client.session,
org.apache.sshd.client.keyverifier",
- org.eclipse.jgit.transport.sshd.agent;version="6.6.2"
+ org.eclipse.jgit.transport.sshd.agent;version="6.7.1"
Import-Package: net.i2p.crypto.eddsa;version="[0.3.0,0.4.0)",
org.apache.sshd.agent;version="[2.10.0,2.11.0)",
org.apache.sshd.client;version="[2.10.0,2.11.0)",
@@ -86,12 +87,12 @@ Import-Package: net.i2p.crypto.eddsa;version="[0.3.0,0.4.0)",
org.apache.sshd.sftp;version="[2.10.0,2.11.0)",
org.apache.sshd.sftp.client;version="[2.10.0,2.11.0)",
org.apache.sshd.sftp.common;version="[2.10.0,2.11.0)",
- org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.fnmatch;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.fnmatch;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.slf4j;version="[1.7.0,2.0.0)"
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
index c51e94b70a..7a432fa17b 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.ssh.apache - Sources
Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache/README.md b/org.eclipse.jgit.ssh.apache/README.md
index f06b2f6071..b2911c688c 100644
--- a/org.eclipse.jgit.ssh.apache/README.md
+++ b/org.eclipse.jgit.ssh.apache/README.md
@@ -73,7 +73,8 @@ the use of an SSH agent. For the details, see the [OpenBSD ssh-config documentat
* **IdentityAgent** can be set to choose which SSH agent to use, if there are several running.
It can also be set to `none` to explicitly switch off using an SSH agent at all.
* **IdentitiesOnly** if set to `yes` and an SSH agent is used, only keys from the agent that are
- also listed in an `IdentityFile` property will be considered. (It'll also switch off trying
+ also listed in an `IdentityFile` property and for which the public key is available in a
+ corresponding `*.pub` file will be considered. (It'll also switch off trying
default key names, such as `~/.ssh/id_rsa` or `~/.ssh/id_ed25519`; only keys listed explicitly
will be used.)
@@ -90,6 +91,57 @@ OpenSSH does not implement ed448 keys, and neither does Apache MINA sshd, and he
not supported in JGit if its built-in SSH implementation is used. ed448 or other unsupported keys
provided by an SSH agent are ignored.
+## PKCS#11 support
+
+JGit supports using PKCS#11 HSMs (Hardware Security Modules) such as YubiKey PIV for SSH
+authentication.
+
+Using such a PKCS#11 token for SSH authentication can be configured in `~/.ssh/config` with a
+configuration
+
+```
+ PCKS11Provider /absolute/path/to/vendor/library.so
+```
+
+instead of or in addition to `IdentityFile` or `IdentityAgent`. PKCS#11 keys are considered before
+keys from an SSH agent. If `IdentitiesOnly` is also set, only keys listed in `IdentityFile` for which
+the public key is available in a corresponding `*.pub` file are considered.
+
+If `PKCS11Provider` is not set, or is set to the value `none`, no PKCS#11 library is used.
+
+This is all as in OpenSSH.
+
+Keys from PKCS#11 tokens are never added to an SSH agent; the `AddKeysToAgent` configuration has
+no effect for PKCS#11 keys in JGit. It makes only sense if someone is using agent forwarding and
+it requires the SSH agent to understand the `SSH_AGENTC_ADD_SMARTCARD_KEY` command. It is unknown
+which SSH agents support this (OpenSSH does), the SSH library used by JGit has no API for it,
+and JGit doesn't do agent forwarding anyway. (To hop through servers to a git repository use
+`ProxyJump` instead.)
+
+JGit by default uses the first token (the default `slotListIndex` zero). The Java KeyStore or
+[Provider configuration](https://docs.oracle.com/en/java/javase/11/security/pkcs11-reference-guide1.html)
+does not seem to have any support for [RFC7512](https://www.rfc-editor.org/rfc/rfc7512) URIs
+to select the token. JGit provides a custom SSH configuration `PKCS11SlotListIndex` that can be
+set to the slot index of the token wanted. The value should be a non-negative integer. If not
+set or if negative, the first token (slot list index zero) is used. (Note that the value is the
+slot *index*, not the slot ID. Slot IDs are not necessarily stable.)
+
+If you *do* set `PKCS11SlotListIndex` anywhere in your configuration file, then you should also
+set at the very top of the `~/.ssh/config` file:
+
+```
+IgnoreUnknown PKCS11SlotListIndex
+```
+
+The `IgnoreUnknown` configuration tells OpenSSH to ignore configurations it doesn't know about.
+Without this option, OpenSSH will issue an error and exit if the config file contains
+`PKCS11SlotListIndex`. The `IgnoreUnknown` option is available in OpenSSH since version 6.3
+from 2013-09-13. See the [OpenSSH documentation](https://man.openbsd.org/ssh_config.5#IgnoreUnknown)
+for details.
+
+If a token has multiple certificates and keys, a specific one can be selected by exporting
+the public key to a file and then using `IdentitiesOnly` and an `IdentityFile` configuration.
+
## Using a different SSH implementation
To use a different SSH implementation:
diff --git a/org.eclipse.jgit.ssh.apache/manual_tests.txt b/org.eclipse.jgit.ssh.apache/manual_tests.txt
new file mode 100644
index 0000000000..ea3e59cfe0
--- /dev/null
+++ b/org.eclipse.jgit.ssh.apache/manual_tests.txt
@@ -0,0 +1,45 @@
+Testing PKCS11 support
+----------------------
+
+# Install SoftHSM and OpenSC
+
+I got SoftHSM via MacPorts, and OpenSC from https://github.com/OpenSC/OpenSC#downloads
+
+You need both; softhsm2-util cannot import certificates.
+
+# Initialize SoftHSM
+
+$ softhsm2-util --init-token --slot 0 --label "TestToken" --pin 1234 --so-pin 4567
+The token has been initialized and is reassigned to slot 2006661923
+
+# Create a new RSA key and certificate
+
+$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -subj "/CN=MyCertTEST" -nodes
+
+# Import the RSA key pair into the SoftHSM token
+
+$ softhsm2-util --import key.pem --slot 2006661923 --label "testkey" --id 1212 --pin 1234
+
+# Convert the certificate to DER and import it into SoftHSM token
+
+$ openssl x509 -in cert.pem -out cert.der -outform DER
+$ pkcs11-tool --module /opt/local/lib/softhsm/libsofthsm2.so -l --id 1212 --label "testcert" -y cert -w cert.der --pin 1234
+
+# Export the RSA public key convert to PEM, and show in SSH format
+# (I'm sure this could be done simpler from the original key.pem, but what the heck.)
+
+pkcs11-tool --module /opt/local/lib/softhsm/libsofthsm2.so --slot 2006661923 --read-object --type pubkey --id 1212 -o key.der
+openssl rsa -pubin -inform DER -in key.der -outform PEM -out key.pub.pem
+ssh-keygen -f key.pub.pem -m pkcs8 -i
+
+# Install that public key at Gerrit (or your git server of choice)
+
+# Have an ~/.ssh/config with a host entry for your git server using the SoftHSM library as PKCS11 provider:
+
+Host gitserver
+Hostname git.eclipse.org
+Port 29418
+User ...
+PKCS11Provider /opt/local/lib/softhsm/libsofthsm2.so
+
+# Fetch from your git server! When asked for the PIN, enter 1234.
diff --git a/org.eclipse.jgit.ssh.apache/pom.xml b/org.eclipse.jgit.ssh.apache/pom.xml
index 47bda2e22e..9702f556e0 100644
--- a/org.eclipse.jgit.ssh.apache/pom.xml
+++ b/org.eclipse.jgit.ssh.apache/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ssh.apache</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache/resources/org/eclipse/jgit/internal/transport/sshd/SshdText.properties b/org.eclipse.jgit.ssh.apache/resources/org/eclipse/jgit/internal/transport/sshd/SshdText.properties
index c676221800..7da7181887 100644
--- a/org.eclipse.jgit.ssh.apache/resources/org/eclipse/jgit/internal/transport/sshd/SshdText.properties
+++ b/org.eclipse.jgit.ssh.apache/resources/org/eclipse/jgit/internal/transport/sshd/SshdText.properties
@@ -32,17 +32,17 @@ gssapiFailure=GSS-API error for mechanism OID {0}
gssapiInitFailure=GSS-API initialization failure for mechanism {0}
gssapiUnexpectedMechanism=Server {0} replied with unknown mechanism name ''{1}'' in {2} authentication
gssapiUnexpectedMessage=Received unexpected ssh message {1} in {0} authentication
-identityFileCannotDecrypt=Given passphrase cannot decrypt identity {0}
+identityFileCannotDecrypt=Given passphrase cannot read identity {0}
identityFileNoKey=No keys found in identity {0}
identityFileMultipleKeys=Multiple key pairs found in identity {0}
identityFileNotFound=Skipping identity ''{0}'': file not found
identityFileUnsupportedFormat=Unsupported format in identity {0}
invalidSignatureAlgorithm=Signature algorithm ''{0}'' is not valid for a key of type ''{1}''
kexServerKeyInvalid=Server key did not validate
-keyEncryptedMsg=Key ''{0}'' is encrypted. Enter the passphrase to decrypt it.
+keyEncryptedMsg=''{0}'' needs a passphrase to be read.
keyEncryptedPrompt=Passphrase
-keyEncryptedRetry=Encrypted key ''{0}'' could not be decrypted. Enter the passphrase again.
-keyLoadFailed=Could not load key ''{0}''
+keyEncryptedRetry=''{0}'' could not be read. Enter the passphrase again.
+keyLoadFailed=Could not load ''{0}''
knownHostsCouldNotUpdate=Could not update known hosts file {0}
knownHostsFileLockedUpdate=Could not update known hosts file (locked) {0}
knownHostsFileReadFailed=Failed to read known hosts file {0}
@@ -69,6 +69,14 @@ knownHostsUserAskCreationMsg=File {0} does not exist.
knownHostsUserAskCreationPrompt=Create file {0} ?
loginDenied=Cannot log in at {0}:{1}
passwordPrompt=Password
+pkcs11Error=ERROR: {0}
+pkcs11FailedInstantiation=HostConfig for host {0} (hostname {1}): could not instantiate {2} {3}
+pkcs11GeneralMessage=Java reported for PKCS#11 token {0}: {1}
+pkcs11NoKeys=HostConfig for host {0} (hostname {1}) {2} {3} did not provide any keys
+pkcs11NonExisting=HostConfig for host {0} (hostname {1}) {2} {3} does not exist or is not a file
+pkcs11NotAbsolute=HostConfig for host {0} (hostname {1}) {2} {3} is not an absolute path
+pkcs11Unsupported=HostConfig for host {0} (hostname {1}) {2} {3}: PKCS#11 is not supported
+pkcs11Warning=WARNING: {0}
proxyCannotAuthenticate=Cannot authenticate to proxy {0}
proxyHttpFailure=HTTP Proxy connection to {0} failed with code {1}: {2}
proxyHttpInvalidUserName=HTTP proxy connection {0} with invalid user name; must not contain colons: {1}
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java
index 5100bc9e54..c19a04d7e5 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java
@@ -27,6 +27,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
+import java.util.function.Supplier;
import org.apache.sshd.client.ClientBuilder;
import org.apache.sshd.client.ClientFactoryManager;
@@ -55,6 +56,7 @@ import org.eclipse.jgit.fnmatch.FileNameMatcher;
import org.eclipse.jgit.internal.transport.sshd.proxy.StatefulProxyConnector;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.SshConstants;
+import org.eclipse.jgit.transport.sshd.KeyPasswordProvider;
import org.eclipse.jgit.util.StringUtils;
/**
@@ -69,6 +71,12 @@ import org.eclipse.jgit.util.StringUtils;
public class JGitClientSession extends ClientSessionImpl {
/**
+ * Attribute set by {@link JGitSshClient} to make the
+ * {@link KeyPasswordProvider} factory accessible via the session.
+ */
+ public static final AttributeKey<Supplier<KeyPasswordProvider>> KEY_PASSWORD_PROVIDER_FACTORY = new AttributeKey<>();
+
+ /**
* Default setting for the maximum number of bytes to read in the initial
* protocol version exchange. 64kb is what OpenSSH &lt; 8.0 read; OpenSSH
* 8.0 changed it to 8Mb, but that seems excessive for the purpose stated in
@@ -88,8 +96,11 @@ public class JGitClientSession extends ClientSessionImpl {
/**
* @param manager
+ * client factory manager
* @param session
+ * the session
* @throws Exception
+ * an error occurred
*/
public JGitClientSession(ClientFactoryManager manager, IoSession session)
throws Exception {
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java
index e2da7991af..eb55ec045b 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018, 2022 Thomas Wolf <thomas.wolf@paranor.ch> and others
+ * Copyright (C) 2018, 2023 Thomas Wolf <twolf@apache.org> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -10,8 +10,12 @@
package org.eclipse.jgit.internal.transport.sshd;
import static java.text.MessageFormat.format;
+import static org.eclipse.jgit.transport.SshConstants.NONE;
+import static org.eclipse.jgit.transport.SshConstants.PKCS11_PROVIDER;
+import static org.eclipse.jgit.transport.SshConstants.PKCS11_SLOT_LIST_INDEX;
import static org.eclipse.jgit.transport.SshConstants.PUBKEY_ACCEPTED_ALGORITHMS;
+import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
@@ -25,6 +29,7 @@ import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -49,19 +54,25 @@ import org.apache.sshd.common.config.keys.PublicKeyEntryResolver;
import org.apache.sshd.common.config.keys.u2f.SecurityKeyPublicKey;
import org.apache.sshd.common.signature.Signature;
import org.apache.sshd.common.signature.SignatureFactoriesManager;
+import org.apache.sshd.common.util.GenericUtils;
import org.eclipse.jgit.internal.transport.ssh.OpenSshConfigFile;
+import org.eclipse.jgit.internal.transport.sshd.pkcs11.Pkcs11Provider;
import org.eclipse.jgit.transport.CredentialItem;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.SshConstants;
import org.eclipse.jgit.transport.URIish;
+import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.StringUtils;
/**
* Custom {@link UserAuthPublicKey} implementation for handling SSH config
- * PubkeyAcceptedAlgorithms and interaction with the SSH agent.
+ * PubkeyAcceptedAlgorithms and interaction with the SSH agent and PKCS11
+ * providers.
*/
public class JGitPublicKeyAuthentication extends UserAuthPublicKey {
+ private static final String LOG_FORMAT = "{}"; //$NON-NLS-1$
+
private SshAgent agent;
private HostConfigEntry hostConfig;
@@ -102,7 +113,7 @@ public class JGitPublicKeyAuthentication extends UserAuthPublicKey {
super.init(session, service);
return;
}
- log.warn(format(SshdText.get().configNoKnownAlgorithms,
+ log.warn(LOG_FORMAT, format(SshdText.get().configNoKnownAlgorithms,
PUBKEY_ACCEPTED_ALGORITHMS, pubkeyAlgos));
}
// TODO: remove this once we're on an sshd version that has SSHD-1272
@@ -181,7 +192,7 @@ public class JGitPublicKeyAuthentication extends UserAuthPublicKey {
} catch (IOException e) {
// Do not re-throw: we don't want authentication to fail if
// we cannot add the key to the agent.
- log.error(
+ log.error(LOG_FORMAT,
format(SshdText.get().pubkeyAuthAddKeyToAgentError,
keyType, fingerprint),
e);
@@ -303,13 +314,6 @@ public class JGitPublicKeyAuthentication extends UserAuthPublicKey {
private class KeyIterator extends UserAuthPublicKeyIterator {
- private Iterable<? extends Map.Entry<PublicKey, String>> agentKeys;
-
- // If non-null, all the public keys from explicitly given key files. Any
- // agent key not matching one of these public keys will be ignored in
- // getIdentities().
- private Collection<PublicKey> identityFiles;
-
public KeyIterator(ClientSession session,
SignatureFactoriesManager manager)
throws Exception {
@@ -331,7 +335,8 @@ public class JGitPublicKeyAuthentication extends UserAuthPublicKey {
}
} catch (InvalidPathException | IOException
| GeneralSecurityException e) {
- log.warn(format(SshdText.get().cannotReadPublicKey, s), e);
+ log.warn("{}", //$NON-NLS-1$
+ format(SshdText.get().cannotReadPublicKey, s), e);
}
return null;
}).filter(Objects::nonNull).collect(Collectors.toList());
@@ -340,36 +345,40 @@ public class JGitPublicKeyAuthentication extends UserAuthPublicKey {
@Override
protected Iterable<KeyAgentIdentity> initializeAgentIdentities(
ClientSession session) throws IOException {
- if (agent == null) {
+ Iterable<KeyAgentIdentity> allAgentKeys = getAgentIdentities();
+ if (allAgentKeys == null) {
return null;
}
- agentKeys = agent.getIdentities();
- if (hostConfig != null && hostConfig.isIdentitiesOnly()) {
- identityFiles = getExplicitKeys(hostConfig.getIdentities());
+ Collection<PublicKey> identityFiles = identitiesOnly();
+ if (GenericUtils.isEmpty(identityFiles)) {
+ return allAgentKeys;
}
+
+ // Only consider agent or PKCS11 keys that match a known public key
+ // file.
return () -> new Iterator<>() {
- private final Iterator<? extends Map.Entry<PublicKey, String>> iter = agentKeys
+ private final Iterator<KeyAgentIdentity> identities = allAgentKeys
.iterator();
- private Map.Entry<PublicKey, String> next;
+ private KeyAgentIdentity next;
@Override
public boolean hasNext() {
- while (next == null && iter.hasNext()) {
- Map.Entry<PublicKey, String> val = iter.next();
- PublicKey pk = val.getKey();
+ while (next == null && identities.hasNext()) {
+ KeyAgentIdentity val = identities.next();
+ PublicKey pk = val.getKeyIdentity().getPublic();
// This checks against all explicit keys for any agent
// key, but since identityFiles.size() is typically 1,
// it should be fine.
- if (identityFiles == null || identityFiles.stream()
+ if (identityFiles.stream()
.anyMatch(k -> KeyUtils.compareKeys(k, pk))) {
next = val;
return true;
}
if (log.isTraceEnabled()) {
log.trace(
- "Ignoring SSH agent {} key not in explicit IdentityFile in SSH config: {}", //$NON-NLS-1$
+ "Ignoring SSH agent or PKCS11 {} key not in explicit IdentityFile in SSH config: {}", //$NON-NLS-1$
KeyUtils.getKeyType(pk),
KeyUtils.getFingerPrint(pk));
}
@@ -382,12 +391,157 @@ public class JGitPublicKeyAuthentication extends UserAuthPublicKey {
if (!hasNext()) {
throw new NoSuchElementException();
}
- KeyAgentIdentity result = new KeyAgentIdentity(agent,
- next.getKey(), next.getValue());
+ KeyAgentIdentity result = next;
next = null;
return result;
}
};
}
+
+ private Collection<PublicKey> identitiesOnly() {
+ if (hostConfig != null && hostConfig.isIdentitiesOnly()) {
+ return getExplicitKeys(hostConfig.getIdentities());
+ }
+ return Collections.emptyList();
+ }
+
+ private Iterable<KeyAgentIdentity> getAgentIdentities()
+ throws IOException {
+ Iterable<KeyAgentIdentity> pkcs11Keys = getPkcs11Keys();
+ if (agent == null) {
+ return pkcs11Keys;
+ }
+ Iterable<? extends Map.Entry<PublicKey, String>> agentKeys = agent
+ .getIdentities();
+ if (GenericUtils.isEmpty(agentKeys)) {
+ return pkcs11Keys;
+ }
+ Iterable<KeyAgentIdentity> fromAgent = () -> new Iterator<>() {
+
+ private final Iterator<? extends Map.Entry<PublicKey, String>> iter = agentKeys
+ .iterator();
+
+ @Override
+ public boolean hasNext() {
+ return iter.hasNext();
+ }
+
+ @Override
+ public KeyAgentIdentity next() {
+ Map.Entry<PublicKey, String> next = iter.next();
+ return new KeyAgentIdentity(agent, next.getKey(),
+ next.getValue());
+ }
+ };
+ if (GenericUtils.isEmpty(pkcs11Keys)) {
+ return fromAgent;
+ }
+ return () -> new Iterator<>() {
+
+ private final Iterator<Iterator<KeyAgentIdentity>> keyIter = List
+ .of(pkcs11Keys.iterator(), fromAgent.iterator())
+ .iterator();
+
+ private Iterator<KeyAgentIdentity> currentKeys;
+
+ private Boolean hasElement;
+
+ @Override
+ public boolean hasNext() {
+ if (hasElement != null) {
+ return hasElement.booleanValue();
+ }
+ while (currentKeys == null || !currentKeys.hasNext()) {
+ if (keyIter.hasNext()) {
+ currentKeys = keyIter.next();
+ } else {
+ currentKeys = null;
+ hasElement = Boolean.FALSE;
+ return false;
+ }
+ }
+ hasElement = Boolean.TRUE;
+ return true;
+ }
+
+ @Override
+ public KeyAgentIdentity next() {
+ if ((hasElement == null && !hasNext())
+ || !hasElement.booleanValue()) {
+ throw new NoSuchElementException();
+ }
+ hasElement = null;
+ KeyAgentIdentity result;
+ try {
+ result = currentKeys.next();
+ } catch (NoSuchElementException e) {
+ result = null;
+ }
+ return result;
+ }
+ };
+ }
+
+ private Iterable<KeyAgentIdentity> getPkcs11Keys() throws IOException {
+ String value = hostConfig.getProperty(PKCS11_PROVIDER);
+ if (StringUtils.isEmptyOrNull(value) || NONE.equals(value)) {
+ return null;
+ }
+ if (value.startsWith("~/") //$NON-NLS-1$
+ || value.startsWith('~' + File.separator)) {
+ value = new File(FS.DETECTED.userHome(), value.substring(2))
+ .toString();
+ }
+ Path library = Paths.get(value);
+ if (!library.isAbsolute()) {
+ throw new IOException(format(SshdText.get().pkcs11NotAbsolute,
+ hostConfig.getHost(), hostConfig.getHostName(),
+ PKCS11_PROVIDER, value));
+ }
+ if (!Files.isRegularFile(library)) {
+ throw new IOException(format(SshdText.get().pkcs11NonExisting,
+ hostConfig.getHost(), hostConfig.getHostName(),
+ PKCS11_PROVIDER, value));
+ }
+ try {
+ int slotListIndex = OpenSshConfigFile.positive(
+ hostConfig.getProperty(PKCS11_SLOT_LIST_INDEX));
+ Pkcs11Provider provider = Pkcs11Provider.getProvider(library,
+ slotListIndex);
+ if (provider == null) {
+ throw new UnsupportedOperationException();
+ }
+ Iterable<KeyAgentIdentity> pkcs11Identities = provider
+ .getKeys(getSession());
+ if (GenericUtils.isEmpty(pkcs11Identities)) {
+ log.warn(LOG_FORMAT, format(SshdText.get().pkcs11NoKeys,
+ hostConfig.getHost(), hostConfig.getHostName(),
+ PKCS11_PROVIDER, value));
+ return null;
+ }
+ return pkcs11Identities;
+ } catch (UnsupportedOperationException e) {
+ throw new UnsupportedOperationException(format(
+ SshdText.get().pkcs11Unsupported, hostConfig.getHost(),
+ hostConfig.getHostName(), PKCS11_PROVIDER, value), e);
+ } catch (Exception e) {
+ checkCancellation(e);
+ throw new IOException(
+ format(SshdText.get().pkcs11FailedInstantiation,
+ hostConfig.getHost(), hostConfig.getHostName(),
+ PKCS11_PROVIDER, value),
+ e);
+ }
+ }
+
+ private void checkCancellation(Throwable e) {
+ Throwable t = e;
+ while (t != null) {
+ if (t instanceof AuthenticationCanceledException) {
+ throw (AuthenticationCanceledException) t;
+ }
+ t = t.getCause();
+ }
+ }
}
}
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitSshClient.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitSshClient.java
index 311cf198ae..6e9bd621d2 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitSshClient.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitSshClient.java
@@ -32,6 +32,7 @@ import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
+import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.apache.sshd.client.SshClient;
@@ -58,6 +59,7 @@ import org.eclipse.jgit.internal.transport.sshd.proxy.Socks5ClientConnector;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.SshConstants;
import org.eclipse.jgit.transport.sshd.KeyCache;
+import org.eclipse.jgit.transport.sshd.KeyPasswordProvider;
import org.eclipse.jgit.transport.sshd.ProxyData;
import org.eclipse.jgit.transport.sshd.ProxyDataFactory;
import org.eclipse.jgit.util.StringUtils;
@@ -103,6 +105,8 @@ public class JGitSshClient extends SshClient {
private CredentialsProvider credentialsProvider;
+ private Supplier<KeyPasswordProvider> keyPasswordProviderFactory;
+
private ProxyDataFactory proxyDatabase;
@Override
@@ -277,6 +281,8 @@ public class JGitSshClient extends SshClient {
}
int numberOfPasswordPrompts = getNumberOfPasswordPrompts(hostConfig);
PASSWORD_PROMPTS.set(session, Integer.valueOf(numberOfPasswordPrompts));
+ session.setAttribute(JGitClientSession.KEY_PASSWORD_PROVIDER_FACTORY,
+ getKeyPasswordProviderFactory());
List<Path> identities = hostConfig.getIdentities().stream()
.map(s -> {
try {
@@ -374,6 +380,26 @@ public class JGitSshClient extends SshClient {
}
/**
+ * Sets a supplier for a {@link KeyPasswordProvider} for this client.
+ *
+ * @param factory
+ * to set
+ */
+ public void setKeyPasswordProviderFactory(
+ Supplier<KeyPasswordProvider> factory) {
+ keyPasswordProviderFactory = factory;
+ }
+
+ /**
+ * Retrieves the {@link KeyPasswordProvider} factory of this client.
+ *
+ * @return a factory to create {@link KeyPasswordProvider}s
+ */
+ public Supplier<KeyPasswordProvider> getKeyPasswordProviderFactory() {
+ return keyPasswordProviderFactory;
+ }
+
+ /**
* A {@link SessionFactory} to create our own specialized
* {@link JGitClientSession}s.
*/
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/KnownHostEntryReader.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/KnownHostEntryReader.java
index 7931c76c19..a00e5d96ac 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/KnownHostEntryReader.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/KnownHostEntryReader.java
@@ -34,9 +34,9 @@ import org.slf4j.LoggerFactory;
/**
* Apache MINA sshd 2.0.0 KnownHostEntry cannot read a host entry line like
- * "host:port ssh-rsa <key>"; it complains about an illegal character in the
- * host name (correct would be "[host]:port"). The default known_hosts reader
- * also aborts reading on the first error.
+ * "host:port ssh-rsa &lt;key&gt;"; it complains about an illegal character in
+ * the host name (correct would be "[host]:port"). The default known_hosts
+ * reader also aborts reading on the first error.
* <p>
* This reader is a bit more robust and tries to handle this case if there is
* only one colon (otherwise it might be an IPv6 address (without port)), and it
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java
index d8bf449acf..65ba5be0c5 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/OpenSshServerKeyDatabase.java
@@ -74,7 +74,6 @@ import org.slf4j.LoggerFactory;
* ignored.
* <p>
* {@code StrictHostKeyChecking} accepts the following values:
- * </p>
* <dl>
* <dt>ask</dt>
* <dd>Ask the user whether new or changed keys shall be accepted and be added
@@ -91,7 +90,6 @@ import org.slf4j.LoggerFactory;
* <p>
* If {@code StrictHostKeyChecking} is not set, or set to any other value, the
* default value <b>ask</b> is active.
- * </p>
* <p>
* This implementation relies on the {@link ClientSession} being a
* {@link JGitClientSession}. By default Apache MINA sshd does not forward the
@@ -100,23 +98,19 @@ import org.slf4j.LoggerFactory;
* used. If used with some other session type, the implementation assumes
* "<b>ask</b>".
* <p>
- * <p>
* Asking the user is done via a {@link CredentialsProvider} obtained from the
* session. If none is set, the implementation falls back to strict host key
* checking ("<b>yes</b>").
- * </p>
* <p>
* Note that adding a key to the known hosts file may create the file. You can
* specify in the constructor whether the user shall be asked about that, too.
* If the user declines updating the file, but the key was otherwise
* accepted (user confirmed for "<b>ask</b>", or "no" or "accept-new" are
* active), the key is accepted for this session only.
- * </p>
* <p>
* If several known hosts files are specified, a new key is always added to the
* first file (even if it doesn't exist yet; see the note about file creation
* above).
- * </p>
*
* @see <a href="http://man.openbsd.org/OpenBSD-current/man5/ssh_config.5">man
* ssh-config</a>
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/SshdText.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/SshdText.java
index 39332d9fca..34c73fcc1d 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/SshdText.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/SshdText.java
@@ -90,6 +90,14 @@ public final class SshdText extends TranslationBundle {
/***/ public String knownHostsUserAskCreationPrompt;
/***/ public String loginDenied;
/***/ public String passwordPrompt;
+ /***/ public String pkcs11Error;
+ /***/ public String pkcs11FailedInstantiation;
+ /***/ public String pkcs11GeneralMessage;
+ /***/ public String pkcs11NoKeys;
+ /***/ public String pkcs11NonExisting;
+ /***/ public String pkcs11NotAbsolute;
+ /***/ public String pkcs11Unsupported;
+ /***/ public String pkcs11Warning;
/***/ public String proxyCannotAuthenticate;
/***/ public String proxyHttpFailure;
/***/ public String proxyHttpInvalidUserName;
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/pkcs11/Pkcs11Provider.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/pkcs11/Pkcs11Provider.java
new file mode 100644
index 0000000000..eefa3aa868
--- /dev/null
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/pkcs11/Pkcs11Provider.java
@@ -0,0 +1,372 @@
+/*
+ * Copyright (C) 2023 Thomas Wolf <twolf@apache.org> and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.transport.sshd.pkcs11;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.security.GeneralSecurityException;
+import java.security.KeyPair;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.Provider;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.Signature;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateExpiredException;
+import java.security.cert.CertificateNotYetValidException;
+import java.security.cert.X509Certificate;
+import java.util.AbstractMap.SimpleImmutableEntry;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.security.auth.login.FailedLoginException;
+
+import org.apache.sshd.agent.SshAgent;
+import org.apache.sshd.agent.SshAgentKeyConstraint;
+import org.apache.sshd.client.auth.pubkey.KeyAgentIdentity;
+import org.apache.sshd.common.session.SessionContext;
+import org.apache.sshd.common.signature.BuiltinSignatures;
+import org.eclipse.jgit.annotations.NonNull;
+import org.eclipse.jgit.transport.URIish;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Bridge for using a PKCS11 HSM (Hardware Security Module) for public-key
+ * authentication.
+ */
+public class Pkcs11Provider {
+
+ private static final Logger LOG = LoggerFactory
+ .getLogger(Pkcs11Provider.class);
+
+ /**
+ * A dummy agent; exists only because
+ * {@link KeyAgentIdentity#KeyAgentIdentity(SshAgent, PublicKey, String)} requires
+ * a non-{@code null} {@link SshAgent}.
+ */
+ private static final SshAgent NULL_AGENT = new SshAgent() {
+
+ @Override
+ public boolean isOpen() {
+ return true;
+ }
+
+ @Override
+ public void close() throws IOException {
+ // Nothing to do
+ }
+
+ @Override
+ public Iterable<? extends Entry<PublicKey, String>> getIdentities()
+ throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Entry<String, byte[]> sign(SessionContext session, PublicKey key,
+ String algo, byte[] data) throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void addIdentity(KeyPair key, String comment,
+ SshAgentKeyConstraint... constraints) throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void removeIdentity(PublicKey key) throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void removeAllIdentities() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ };
+
+ private static final Map<String, Pkcs11Provider> PROVIDERS = new ConcurrentHashMap<>();
+
+ private static final AtomicInteger COUNT = new AtomicInteger();
+
+ /**
+ * Creates a new {@link Pkcs11Provider}.
+ *
+ * @param library
+ * {@link Path} to the library the SunPKCS11 provider shall use
+ * @param slotListIndex
+ * index identifying the token; if &lt; 0, ignored and 0 is used
+ * @return a new {@link Pkcs11Provider}, or {@code null} if SunPKCS11 is not
+ * available
+ * @throws IOException
+ * if the configuration file cannot be created
+ * @throws java.security.ProviderException
+ * if the Java {@link Provider} encounters a problem
+ * @throws UnsupportedOperationException
+ * if PKCS#11 is unsupported
+ */
+ public static Pkcs11Provider getProvider(@NonNull Path library,
+ int slotListIndex) throws IOException {
+ int slotIndex = slotListIndex < 0 ? 0 : slotListIndex;
+ Path libPath = library.toAbsolutePath();
+ String key = libPath.toString() + '/' + slotIndex;
+ return PROVIDERS.computeIfAbsent(key, sharedLib -> {
+ Provider pkcs11 = Security.getProvider("SunPKCS11"); //$NON-NLS-1$
+ if (pkcs11 == null) {
+ throw new UnsupportedOperationException();
+ }
+ // There must not be any spaces in the name.
+ String name = libPath.getFileName().toString().replaceAll("\\s", //$NON-NLS-1$
+ ""); //$NON-NLS-1$
+ name = "JGit-" + slotIndex + '-' + name; //$NON-NLS-1$
+ // SunPKCS11 has a problem with paths containing multiple successive
+ // spaces; it collapses them to a single space.
+ //
+ // However, it also performs property expansion on these paths.
+ // (Seems to be an undocumented feature, though.) A reference like
+ // ${xyz} is replaced by system property "xyz". Use that to work
+ // around the rudimentary config parsing in SunPKCS11.
+ String property = "pkcs11-" + COUNT.incrementAndGet() + '-' + name; //$NON-NLS-1$
+ System.setProperty(property, libPath.toString());
+ // Undocumented feature of the SunPKCS11 provider: if the parameter
+ // to configure() starts with two dashes, it's not a file name but
+ // the configuration directly.
+ String config = "--" //$NON-NLS-1$
+ + "name = " + name + '\n' //$NON-NLS-1$
+ + "library = ${" + property + "}\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + "slotListIndex = " + slotIndex + '\n'; //$NON-NLS-1$
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(
+ "{}: configuring provider with system property {}={} and config:{}{}", //$NON-NLS-1$
+ name, property, libPath, System.lineSeparator(),
+ config);
+ }
+ pkcs11 = pkcs11.configure(config);
+ // Produce an RFC7512 URI. Empty path, module-path must be in
+ // the query.
+ String path = "pkcs11:?module-path=" + libPath; //$NON-NLS-1$
+ if (slotListIndex > 0) {
+ // RFC7512 has nothing for the slot list index; pretend it
+ // was a vendor-specific query attribute.
+ path += "&slot-list-index=" + slotListIndex; //$NON-NLS-1$
+ }
+ SecurityCallback callback = new SecurityCallback(
+ new URIish().setPath(path));
+ return new Pkcs11Provider(pkcs11, callback);
+ });
+ }
+
+ private final Provider provider;
+
+ private final SecurityCallback prompter;
+
+ private final KeyStore.Builder builder;
+
+ private KeyStore keys;
+
+ private Pkcs11Provider(Provider pkcs11, SecurityCallback prompter) {
+ this.provider = pkcs11;
+ this.prompter = prompter;
+ this.builder = KeyStore.Builder.newInstance("PKCS11", provider, //$NON-NLS-1$
+ new KeyStore.CallbackHandlerProtection(prompter));
+ }
+
+ // Implementation note: With SoftHSM Java 11 asks for the PIN when the
+ // KeyStore is loaded, i.e., when the token is accessed. softhsm2-util,
+ // however, can list certificates and public keys without PIN entry, but
+ // needs a PIN to also list private keys. So it appears that different
+ // module libraries or possibly different KeyStore implementations may
+ // prompt either when accessing the token, or only when we try to actually
+ // sign something (i.e., when accessing a private key). It may also depend
+ // on the token itself; some tokens require early log-in.
+ //
+ // Therefore we initialize the prompter in both cases, even if it may be
+ // unused in one or the other operation.
+ //
+ // The price to pay is that sign() has to be synchronized, too, to avoid
+ // that different sessions step on each other's toes in the prompter.
+
+ private synchronized void load(SessionContext session)
+ throws GeneralSecurityException, IOException {
+ if (keys == null) {
+ int numberOfPrompts = prompter.init(session);
+ int attempt = 0;
+ while (attempt < numberOfPrompts) {
+ attempt++;
+ try {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(
+ "{}: Loading PKCS#11 KeyStore (attempt {})", //$NON-NLS-1$
+ getName(), Integer.toString(attempt));
+ }
+ keys = builder.getKeyStore();
+ prompter.passwordTried(null);
+ return;
+ } catch (GeneralSecurityException e) {
+ if (!prompter.passwordTried(e) || attempt >= numberOfPrompts
+ || !isWrongPin(e)) {
+ throw e;
+ }
+ }
+ }
+ }
+ }
+
+ synchronized byte[] sign(SessionContext session, String algorithm,
+ String alias, byte[] data)
+ throws GeneralSecurityException, IOException {
+ int numberOfPrompts = prompter.init(session);
+ int attempt = 0;
+ while (attempt < numberOfPrompts) {
+ attempt++;
+ try {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(
+ "{}: Signing with PKCS#11 key {}, algorithm {} (attempt {})", //$NON-NLS-1$
+ getName(), alias, algorithm,
+ Integer.toString(attempt));
+ }
+ Signature signer = Signature.getInstance(algorithm, provider);
+ PrivateKey privKey = (PrivateKey) keys.getKey(alias, null);
+ signer.initSign(privKey);
+ signer.update(data);
+ byte[] signature = signer.sign();
+ prompter.passwordTried(null);
+ return signature;
+ } catch (GeneralSecurityException e) {
+ if (!prompter.passwordTried(e) || attempt >= numberOfPrompts
+ || !isWrongPin(e)) {
+ throw e;
+ }
+ }
+ }
+ return null;
+ }
+
+ private boolean isWrongPin(Throwable e) {
+ Throwable t = e;
+ while (t != null) {
+ if (t instanceof FailedLoginException) {
+ return true;
+ }
+ t = t.getCause();
+ }
+ return false;
+ }
+
+ /**
+ * Retrieves an identifying name of this {@link Pkcs11Provider}.
+ *
+ * @return the name
+ */
+ public String getName() {
+ return provider.getName();
+ }
+
+ /**
+ * Obtains the identities provided by the PKCS11 library.
+ *
+ * @param session
+ * in which we to load the identities
+ * @return all the available identities
+ * @throws IOException
+ * if keys cannot be accessed
+ * @throws GeneralSecurityException
+ * if keys cannot be accessed
+ */
+ public Iterable<KeyAgentIdentity> getKeys(SessionContext session)
+ throws IOException, GeneralSecurityException {
+ // Get all public keys from the KeyStore.
+ load(session);
+ List<KeyAgentIdentity> result = new ArrayList<>(2);
+ Enumeration<String> aliases = keys.aliases();
+ while (aliases.hasMoreElements()) {
+ String alias = aliases.nextElement();
+ Certificate certificate = keys.getCertificate(alias);
+ if (certificate == null) {
+ continue;
+ }
+ PublicKey pubKey = certificate.getPublicKey();
+ if (pubKey == null) {
+ // This should never happen
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("{}: certificate {} has no public key??", //$NON-NLS-1$
+ getName(), alias);
+ }
+ continue;
+ }
+ if (LOG.isDebugEnabled()) {
+ if (certificate instanceof X509Certificate) {
+ X509Certificate x509 = (X509Certificate) certificate;
+ // OpenSSH does not seem to check certificate validity?
+ String msg;
+ try {
+ x509.checkValidity();
+ msg = "Certificate is valid"; //$NON-NLS-1$
+ } catch (CertificateExpiredException
+ | CertificateNotYetValidException e) {
+ msg = "Certificate is INVALID"; //$NON-NLS-1$
+ }
+ // OpenSSh explicitly also considers private keys not
+ // intended for signing, see
+ // https://bugzilla.mindrot.org/show_bug.cgi?id=1736 .
+ boolean[] usage = x509.getKeyUsage();
+ if (usage != null) {
+ // We have no access to the PKCS#11 flags on the key, so
+ // report the certificate flag, if present.
+ msg += ", signing " //$NON-NLS-1$
+ + (usage[0] ? "allowed" : "NOT allowed"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ LOG.debug(
+ "{}: Loaded X.509 certificate {}, key type {}. {}.", //$NON-NLS-1$
+ getName(), alias, pubKey.getAlgorithm(), msg);
+ } else {
+ LOG.debug("{}: Loaded certificate {}, key type {}.", //$NON-NLS-1$
+ getName(), alias, pubKey.getAlgorithm());
+ }
+ }
+ result.add(new Pkcs11Identity(pubKey, alias));
+ }
+ return result;
+ }
+
+ // We use a KeyAgentIdentity because we want to hide the private key.
+ //
+ // JGit doesn't do Agent forwarding, so there will never be any reason to
+ // add a PKCS11 key/token to an agent.
+ private class Pkcs11Identity extends KeyAgentIdentity {
+
+ Pkcs11Identity(PublicKey key, String alias) {
+ super(NULL_AGENT, key, alias);
+ }
+
+ @Override
+ public Entry<String, byte[]> sign(SessionContext session, String algo,
+ byte[] data) throws Exception {
+ // Find the built-in signature factory for the algorithm
+ BuiltinSignatures factory = BuiltinSignatures.fromFactoryName(algo);
+ // Get its Java signature algorithm name from that
+ String javaSignatureName = factory.create().getAlgorithm();
+ // We cannot use the Signature created by the factory -- we need a
+ // provider-specific Signature instance.
+ return new SimpleImmutableEntry<>(algo,
+ Pkcs11Provider.this.sign(session, javaSignatureName,
+ getComment(), data));
+ }
+ }
+}
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/pkcs11/SecurityCallback.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/pkcs11/SecurityCallback.java
new file mode 100644
index 0000000000..334a8cac81
--- /dev/null
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/pkcs11/SecurityCallback.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2023 Thomas Wolf <twolf@apache.org> and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.transport.sshd.pkcs11;
+
+import static java.text.MessageFormat.format;
+import static org.apache.sshd.core.CoreModuleProperties.PASSWORD_PROMPTS;
+
+import java.io.IOException;
+import java.security.GeneralSecurityException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.function.Supplier;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.ChoiceCallback;
+import javax.security.auth.callback.ConfirmationCallback;
+import javax.security.auth.callback.LanguageCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.TextInputCallback;
+import javax.security.auth.callback.TextOutputCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import org.apache.sshd.common.session.SessionContext;
+import org.eclipse.jgit.internal.transport.sshd.AuthenticationCanceledException;
+import org.eclipse.jgit.internal.transport.sshd.JGitClientSession;
+import org.eclipse.jgit.internal.transport.sshd.SshdText;
+import org.eclipse.jgit.transport.CredentialItem;
+import org.eclipse.jgit.transport.CredentialsProvider;
+import org.eclipse.jgit.transport.URIish;
+import org.eclipse.jgit.transport.sshd.KeyPasswordProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A bridge to the JGit {@link CredentialsProvider}.
+ */
+public class SecurityCallback implements CallbackHandler {
+
+ private static final Logger LOG = LoggerFactory
+ .getLogger(SecurityCallback.class);
+
+ private final URIish uri;
+
+ private KeyPasswordProvider passwordProvider;
+
+ private CredentialsProvider credentialsProvider;
+
+ private int attempts = 0;
+
+ /**
+ * Creates a new {@link SecurityCallback}.
+ *
+ * @param uri
+ * {@link URIish} identifying the item the interaction is about
+ */
+ public SecurityCallback(URIish uri) {
+ this.uri = uri;
+ }
+
+ /**
+ * Initializes this {@link SecurityCallback} for the given session.
+ *
+ * @param session
+ * {@link SessionContext} of the keystore access
+ * @return the number of PIN prompts to try to log-in to the token
+ */
+ public int init(SessionContext session) {
+ int numberOfAttempts = PASSWORD_PROMPTS.getRequired(session).intValue();
+ Supplier<KeyPasswordProvider> factory = session
+ .getAttribute(JGitClientSession.KEY_PASSWORD_PROVIDER_FACTORY);
+ if (factory == null) {
+ passwordProvider = null;
+ } else {
+ passwordProvider = factory.get();
+ passwordProvider.setAttempts(numberOfAttempts);
+ }
+ attempts = 0;
+ if (session instanceof JGitClientSession) {
+ credentialsProvider = ((JGitClientSession) session)
+ .getCredentialsProvider();
+ } else {
+ credentialsProvider = null;
+ }
+ return numberOfAttempts;
+ }
+
+ /**
+ * Tells this {@link SecurityCallback} that an attempt to load something
+ * from the key store has been made.
+ *
+ * @param error
+ * an {@link Exception} that may have occurred, or {@code null}
+ * on success
+ * @return whether to try once more
+ * @throws IOException
+ * on errors
+ * @throws GeneralSecurityException
+ * on errors
+ */
+ public boolean passwordTried(Exception error)
+ throws IOException, GeneralSecurityException {
+ if (attempts > 0 && passwordProvider != null) {
+ return passwordProvider.keyLoaded(uri, attempts, error);
+ }
+ return true;
+ }
+
+ @Override
+ public void handle(Callback[] callbacks)
+ throws IOException, UnsupportedCallbackException {
+ if (callbacks.length == 1 && callbacks[0] instanceof PasswordCallback
+ && passwordProvider != null) {
+ PasswordCallback p = (PasswordCallback) callbacks[0];
+ char[] password = passwordProvider.getPassphrase(uri, attempts++);
+ if (password == null || password.length == 0) {
+ throw new AuthenticationCanceledException();
+ }
+ p.setPassword(password);
+ Arrays.fill(password, '\0');
+ } else {
+ handleGeneral(callbacks);
+ }
+ }
+
+ private void handleGeneral(Callback[] callbacks)
+ throws UnsupportedCallbackException {
+ List<CredentialItem> items = new ArrayList<>();
+ List<Runnable> updaters = new ArrayList<>();
+ for (int i = 0; i < callbacks.length; i++) {
+ Callback c = callbacks[i];
+ if (c instanceof TextOutputCallback) {
+ TextOutputCallback t = (TextOutputCallback) c;
+ String msg = getText(t.getMessageType(), t.getMessage());
+ if (credentialsProvider == null) {
+ LOG.warn("{}", format(SshdText.get().pkcs11GeneralMessage, //$NON-NLS-1$
+ uri, msg));
+ } else {
+ CredentialItem.InformationalMessage item =
+ new CredentialItem.InformationalMessage(msg);
+ items.add(item);
+ }
+ } else if (c instanceof TextInputCallback) {
+ if (credentialsProvider == null) {
+ throw new UnsupportedOperationException(
+ "No CredentialsProvider " + uri); //$NON-NLS-1$
+ }
+ TextInputCallback t = (TextInputCallback) c;
+ CredentialItem.StringType item = new CredentialItem.StringType(
+ t.getPrompt(), false);
+ String defaultValue = t.getDefaultText();
+ if (defaultValue != null) {
+ item.setValue(defaultValue);
+ }
+ items.add(item);
+ updaters.add(() -> t.setText(item.getValue()));
+ } else if (c instanceof PasswordCallback) {
+ if (credentialsProvider == null) {
+ throw new UnsupportedOperationException(
+ "No CredentialsProvider " + uri); //$NON-NLS-1$
+ }
+ // It appears that this is actually the only callback item we
+ // get from the KeyStore when it asks for the PIN.
+ PasswordCallback p = (PasswordCallback) c;
+ CredentialItem.Password item = new CredentialItem.Password(
+ p.getPrompt());
+ items.add(item);
+ updaters.add(() -> {
+ char[] password = item.getValue();
+ if (password == null || password.length == 0) {
+ throw new AuthenticationCanceledException();
+ }
+ p.setPassword(password);
+ item.clear();
+ });
+ } else if (c instanceof ConfirmationCallback) {
+ if (credentialsProvider == null) {
+ throw new UnsupportedOperationException(
+ "No CredentialsProvider " + uri); //$NON-NLS-1$
+ }
+ // JGit has only limited support for this
+ ConfirmationCallback conf = (ConfirmationCallback) c;
+ int options = conf.getOptionType();
+ int defaultOption = conf.getDefaultOption();
+ CredentialItem.YesNoType item = new CredentialItem.YesNoType(
+ getText(conf.getMessageType(), conf.getPrompt()));
+ switch (options) {
+ case ConfirmationCallback.YES_NO_OPTION:
+ if (defaultOption == ConfirmationCallback.YES) {
+ item.setValue(true);
+ }
+ updaters.add(() -> conf.setSelectedIndex(
+ item.getValue() ? ConfirmationCallback.YES
+ : ConfirmationCallback.NO));
+ break;
+ case ConfirmationCallback.OK_CANCEL_OPTION:
+ if (defaultOption == ConfirmationCallback.OK) {
+ item.setValue(true);
+ }
+ updaters.add(() -> conf.setSelectedIndex(
+ item.getValue() ? ConfirmationCallback.OK
+ : ConfirmationCallback.CANCEL));
+ break;
+ default:
+ throw new UnsupportedCallbackException(c);
+ }
+ items.add(item);
+ } else if (c instanceof ChoiceCallback) {
+ // TODO: implement? Information for the prompt, and individual
+ // YesNoItems for the choices? Might be better to hoist JGit
+ // onto the CallbackHandler interface directly, or add support
+ // for choices.
+ throw new UnsupportedCallbackException(c);
+ } else if (c instanceof LanguageCallback) {
+ ((LanguageCallback) c).setLocale(Locale.getDefault());
+ } else {
+ throw new UnsupportedCallbackException(c);
+ }
+ }
+ if (!items.isEmpty()) {
+ if (credentialsProvider.get(uri, items)) {
+ updaters.forEach(Runnable::run);
+ } else {
+ throw new AuthenticationCanceledException();
+ }
+ }
+ }
+
+ private String getText(int messageType, String text) {
+ if (messageType == TextOutputCallback.WARNING) {
+ return format(SshdText.get().pkcs11Warning, text);
+ } else if (messageType == TextOutputCallback.ERROR) {
+ return format(SshdText.get().pkcs11Error, text);
+ }
+ return text;
+ }
+}
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/IdentityPasswordProvider.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/IdentityPasswordProvider.java
index 807bda89bc..23f46d8d6c 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/IdentityPasswordProvider.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/IdentityPasswordProvider.java
@@ -247,7 +247,9 @@ public class IdentityPasswordProvider implements KeyPasswordProvider {
* the attempt result - {@code null} for success
* @return how to proceed in case of error
* @throws IOException
+ * if an IO error occurred
* @throws GeneralSecurityException
+ * something went wrong
*/
protected boolean keyLoaded(URIish uri,
State state, char[] password, Exception err)
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/KeyPasswordProvider.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/KeyPasswordProvider.java
index ed9fe37d5c..a80a5d166d 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/KeyPasswordProvider.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/KeyPasswordProvider.java
@@ -77,7 +77,9 @@ public interface KeyPasswordProvider {
* {@code error} exception; Ignored if the key was loaded
* successfully, i.e., if {@code error == null}.
* @throws IOException
+ * if an IO error occurred
* @throws GeneralSecurityException
+ * something went wrong
*/
boolean keyLoaded(URIish uri, int attempt, Exception error)
throws IOException, GeneralSecurityException;
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/SshdSessionFactory.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/SshdSessionFactory.java
index 7798b80f18..35c9be047a 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/SshdSessionFactory.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/SshdSessionFactory.java
@@ -210,11 +210,12 @@ public class SshdSessionFactory extends SshSessionFactory implements Closeable {
home, sshDir);
KeyIdentityProvider defaultKeysProvider = toKeyIdentityProvider(
getDefaultKeys(sshDir));
+ Supplier<KeyPasswordProvider> keyPasswordProvider = () -> createKeyPasswordProvider(
+ credentialsProvider);
SshClient client = ClientBuilder.builder()
.factory(JGitSshClient::new)
.filePasswordProvider(createFilePasswordProvider(
- () -> createKeyPasswordProvider(
- credentialsProvider)))
+ keyPasswordProvider))
.hostConfigEntryResolver(configFile)
.serverKeyVerifier(new JGitServerKeyVerifier(
getServerKeyDatabase(home, sshDir)))
@@ -236,6 +237,7 @@ public class SshdSessionFactory extends SshSessionFactory implements Closeable {
jgitClient.setKeyCache(getKeyCache());
jgitClient.setCredentialsProvider(credentialsProvider);
jgitClient.setProxyDatabase(proxies);
+ jgitClient.setKeyPasswordProviderFactory(keyPasswordProvider);
String defaultAuths = getDefaultPreferredAuthentications();
if (defaultAuths != null) {
jgitClient.setAttribute(
@@ -386,7 +388,7 @@ public class SshdSessionFactory extends SshSessionFactory implements Closeable {
}
/**
- * Obtains a {@link SshConfigStore}, or {@code null} if not SSH config is to
+ * Obtains a {@link SshConfigStore}, or {@code null} if no SSH config is to
* be used. The default implementation returns {@code null} if
* {@code configFile == null} and otherwise an OpenSSH-compatible store
* reading host entries from the given file.
@@ -471,6 +473,7 @@ public class SshdSessionFactory extends SshSessionFactory implements Closeable {
* {@code UserKnownHostsFile} overrides this default.
*
* @param sshDir
+ * directory containing ssh configurations
* @return the possibly empty list of default known host file paths.
*/
@NonNull
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/agent/Connector.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/agent/Connector.java
index d8dfbfc94d..b391cf4884 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/agent/Connector.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/transport/sshd/agent/Connector.java
@@ -26,7 +26,7 @@ public interface Connector extends Closeable {
* connected just returns {@code true}.
*
* @return {@code true} if an SSH agent is available and connected,
- * {@false} if no SSH agent is available
+ * {@code false} if no SSH agent is available
* @throws IOException
* if connecting to the SSH agent failed
*/
diff --git a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
index 095dbb1957..46f5899e4d 100644
--- a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.ssh.jsch.test
Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.test
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)"
Import-Package: com.jcraft.jsch;version="[0.1.54,0.2.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit.ssh;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.hamcrest;version="[1.1.0,3.0.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit.ssh;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.experimental.theories;version="[4.13,5.0.0)",
org.junit.runner;version="[4.13,5.0.0)"
diff --git a/org.eclipse.jgit.ssh.jsch.test/pom.xml b/org.eclipse.jgit.ssh.jsch.test/pom.xml
index 34fb8e7f36..9632a1a79f 100644
--- a/org.eclipse.jgit.ssh.jsch.test/pom.xml
+++ b/org.eclipse.jgit.ssh.jsch.test/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ssh.jsch.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.jsch/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.ssh.jsch/.settings/org.eclipse.jdt.core.prefs
index d1f54bbe65..d5c0e6c7e0 100644
--- a/org.eclipse.jgit.ssh.jsch/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.ssh.jsch/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
index 056af34204..68b7f3f2f2 100644
--- a/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.ssh.jsch
Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch;singleton:=true
-Fragment-Host: org.eclipse.jgit;bundle-version="[6.6.2,6.7.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[6.7.1,6.8.0)"
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="6.6.2"
+Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="6.7.1"
Import-Package: com.jcraft.jsch;version="[0.1.37,0.2.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.io;version="[6.6.2,6.7.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.io;version="[6.7.1,6.8.0)",
org.slf4j;version="[1.7.0,2.0.0)"
diff --git a/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
index 81557f5980..67cc394a8b 100644
--- a/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.ssh.jsch - Sources
Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.jsch/pom.xml b/org.eclipse.jgit.ssh.jsch/pom.xml
index 6be4eaa79b..8962d848a8 100644
--- a/org.eclipse.jgit.ssh.jsch/pom.xml
+++ b/org.eclipse.jgit.ssh.jsch/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
diff --git a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/internal/transport/ssh/jsch/CredentialsProviderUserInfo.java b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/internal/transport/ssh/jsch/CredentialsProviderUserInfo.java
index 5053493005..b40ff5a0b4 100644
--- a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/internal/transport/ssh/jsch/CredentialsProviderUserInfo.java
+++ b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/internal/transport/ssh/jsch/CredentialsProviderUserInfo.java
@@ -59,19 +59,16 @@ public class CredentialsProviderUserInfo implements UserInfo,
return uri;
}
- /** {@inheritDoc} */
@Override
public String getPassword() {
return password;
}
- /** {@inheritDoc} */
@Override
public String getPassphrase() {
return passphrase;
}
- /** {@inheritDoc} */
@Override
public boolean promptPassphrase(String msg) {
CredentialItem.StringType v = newPrompt(msg);
@@ -83,7 +80,6 @@ public class CredentialsProviderUserInfo implements UserInfo,
return false;
}
- /** {@inheritDoc} */
@Override
public boolean promptPassword(String msg) {
CredentialItem.Password p = new CredentialItem.Password(msg);
@@ -99,20 +95,17 @@ public class CredentialsProviderUserInfo implements UserInfo,
return new CredentialItem.StringType(msg, true);
}
- /** {@inheritDoc} */
@Override
public boolean promptYesNo(String msg) {
CredentialItem.YesNoType v = new CredentialItem.YesNoType(msg);
return provider.get(uri, v) && v.getValue();
}
- /** {@inheritDoc} */
@Override
public void showMessage(String msg) {
provider.get(uri, new CredentialItem.InformationalMessage(msg));
}
- /** {@inheritDoc} */
@Override
public String[] promptKeyboardInteractive(String destination, String name,
String instruction, String[] prompt, boolean[] echo) {
diff --git a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschConfigSessionFactory.java b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschConfigSessionFactory.java
index 77b68bb034..325d0549a5 100644
--- a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschConfigSessionFactory.java
+++ b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschConfigSessionFactory.java
@@ -92,7 +92,6 @@ public class JschConfigSessionFactory extends SshSessionFactory {
private OpenSshConfig config;
- /** {@inheritDoc} */
@Override
public synchronized RemoteSession getSession(URIish uri,
CredentialsProvider credentialsProvider, FS fs, int tms)
@@ -189,14 +188,22 @@ public class JschConfigSessionFactory extends SshSessionFactory {
* Use for tests only
*
* @param credentialsProvider
+ * credentials provide
* @param fs
+ * FS object to use
* @param user
+ * user
* @param pass
+ * password
* @param host
+ * host name
* @param port
+ * port number
* @param hc
- * @return session
+ * host config
+ * @return session the session
* @throws JSchException
+ * jsch failed
*/
public Session createSession(CredentialsProvider credentialsProvider,
FS fs, String user, final String pass, String host, int port,
diff --git a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschSession.java b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschSession.java
index 02cdf70812..5f36dadc04 100644
--- a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschSession.java
+++ b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/JschSession.java
@@ -68,20 +68,17 @@ public class JschSession implements RemoteSession2 {
this.uri = uri;
}
- /** {@inheritDoc} */
@Override
public Process exec(String command, int timeout) throws IOException {
return exec(command, Collections.emptyMap(), timeout);
}
- /** {@inheritDoc} */
@Override
public Process exec(String command, Map<String, String> environment,
int timeout) throws IOException {
return new JschProcess(command, environment, timeout);
}
- /** {@inheritDoc} */
@Override
public void disconnect() {
if (sock.isConnected())
diff --git a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/OpenSshConfig.java b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/OpenSshConfig.java
index 2873307e07..087e546f22 100644
--- a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/OpenSshConfig.java
+++ b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/ssh/jsch/OpenSshConfig.java
@@ -353,7 +353,6 @@ public class OpenSshConfig implements ConfigRepository {
return host.getConfig();
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "OpenSshConfig [configFile=" + configFile + ']'; //$NON-NLS-1$
diff --git a/org.eclipse.jgit.test/BUILD b/org.eclipse.jgit.test/BUILD
index 5066808f6a..bb15de0b2d 100644
--- a/org.eclipse.jgit.test/BUILD
+++ b/org.eclipse.jgit.test/BUILD
@@ -29,6 +29,7 @@ HELPERS = glob(
"transport/ObjectIdMatcher.java",
"transport/RequestValidatorTestCase.java",
"transport/SpiTransport.java",
+ "transport/InMemoryPack.java",
"treewalk/filter/AlwaysCloneTreeFilter.java",
"test/resources/SampleDataRepositoryTestCase.java",
"util/CPUTimeStopWatch.java",
@@ -76,6 +77,7 @@ java_library(
resources = DATA,
deps = [
"//lib:assertj-core",
+ "//lib:commons-codec",
"//lib:junit",
"//lib:mockito",
"//lib:slf4j-simple",
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index 06be2aecd8..f9ace51870 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -3,11 +3,14 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.test
Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)",
+ org.hamcrest.library;bundle-version="[1.3.0,2.0.0)"
Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
+ net.bytebuddy.agent;version="[1.9.0,2.0.0)",
net.bytebuddy.dynamic.loading;version="[1.9.0,2.0.0)",
org.apache.commons.compress.archivers;version="[1.15.0,2.0)",
org.apache.commons.compress.archivers.tar;version="[1.15.0,2.0)",
@@ -16,76 +19,74 @@ Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
org.apache.commons.compress.compressors.gzip;version="[1.15.0,2.0)",
org.apache.commons.compress.compressors.xz;version="[1.15.0,2.0)",
org.assertj.core.api;version="[3.14.0,4.0.0)",
- org.eclipse.jgit.annotations;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.api.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.archive;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.attributes;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.awtui;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.blame;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.diff;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.dircache;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.events;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.fnmatch;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.gitrepo;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.hooks;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.ignore;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.ignore.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.diff;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.fsck;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.commitgraph;version="6.6.2",
- org.eclipse.jgit.internal.storage.dfs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.io;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.memory;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.transport.connectivity;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.transport.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.transport.parser;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.junit.time;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lfs;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.logging;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.merge;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.notes;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.patch;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.pgm;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.pgm.internal;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revplot;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk.filter;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.file;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.storage.pack;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.submodule;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.http;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport.resolver;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.io;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util.sha1;version="[6.6.2,6.7.0)",
- org.hamcrest;version="[1.1.0,3.0.0)",
- org.hamcrest.collection;version="[1.1.0,3.0.0)",
+ org.eclipse.jgit.annotations;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.api.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.archive;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.attributes;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.awtui;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.blame;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.diff;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.dircache;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.events;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.fnmatch;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.gitrepo;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.hooks;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.ignore;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.ignore.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.diff;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.fsck;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.commitgraph;version="6.7.1",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.io;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.memory;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.transport.connectivity;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.transport.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.junit.time;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lfs;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.logging;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.merge;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.notes;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.patch;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.pgm;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.pgm.internal;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revplot;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk.filter;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.file;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.storage.pack;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.submodule;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.http;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.io;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util.sha1;version="[6.7.1,6.8.0)",
org.junit;version="[4.13,5.0.0)",
org.junit.experimental.theories;version="[4.13,5.0.0)",
org.junit.function;version="[4.13.0,5.0.0)",
org.junit.rules;version="[4.13,5.0.0)",
org.junit.runner;version="[4.13,5.0.0)",
org.junit.runners;version="[4.13,5.0.0)",
- org.mockito;version="[4.8.0,5.0.0)",
- org.mockito.invocation;version="[4.8.0,5.0.0)",
- org.mockito.junit;version="[4.8.0,5.0.0)",
- org.mockito.stubbing;version="[4.8.0,5.0.0)",
+ org.mockito;version="[5.4.0,6.0.0)",
+ org.mockito.invocation;version="[5.4.0,6.0.0)",
+ org.mockito.junit;version="[5.4.0,6.0.0)",
+ org.mockito.stubbing;version="[5.4.0,6.0.0)",
org.objenesis;version="[3.3.0,4.0.0)",
org.slf4j;version="[1.7.0,2.0.0)",
org.tukaani.xz
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index 2e64ccc857..490f089509 100644
--- a/org.eclipse.jgit.test/pom.xml
+++ b/org.eclipse.jgit.test/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.test</artifactId>
@@ -73,7 +73,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>4.8.1</version>
+ <version>5.5.0</version>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.corrupt.rev b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.corrupt.rev
new file mode 100644
index 0000000000..74283a2f9a
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.corrupt.rev
Binary files differ
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.rev b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.rev
new file mode 100644
index 0000000000..6ac7d65f67
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.rev
Binary files differ
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ArchiveCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ArchiveCommandTest.java
index 411eab3e7e..3a4ea8e733 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ArchiveCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ArchiveCommandTest.java
@@ -254,7 +254,7 @@ public class ArchiveCommandTest extends RepositoryTestCase {
}
}
- @SuppressWarnings({ "serial", "boxing" })
+ @SuppressWarnings({ "boxing" })
private void archiveHeadAllFilesWithCompression(String fmt) throws Exception {
try (Git git = new Git(db)) {
createLargeTestContent(git);
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java
index ff5f8b76cc..70e990dedf 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java
@@ -941,7 +941,7 @@ public class PushCommandTest extends RepositoryTestCase {
}
/**
- * Check that branch.<name>.pushRemote overrides anything else.
+ * Check that branch.&lt;name&gt;.pushRemote overrides anything else.
*
* @throws Exception
*/
@@ -980,7 +980,7 @@ public class PushCommandTest extends RepositoryTestCase {
}
/**
- * Check that remote.pushDefault overrides branch.<name>.remote
+ * Check that remote.pushDefault overrides branch.&lt;name&gt;.remote
*
* @throws Exception
*/
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java
index 20958a812c..c9a0b0b6e5 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java
@@ -11,12 +11,16 @@ package org.eclipse.jgit.gitrepo;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
+import java.io.File;
import java.io.IOException;
import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.StandardOpenOption;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
@@ -152,4 +156,33 @@ public class ManifestParserTest {
testNormalize("", "");
testNormalize("a/b", "a/b");
}
+
+ @Test
+ public void testXXE() throws Exception {
+ File externalEntity = File.createTempFile("injected", "xml");
+ externalEntity.deleteOnExit();
+ Files.write(externalEntity.toPath(),
+ "<evil>injected xml</evil>"
+ .getBytes(UTF_8),
+ StandardOpenOption.WRITE);
+ String baseUrl = "https://git.google.com/";
+ StringBuilder xmlContent = new StringBuilder();
+ xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
+ .append("<!DOCTYPE booo [ <!ENTITY foobar SYSTEM \"")
+ .append(externalEntity.getPath()).append("\"> ]>\n")
+ .append("<manifest>")
+ .append("<remote name=\"remote1\" fetch=\".\" />")
+ .append("<default revision=\"master\" remote=\"remote1\" />")
+ .append("&foobar;")
+ .append("<project path=\"foo\" name=\"foo\" groups=\"a,test\" />")
+ .append("</manifest>");
+
+ IOException e = assertThrows(IOException.class,
+ () -> new ManifestParser(null, null, "master", baseUrl, null,
+ null)
+ .read(new ByteArrayInputStream(
+ xmlContent.toString().getBytes(UTF_8))));
+ assertTrue(e.getCause().getMessage().contains("DOCTYPE"));
+ }
+
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreNodeTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreNodeTest.java
index 05a953e081..ab08c99796 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreNodeTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreNodeTest.java
@@ -20,14 +20,18 @@ import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
+import org.eclipse.jgit.junit.MockSystemReader;
import org.eclipse.jgit.junit.RepositoryTestCase;
import org.eclipse.jgit.lib.FileMode;
import org.eclipse.jgit.treewalk.FileTreeIterator;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.treewalk.WorkingTreeIterator;
+import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
import org.eclipse.jgit.util.SystemReader;
import org.junit.After;
@@ -698,6 +702,110 @@ public class IgnoreNodeTest extends RepositoryTestCase {
}
@Test
+ public void testUserGitIgnoreFound() throws IOException {
+ File homeDir = FS.DETECTED.userHome();
+ Path userIgnore = homeDir.toPath().resolve(".config").resolve("git")
+ .resolve("ignore");
+ Files.createDirectories(userIgnore.getParent());
+ Files.writeString(userIgnore, "x");
+ try {
+ writeTrashFile(".foo", "");
+ writeTrashFile("a/x/file", "");
+ writeTrashFile("b/x", "");
+ writeTrashFile("x/file", "");
+
+ beginWalk();
+ assertEntry(F, tracked, ".foo");
+ assertEntry(D, tracked, "a");
+ assertEntry(D, ignored, "a/x");
+ assertEntry(F, ignored, "a/x/file");
+ assertEntry(D, tracked, "b");
+ assertEntry(F, ignored, "b/x");
+ assertEntry(D, ignored, "x");
+ assertEntry(F, ignored, "x/file");
+ endWalk();
+ } finally {
+ Files.deleteIfExists(userIgnore);
+ }
+ }
+
+ @Test
+ public void testXdgIgnoreFound() throws IOException {
+ File tmp = getTemporaryDirectory();
+ Path xdg = tmp.toPath().resolve("xdg");
+ Path userIgnore = xdg.resolve("git").resolve("ignore");
+ Files.createDirectories(userIgnore.getParent());
+ Files.writeString(userIgnore, "x");
+ SystemReader system = SystemReader.getInstance();
+ assertTrue(system instanceof MockSystemReader);
+ ((MockSystemReader) system).setProperty("XDG_CONFIG_HOME",
+ xdg.toAbsolutePath().toString());
+ // Also create the one in the home directory -- it should not be active
+ File homeDir = FS.DETECTED.userHome();
+ Path userIgnore2 = homeDir.toPath().resolve(".config").resolve("git")
+ .resolve("ignore");
+ Files.createDirectories(userIgnore2.getParent());
+ Files.writeString(userIgnore2, "a");
+ try {
+ writeTrashFile(".foo", "");
+ writeTrashFile("a/x/file", "");
+ writeTrashFile("b/x", "");
+ writeTrashFile("x/file", "");
+
+ beginWalk();
+ assertEntry(F, tracked, ".foo");
+ assertEntry(D, tracked, "a");
+ assertEntry(D, ignored, "a/x");
+ assertEntry(F, ignored, "a/x/file");
+ assertEntry(D, tracked, "b");
+ assertEntry(F, ignored, "b/x");
+ assertEntry(D, ignored, "x");
+ assertEntry(F, ignored, "x/file");
+ endWalk();
+ } finally {
+ ((MockSystemReader) system).setProperty("XDG_CONFIG_HOME", null);
+ Files.deleteIfExists(userIgnore2);
+ }
+ }
+
+ @Test
+ public void testXdgWrong() throws IOException {
+ File tmp = getTemporaryDirectory();
+ Path xdg = tmp.toPath().resolve("xdg");
+ SystemReader system = SystemReader.getInstance();
+ assertTrue(system instanceof MockSystemReader);
+ // Valid value, but the directory doesn't exist
+ ((MockSystemReader) system).setProperty("XDG_CONFIG_HOME",
+ xdg.toAbsolutePath().toString());
+ // Also create the one in the home directory -- it should not be active
+ File homeDir = FS.DETECTED.userHome();
+ Path userIgnore2 = homeDir.toPath().resolve(".config").resolve("git")
+ .resolve("ignore");
+ Files.createDirectories(userIgnore2.getParent());
+ Files.writeString(userIgnore2, "x");
+ try {
+ writeTrashFile(".foo", "");
+ writeTrashFile("a/x/file", "");
+ writeTrashFile("b/x", "");
+ writeTrashFile("x/file", "");
+
+ beginWalk();
+ assertEntry(F, tracked, ".foo");
+ assertEntry(D, tracked, "a");
+ assertEntry(D, tracked, "a/x");
+ assertEntry(F, tracked, "a/x/file");
+ assertEntry(D, tracked, "b");
+ assertEntry(F, tracked, "b/x");
+ assertEntry(D, tracked, "x");
+ assertEntry(F, tracked, "x/file");
+ endWalk();
+ } finally {
+ ((MockSystemReader) system).setProperty("XDG_CONFIG_HOME", null);
+ Files.deleteIfExists(userIgnore2);
+ }
+ }
+
+ @Test
public void testToString() throws Exception {
assertEquals(Arrays.asList("").toString(), new IgnoreNode().toString());
assertEquals(Arrays.asList("hello").toString(),
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ObjectReachabilityTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ObjectReachabilityTestCase.java
index 37ff40bdf7..0e73588c66 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ObjectReachabilityTestCase.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ObjectReachabilityTestCase.java
@@ -51,7 +51,6 @@ public abstract class ObjectReachabilityTestCase
}
}
- /** {@inheritDoc} */
@Override
@Before
public void setUp() throws Exception {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ReachabilityCheckerTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ReachabilityCheckerTestCase.java
index 7679c11098..eeb13cc8b9 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ReachabilityCheckerTestCase.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/revwalk/ReachabilityCheckerTestCase.java
@@ -32,7 +32,6 @@ public abstract class ReachabilityCheckerTestCase
TestRepository<FileRepository> repo;
- /** {@inheritDoc} */
@Override
@Before
public void setUp() throws Exception {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphTest.java
index 97976564d8..4d05360252 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphTest.java
@@ -10,24 +10,31 @@
package org.eclipse.jgit.internal.storage.commitgraph;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static org.eclipse.jgit.lib.Constants.COMMIT_GENERATION_UNKNOWN;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.junit.RepositoryTestCase;
import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.NullProgressMonitor;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.junit.Before;
import org.junit.Test;
@@ -45,6 +52,7 @@ public class CommitGraphTest extends RepositoryTestCase {
public void setUp() throws Exception {
super.setUp();
tr = new TestRepository<>(db, new RevWalk(db), mockSystemReader);
+ mockSystemReader.setJGitConfig(new MockConfig());
}
@Test
@@ -196,11 +204,32 @@ public class CommitGraphTest extends RepositoryTestCase {
assertEquals(getGenerationNumber(c8), 5);
}
+ @Test
+ public void testGraphComputeChangedPaths() throws Exception {
+ RevCommit a = tr.commit(tr.tree(tr.file("d/f", tr.blob("a"))));
+ RevCommit b = tr.commit(tr.tree(tr.file("d/f", tr.blob("a"))), a);
+ RevCommit c = tr.commit(tr.tree(tr.file("d/f", tr.blob("b"))), b);
+
+ writeAndReadCommitGraph(Collections.singleton(c));
+ ChangedPathFilter acpf = commitGraph
+ .getChangedPathFilter(commitGraph.findGraphPosition(a));
+ assertTrue(acpf.maybeContains("d".getBytes(UTF_8)));
+ assertTrue(acpf.maybeContains("d/f".getBytes(UTF_8)));
+ ChangedPathFilter bcpf = commitGraph
+ .getChangedPathFilter(commitGraph.findGraphPosition(b));
+ assertFalse(bcpf.maybeContains("d".getBytes(UTF_8)));
+ assertFalse(bcpf.maybeContains("d/f".getBytes(UTF_8)));
+ ChangedPathFilter ccpf = commitGraph
+ .getChangedPathFilter(commitGraph.findGraphPosition(c));
+ assertTrue(ccpf.maybeContains("d".getBytes(UTF_8)));
+ assertTrue(ccpf.maybeContains("d/f".getBytes(UTF_8)));
+ }
+
void writeAndReadCommitGraph(Set<ObjectId> wants) throws Exception {
NullProgressMonitor m = NullProgressMonitor.INSTANCE;
try (RevWalk walk = new RevWalk(db)) {
CommitGraphWriter writer = new CommitGraphWriter(
- GraphCommits.fromWalk(m, wants, walk));
+ GraphCommits.fromWalk(m, wants, walk), true);
ByteArrayOutputStream os = new ByteArrayOutputStream();
writer.write(m, os);
InputStream inputStream = new ByteArrayInputStream(
@@ -252,4 +281,41 @@ public class CommitGraphTest extends RepositoryTestCase {
RevCommit commit(RevCommit... parents) throws Exception {
return tr.commit(parents);
}
+
+ private static final class MockConfig extends FileBasedConfig {
+ private MockConfig() {
+ super(null, null);
+ }
+
+ @Override
+ public void load() throws IOException, ConfigInvalidException {
+ // Do nothing
+ }
+
+ @Override
+ public void save() throws IOException {
+ // Do nothing
+ }
+
+ @Override
+ public boolean isOutdated() {
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "MockConfig";
+ }
+
+ @Override
+ public boolean getBoolean(final String section, final String name,
+ final boolean defaultValue) {
+ if (section.equals(ConfigConstants.CONFIG_COMMIT_GRAPH_SECTION)
+ && name.equals(
+ ConfigConstants.CONFIG_KEY_READ_CHANGED_PATHS)) {
+ return true;
+ }
+ return defaultValue;
+ }
+ }
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriterTest.java
index 6c5e5e5605..5040a3b6ad 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriterTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriterTest.java
@@ -10,21 +10,31 @@
package org.eclipse.jgit.internal.storage.commitgraph;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
+import org.eclipse.jgit.dircache.DirCacheEntry;
+import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.internal.storage.file.FileRepository;
+import org.eclipse.jgit.internal.storage.file.GC;
import org.eclipse.jgit.junit.RepositoryTestCase;
import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.NullProgressMonitor;
import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.revwalk.RevBlob;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.util.NB;
import org.junit.Before;
import org.junit.Test;
@@ -46,6 +56,7 @@ public class CommitGraphWriterTest extends RepositoryTestCase {
os = new ByteArrayOutputStream();
tr = new TestRepository<>(db, new RevWalk(db), mockSystemReader);
walk = new RevWalk(db);
+ mockSystemReader.setJGitConfig(new MockConfig());
}
@Test
@@ -68,7 +79,7 @@ public class CommitGraphWriterTest extends RepositoryTestCase {
Set<ObjectId> wants = Collections.singleton(tip);
NullProgressMonitor m = NullProgressMonitor.INSTANCE;
GraphCommits graphCommits = GraphCommits.fromWalk(m, wants, walk);
- writer = new CommitGraphWriter(graphCommits);
+ writer = new CommitGraphWriter(graphCommits, true);
writer.write(m, os);
assertEquals(5, graphCommits.size());
@@ -76,11 +87,20 @@ public class CommitGraphWriterTest extends RepositoryTestCase {
assertTrue(data.length > 0);
byte[] headers = new byte[8];
System.arraycopy(data, 0, headers, 0, 8);
- assertArrayEquals(new byte[] {'C', 'G', 'P', 'H', 1, 1, 4, 0}, headers);
- assertEquals(CommitGraphConstants.CHUNK_ID_OID_FANOUT, NB.decodeInt32(data, 8));
- assertEquals(CommitGraphConstants.CHUNK_ID_OID_LOOKUP, NB.decodeInt32(data, 20));
- assertEquals(CommitGraphConstants.CHUNK_ID_COMMIT_DATA, NB.decodeInt32(data, 32));
- assertEquals(CommitGraphConstants.CHUNK_ID_EXTRA_EDGE_LIST, NB.decodeInt32(data, 44));
+ assertArrayEquals(new byte[] { 'C', 'G', 'P', 'H', 1, 1, 6, 0 },
+ headers);
+ assertEquals(CommitGraphConstants.CHUNK_ID_OID_FANOUT,
+ NB.decodeInt32(data, 8));
+ assertEquals(CommitGraphConstants.CHUNK_ID_OID_LOOKUP,
+ NB.decodeInt32(data, 20));
+ assertEquals(CommitGraphConstants.CHUNK_ID_COMMIT_DATA,
+ NB.decodeInt32(data, 32));
+ assertEquals(CommitGraphConstants.CHUNK_ID_EXTRA_EDGE_LIST,
+ NB.decodeInt32(data, 44));
+ assertEquals(CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_INDEX,
+ NB.decodeInt32(data, 56));
+ assertEquals(CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_DATA,
+ NB.decodeInt32(data, 68));
}
@Test
@@ -93,7 +113,7 @@ public class CommitGraphWriterTest extends RepositoryTestCase {
Set<ObjectId> wants = Collections.singleton(tip);
NullProgressMonitor m = NullProgressMonitor.INSTANCE;
GraphCommits graphCommits = GraphCommits.fromWalk(m, wants, walk);
- writer = new CommitGraphWriter(graphCommits);
+ writer = new CommitGraphWriter(graphCommits, true);
writer.write(m, os);
assertEquals(4, graphCommits.size());
@@ -101,13 +121,281 @@ public class CommitGraphWriterTest extends RepositoryTestCase {
assertTrue(data.length > 0);
byte[] headers = new byte[8];
System.arraycopy(data, 0, headers, 0, 8);
- assertArrayEquals(new byte[] {'C', 'G', 'P', 'H', 1, 1, 3, 0}, headers);
- assertEquals(CommitGraphConstants.CHUNK_ID_OID_FANOUT, NB.decodeInt32(data, 8));
- assertEquals(CommitGraphConstants.CHUNK_ID_OID_LOOKUP, NB.decodeInt32(data, 20));
- assertEquals(CommitGraphConstants.CHUNK_ID_COMMIT_DATA, NB.decodeInt32(data, 32));
+ assertArrayEquals(new byte[] { 'C', 'G', 'P', 'H', 1, 1, 5, 0 },
+ headers);
+ assertEquals(CommitGraphConstants.CHUNK_ID_OID_FANOUT,
+ NB.decodeInt32(data, 8));
+ assertEquals(CommitGraphConstants.CHUNK_ID_OID_LOOKUP,
+ NB.decodeInt32(data, 20));
+ assertEquals(CommitGraphConstants.CHUNK_ID_COMMIT_DATA,
+ NB.decodeInt32(data, 32));
+ assertEquals(CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_INDEX,
+ NB.decodeInt32(data, 44));
+ assertEquals(CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_DATA,
+ NB.decodeInt32(data, 56));
+ }
+
+ static HashSet<String> changedPathStrings(byte[] data) {
+ int oidf_offset = -1;
+ int bidx_offset = -1;
+ int bdat_offset = -1;
+ for (int i = 8; i < data.length - 4; i += 12) {
+ switch (NB.decodeInt32(data, i)) {
+ case CommitGraphConstants.CHUNK_ID_OID_FANOUT:
+ oidf_offset = (int) NB.decodeInt64(data, i + 4);
+ break;
+ case CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_INDEX:
+ bidx_offset = (int) NB.decodeInt64(data, i + 4);
+ break;
+ case CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_DATA:
+ bdat_offset = (int) NB.decodeInt64(data, i + 4);
+ break;
+ }
+ }
+ assertTrue(oidf_offset > 0);
+ assertTrue(bidx_offset > 0);
+ assertTrue(bdat_offset > 0);
+ bdat_offset += 12; // skip version, hash count, bits per entry
+ int commit_count = NB.decodeInt32(data, oidf_offset + 255 * 4);
+ int[] changed_path_length_cumuls = new int[commit_count];
+ for (int i = 0; i < commit_count; i++) {
+ changed_path_length_cumuls[i] = NB.decodeInt32(data,
+ bidx_offset + i * 4);
+ }
+ HashSet<String> changed_paths = new HashSet<>();
+ for (int i = 0; i < commit_count; i++) {
+ int prior_cumul = i == 0 ? 0 : changed_path_length_cumuls[i - 1];
+ String changed_path = "";
+ for (int j = prior_cumul; j < changed_path_length_cumuls[i]; j++) {
+ changed_path += data[bdat_offset + j] + ",";
+ }
+ changed_paths.add(changed_path);
+ }
+ return changed_paths;
+ }
+
+ /**
+ * Expected value generated using the following:
+ *
+ * <pre>
+ * # apply into git-repo: https://lore.kernel.org/git/cover.1684790529.git.jonathantanmy@google.com/
+ * (cd git-repo; make)
+ * git-repo/bin-wrappers/git init tested
+ * (cd tested; touch foo.txt; mkdir -p onedir/twodir; touch onedir/twodir/bar.txt)
+ * git-repo/bin-wrappers/git -C tested add foo.txt onedir
+ * git-repo/bin-wrappers/git -C tested commit -m first_commit
+ * (cd tested; mv foo.txt foo-new.txt; mv onedir/twodir/bar.txt onedir/twodir/bar-new.txt)
+ * git-repo/bin-wrappers/git -C tested add foo-new.txt onedir
+ * git-repo/bin-wrappers/git -C tested commit -a -m second_commit
+ * git-repo/bin-wrappers/git -C tested maintenance run
+ * git-repo/bin-wrappers/git -C tested commit-graph write --changed-paths
+ * (cd tested; $JGIT debug-read-changed-path-filter .git/objects/info/commit-graph)
+ * </pre>
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testChangedPathFilterRootAndNested() throws Exception {
+ RevBlob emptyBlob = tr.blob(new byte[] {});
+ RevCommit root = tr.commit(tr.tree(tr.file("foo.txt", emptyBlob),
+ tr.file("onedir/twodir/bar.txt", emptyBlob)));
+ RevCommit tip = tr.commit(tr.tree(tr.file("foo-new.txt", emptyBlob),
+ tr.file("onedir/twodir/bar-new.txt", emptyBlob)), root);
+
+ Set<ObjectId> wants = Collections.singleton(tip);
+ NullProgressMonitor m = NullProgressMonitor.INSTANCE;
+ GraphCommits graphCommits = GraphCommits.fromWalk(m, wants, walk);
+ writer = new CommitGraphWriter(graphCommits, true);
+ writer.write(m, os);
+
+ HashSet<String> changedPaths = changedPathStrings(os.toByteArray());
+ assertThat(changedPaths, containsInAnyOrder(
+ "109,-33,2,60,20,79,-11,116,",
+ "119,69,63,-8,0,"));
+ }
+
+ /**
+ * Expected value generated using the following:
+ *
+ * <pre>
+ * git -C git-repo checkout todo get version number when it is merged
+ * (cd git-repo; make)
+ * git-repo/bin-wrappers/git init tested
+ * (cd tested; mkdir -p onedir/twodir; touch onedir/twodir/a.txt; touch onedir/twodir/b.txt)
+ * git-repo/bin-wrappers/git -C tested add onedir
+ * git-repo/bin-wrappers/git -C tested commit -m first_commit
+ * (cd tested; mv onedir/twodir/a.txt onedir/twodir/c.txt; mv onedir/twodir/b.txt onedir/twodir/d.txt)
+ * git-repo/bin-wrappers/git -C tested add onedir
+ * git-repo/bin-wrappers/git -C tested commit -a -m second_commit
+ * git-repo/bin-wrappers/git -C tested maintenance run
+ * git-repo/bin-wrappers/git -C tested commit-graph write --changed-paths
+ * (cd tested; $JGIT debug-read-changed-path-filter .git/objects/info/commit-graph)
+ * </pre>
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testChangedPathFilterOverlappingNested() throws Exception {
+ RevBlob emptyBlob = tr.blob(new byte[] {});
+ RevCommit root = tr
+ .commit(tr.tree(tr.file("onedir/twodir/a.txt", emptyBlob),
+ tr.file("onedir/twodir/b.txt", emptyBlob)));
+ RevCommit tip = tr
+ .commit(tr.tree(tr.file("onedir/twodir/c.txt", emptyBlob),
+ tr.file("onedir/twodir/d.txt", emptyBlob)), root);
+
+ Set<ObjectId> wants = Collections.singleton(tip);
+ NullProgressMonitor m = NullProgressMonitor.INSTANCE;
+ GraphCommits graphCommits = GraphCommits.fromWalk(m, wants, walk);
+ writer = new CommitGraphWriter(graphCommits, true);
+ writer.write(m, os);
+
+ HashSet<String> changedPaths = changedPathStrings(os.toByteArray());
+ assertThat(changedPaths, containsInAnyOrder("61,30,23,-24,1,",
+ "-58,-51,-46,60,29,-121,113,90,"));
+ }
+
+ /**
+ * Expected value generated using the following:
+ *
+ * <pre>
+ * git -C git-repo checkout todo get version number when it is merged
+ * (cd git-repo; make)
+ * git-repo/bin-wrappers/git init tested
+ * (cd tested; touch 你好)
+ * git-repo/bin-wrappers/git -C tested add 你好
+ * git-repo/bin-wrappers/git -C tested commit -m first_commit
+ * git-repo/bin-wrappers/git -C tested maintenance run
+ * git-repo/bin-wrappers/git -C tested commit-graph write --changed-paths
+ * (cd tested; $JGIT debug-read-changed-path-filter .git/objects/info/commit-graph)
+ * </pre>
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testChangedPathFilterHighBit() throws Exception {
+ RevBlob emptyBlob = tr.blob(new byte[] {});
+ // tr.file encodes using UTF-8
+ RevCommit root = tr.commit(tr.tree(tr.file("你好", emptyBlob)));
+
+ Set<ObjectId> wants = Collections.singleton(root);
+ NullProgressMonitor m = NullProgressMonitor.INSTANCE;
+ GraphCommits graphCommits = GraphCommits.fromWalk(m, wants, walk);
+ writer = new CommitGraphWriter(graphCommits, true);
+ writer.write(m, os);
+
+ HashSet<String> changedPaths = changedPathStrings(os.toByteArray());
+ assertThat(changedPaths, containsInAnyOrder("16,16,"));
+ }
+
+ @Test
+ public void testChangedPathFilterEmptyChange() throws Exception {
+ RevCommit root = commit();
+
+ Set<ObjectId> wants = Collections.singleton(root);
+ NullProgressMonitor m = NullProgressMonitor.INSTANCE;
+ GraphCommits graphCommits = GraphCommits.fromWalk(m, wants, walk);
+ writer = new CommitGraphWriter(graphCommits, true);
+ writer.write(m, os);
+
+ HashSet<String> changedPaths = changedPathStrings(os.toByteArray());
+ assertThat(changedPaths, containsInAnyOrder("0,"));
+ }
+
+ @Test
+ public void testChangedPathFilterManyChanges() throws Exception {
+ RevBlob emptyBlob = tr.blob(new byte[] {});
+ DirCacheEntry[] entries = new DirCacheEntry[513];
+ for (int i = 0; i < entries.length; i++) {
+ entries[i] = tr.file(i + ".txt", emptyBlob);
+ }
+
+ RevCommit root = tr.commit(tr.tree(entries));
+
+ Set<ObjectId> wants = Collections.singleton(root);
+ NullProgressMonitor m = NullProgressMonitor.INSTANCE;
+ GraphCommits graphCommits = GraphCommits.fromWalk(m, wants, walk);
+ writer = new CommitGraphWriter(graphCommits, true);
+ writer.write(m, os);
+
+ HashSet<String> changedPaths = changedPathStrings(os.toByteArray());
+ assertThat(changedPaths, containsInAnyOrder("-1,"));
+ }
+
+ @Test
+ public void testReuseBloomFilters() throws Exception {
+ RevBlob emptyBlob = tr.blob(new byte[] {});
+ RevCommit root = tr.commit(tr.tree(tr.file("foo.txt", emptyBlob),
+ tr.file("onedir/twodir/bar.txt", emptyBlob)));
+ tr.branch("master").update(root);
+
+ db.getConfig().setBoolean(ConfigConstants.CONFIG_CORE_SECTION, null,
+ ConfigConstants.CONFIG_COMMIT_GRAPH, true);
+ db.getConfig().setBoolean(ConfigConstants.CONFIG_GC_SECTION, null,
+ ConfigConstants.CONFIG_KEY_WRITE_COMMIT_GRAPH, true);
+ db.getConfig().setBoolean(ConfigConstants.CONFIG_GC_SECTION, null,
+ ConfigConstants.CONFIG_KEY_WRITE_CHANGED_PATHS, true);
+ GC gc = new GC(db);
+ gc.gc().get();
+
+ RevCommit tip = tr.commit(tr.tree(tr.file("foo-new.txt", emptyBlob),
+ tr.file("onedir/twodir/bar-new.txt", emptyBlob)), root);
+
+ Set<ObjectId> wants = Collections.singleton(tip);
+ NullProgressMonitor m = NullProgressMonitor.INSTANCE;
+ GraphCommits graphCommits = GraphCommits.fromWalk(m, wants, walk);
+ writer = new CommitGraphWriter(graphCommits, true);
+ CommitGraphWriter.Stats stats = writer.write(m, os);
+
+ assertEquals(1, stats.getChangedPathFiltersReused());
+ assertEquals(1, stats.getChangedPathFiltersComputed());
+
+ // Expected strings are the same as in
+ // #testChangedPathFilterRootAndNested
+ HashSet<String> changedPaths = changedPathStrings(os.toByteArray());
+ assertThat(changedPaths, containsInAnyOrder(
+ "109,-33,2,60,20,79,-11,116,",
+ "119,69,63,-8,0,"));
}
RevCommit commit(RevCommit... parents) throws Exception {
return tr.commit(parents);
}
-}
+
+ private static final class MockConfig extends FileBasedConfig {
+ private MockConfig() {
+ super(null, null);
+ }
+
+ @Override
+ public void load() throws IOException, ConfigInvalidException {
+ // Do nothing
+ }
+
+ @Override
+ public void save() throws IOException {
+ // Do nothing
+ }
+
+ @Override
+ public boolean isOutdated() {
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "MockConfig";
+ }
+
+ @Override
+ public boolean getBoolean(final String section, final String name,
+ final boolean defaultValue) {
+ if (section.equals(ConfigConstants.CONFIG_COMMIT_GRAPH_SECTION)
+ && name.equals(
+ ConfigConstants.CONFIG_KEY_READ_CHANGED_PATHS)) {
+ return true;
+ }
+ return defaultValue;
+ }
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java
index ab998951f3..05360dc052 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java
@@ -15,10 +15,12 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.internal.storage.commitgraph.CommitGraph;
+import org.eclipse.jgit.internal.storage.commitgraph.CommitGraphWriter;
import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
import org.eclipse.jgit.internal.storage.reftable.RefCursor;
import org.eclipse.jgit.internal.storage.reftable.ReftableConfig;
@@ -978,7 +980,7 @@ public class DfsGarbageCollectorTest {
}
@Test
- public void produceCommitGraphAllRefsIncludedFromDisk() throws Exception {
+ public void produceCommitGraphOnlyHeadsAndTags() throws Exception {
String tag = "refs/tags/tag1";
String head = "refs/heads/head1";
String nonHead = "refs/something/nonHead";
@@ -1000,19 +1002,20 @@ public class DfsGarbageCollectorTest {
CommitGraph cg = gcPack.getCommitGraph(reader);
assertNotNull(cg);
- assertTrue("all commits in commit graph", cg.getCommitCnt() == 3);
+ assertTrue("Only heads and tags reachable commits in commit graph",
+ cg.getCommitCnt() == 2);
// GC packed
assertTrue("tag referenced commit is in graph",
cg.findGraphPosition(rootCommitTagged) != -1);
assertTrue("head referenced commit is in graph",
cg.findGraphPosition(headTip) != -1);
- // GC_REST packed
- assertTrue("nonHead referenced commit is in graph",
- cg.findGraphPosition(nonHeadTip) != -1);
+ // GC_REST not in commit graph
+ assertEquals("nonHead referenced commit is NOT in graph",
+ -1, cg.findGraphPosition(nonHeadTip));
}
@Test
- public void produceCommitGraphAllRefsIncludedFromCache() throws Exception {
+ public void produceCommitGraphOnlyHeadsAndTagsIncludedFromCache() throws Exception {
String tag = "refs/tags/tag1";
String head = "refs/heads/head1";
String nonHead = "refs/something/nonHead";
@@ -1042,15 +1045,16 @@ public class DfsGarbageCollectorTest {
assertTrue("commit graph read time is recorded",
reader.stats.readCommitGraphMicros > 0);
- assertTrue("all commits in commit graph", cachedCG.getCommitCnt() == 3);
+ assertTrue("Only heads and tags reachable commits in commit graph",
+ cachedCG.getCommitCnt() == 2);
// GC packed
assertTrue("tag referenced commit is in graph",
cachedCG.findGraphPosition(rootCommitTagged) != -1);
assertTrue("head referenced commit is in graph",
cachedCG.findGraphPosition(headTip) != -1);
- // GC_REST packed
- assertTrue("nonHead referenced commit is in graph",
- cachedCG.findGraphPosition(nonHeadTip) != -1);
+ // GC_REST not in commit graph
+ assertEquals("nonHead referenced commit is not in graph",
+ -1, cachedCG.findGraphPosition(nonHeadTip));
}
@Test
@@ -1100,6 +1104,86 @@ public class DfsGarbageCollectorTest {
}
}
+ @Test
+ public void produceCommitGraphAndBloomFilter() throws Exception {
+ String head = "refs/heads/head1";
+
+ git.branch(head).commit().message("0").noParents().create();
+
+ gcWithCommitGraphAndBloomFilter();
+
+ assertEquals(1, odb.getPacks().length);
+ DfsPackFile pack = odb.getPacks()[0];
+ DfsPackDescription desc = pack.getPackDescription();
+ CommitGraphWriter.Stats stats = desc.getCommitGraphStats();
+ assertNotNull(stats);
+ assertEquals(1, stats.getChangedPathFiltersComputed());
+ }
+
+ @Test
+ public void objectSizeIdx_reachableBlob_bigEnough_indexed() throws Exception {
+ String master = "refs/heads/master";
+ RevCommit root = git.branch(master).commit().message("root").noParents()
+ .create();
+ RevBlob headsBlob = git.blob("twelve bytes");
+ git.branch(master).commit()
+ .message("commit on head")
+ .add("file.txt", headsBlob)
+ .parent(root)
+ .create();
+
+ gcWithObjectSizeIndex(10);
+
+ DfsReader reader = odb.newReader();
+ DfsPackFile gcPack = findFirstBySource(odb.getPacks(), GC);
+ assertTrue(gcPack.hasObjectSizeIndex(reader));
+ assertEquals(12, gcPack.getIndexedObjectSize(reader, headsBlob));
+ }
+
+ @Test
+ public void objectSizeIdx_reachableBlob_tooSmall_notIndexed() throws Exception {
+ String master = "refs/heads/master";
+ RevCommit root = git.branch(master).commit().message("root").noParents()
+ .create();
+ RevBlob tooSmallBlob = git.blob("small");
+ git.branch(master).commit()
+ .message("commit on head")
+ .add("small.txt", tooSmallBlob)
+ .parent(root)
+ .create();
+
+ gcWithObjectSizeIndex(10);
+
+ DfsReader reader = odb.newReader();
+ DfsPackFile gcPack = findFirstBySource(odb.getPacks(), GC);
+ assertTrue(gcPack.hasObjectSizeIndex(reader));
+ assertEquals(-1, gcPack.getIndexedObjectSize(reader, tooSmallBlob));
+ }
+
+ @Test
+ public void objectSizeIndex_unreachableGarbage_noIdx() throws Exception {
+ String master = "refs/heads/master";
+ RevCommit root = git.branch(master).commit().message("root").noParents()
+ .create();
+ git.branch(master).commit()
+ .message("commit on head")
+ .add("file.txt", git.blob("a blob"))
+ .parent(root)
+ .create();
+ git.update(master, root); // blob is unreachable
+ gcWithObjectSizeIndex(0);
+
+ DfsReader reader = odb.newReader();
+ DfsPackFile gcRestPack = findFirstBySource(odb.getPacks(), UNREACHABLE_GARBAGE);
+ assertFalse(gcRestPack.hasObjectSizeIndex(reader));
+ }
+
+ private static DfsPackFile findFirstBySource(DfsPackFile[] packs, PackSource source) {
+ return Arrays.stream(packs)
+ .filter(p -> p.getPackDescription().getPackSource() == source)
+ .findFirst().get();
+ }
+
private TestRepository<InMemoryRepository>.CommitBuilder commit() {
return git.commit();
}
@@ -1110,6 +1194,19 @@ public class DfsGarbageCollectorTest {
run(gc);
}
+ private void gcWithCommitGraphAndBloomFilter() throws IOException {
+ DfsGarbageCollector gc = new DfsGarbageCollector(repo);
+ gc.setWriteCommitGraph(true);
+ gc.setWriteBloomFilter(true);
+ run(gc);
+ }
+
+ private void gcWithObjectSizeIndex(int threshold) throws IOException {
+ DfsGarbageCollector gc = new DfsGarbageCollector(repo);
+ gc.getPackConfig().setMinBytesForObjSizeIndex(threshold);
+ run(gc);
+ }
+
private void gcNoTtl() throws IOException {
DfsGarbageCollector gc = new DfsGarbageCollector(repo);
gc.setGarbageTtl(0, TimeUnit.MILLISECONDS); // disable TTL
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java
index adf577b0f7..b84a0b00ae 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java
@@ -10,6 +10,8 @@
package org.eclipse.jgit.internal.storage.dfs;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_PACK_SECTION;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
@@ -29,11 +31,16 @@ import org.eclipse.jgit.internal.storage.pack.PackExt;
import org.eclipse.jgit.junit.JGitTestUtil;
import org.eclipse.jgit.junit.TestRng;
import org.eclipse.jgit.lib.AbbreviatedObjectId;
+import org.eclipse.jgit.lib.CommitBuilder;
import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.FileMode;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.ObjectLoader;
import org.eclipse.jgit.lib.ObjectReader;
+import org.eclipse.jgit.lib.PersonIdent;
+import org.eclipse.jgit.lib.TagBuilder;
+import org.eclipse.jgit.lib.TreeFormatter;
import org.eclipse.jgit.util.IO;
import org.eclipse.jgit.util.RawParseUtils;
import org.junit.Before;
@@ -240,6 +247,71 @@ public class DfsInserterTest {
}
}
+ @Test
+ public void testObjectSizePopulated() throws IOException {
+ // Blob
+ byte[] contents = Constants.encode("foo");
+
+ // Commit
+ PersonIdent person = new PersonIdent("Committer a", "jgit@eclipse.org");
+ CommitBuilder c = new CommitBuilder();
+ c.setAuthor(person);
+ c.setCommitter(person);
+ c.setTreeId(ObjectId
+ .fromString("45c4c6767a3945815371a7016532751dd558be40"));
+ c.setMessage("commit message");
+
+ // Tree
+ TreeFormatter treeBuilder = new TreeFormatter(2);
+ treeBuilder.append("filea", FileMode.REGULAR_FILE, ObjectId
+ .fromString("45c4c6767a3945815371a7016532751dd558be40"));
+ treeBuilder.append("fileb", FileMode.GITLINK, ObjectId
+ .fromString("1c458e25ca624bb8d4735bec1379a4a29ba786d0"));
+
+ // Tag
+ TagBuilder tagBuilder = new TagBuilder();
+ tagBuilder.setObjectId(
+ ObjectId.fromString("c97fe131649e80de55bd153e9a8d8629f7ca6932"),
+ Constants.OBJ_COMMIT);
+ tagBuilder.setTag("short name");
+
+ try (DfsInserter ins = (DfsInserter) db.newObjectInserter()) {
+ ObjectId aBlob = ins.insert(Constants.OBJ_BLOB, contents);
+ assertEquals(contents.length,
+ ins.objectMap.get(aBlob).getFullSize());
+
+ ObjectId aCommit = ins.insert(c);
+ assertEquals(174, ins.objectMap.get(aCommit).getFullSize());
+
+ ObjectId tree = ins.insert(treeBuilder);
+ assertEquals(66, ins.objectMap.get(tree).getFullSize());
+
+ ObjectId tag = ins.insert(tagBuilder);
+ assertEquals(76, ins.objectMap.get(tag).getFullSize());
+ }
+ }
+
+ @Test
+ public void testObjectSizeIndexOnInsert() throws IOException {
+ db.getConfig().setInt(CONFIG_PACK_SECTION, null,
+ CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX, 0);
+
+ byte[] contents = Constants.encode("foo");
+ ObjectId fooId;
+ try (ObjectInserter ins = db.newObjectInserter()) {
+ fooId = ins.insert(Constants.OBJ_BLOB, contents);
+ ins.flush();
+ }
+
+ DfsReader reader = db.getObjectDatabase().newReader();
+ assertEquals(1, db.getObjectDatabase().listPacks().size());
+ DfsPackFile insertPack = db.getObjectDatabase().getPacks()[0];
+ assertEquals(PackSource.INSERT,
+ insertPack.getPackDescription().getPackSource());
+ assertTrue(insertPack.hasObjectSizeIndex(reader));
+ assertEquals(contents.length, insertPack.getIndexedObjectSize(reader, fooId));
+ }
+
private static String readString(ObjectLoader loader) throws IOException {
return RawParseUtils.decode(readStream(loader));
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java
index ea5787309b..77e5b7cb14 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java
@@ -10,12 +10,20 @@
package org.eclipse.jgit.internal.storage.dfs;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_PACK_SECTION;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
import java.util.zip.Deflater;
+import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
+import org.eclipse.jgit.internal.storage.dfs.DfsReader.PackLoadListener;
import org.eclipse.jgit.internal.storage.pack.PackExt;
import org.eclipse.jgit.internal.storage.pack.PackOutputStream;
import org.eclipse.jgit.internal.storage.pack.PackWriter;
@@ -23,6 +31,7 @@ import org.eclipse.jgit.junit.JGitTestUtil;
import org.eclipse.jgit.junit.TestRng;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.NullProgressMonitor;
+import org.eclipse.jgit.lib.ObjectId;
import org.junit.Before;
import org.junit.Test;
@@ -100,7 +109,120 @@ public class DfsPackFileTest {
assertPackSize();
}
- private void setupPack(int bs, int ps) throws IOException {
+ @Test
+ public void testLoadObjectSizeIndex() throws IOException {
+ bypassCache = false;
+ clearCache = true;
+ setObjectSizeIndexMinBytes(0);
+ ObjectId blobId = setupPack(512, 800);
+
+ DfsReader reader = db.getObjectDatabase().newReader();
+ DfsPackFile pack = db.getObjectDatabase().getPacks()[0];
+ assertTrue(pack.hasObjectSizeIndex(reader));
+ assertEquals(800, pack.getIndexedObjectSize(reader, blobId));
+ }
+
+ @Test
+ public void testLoadObjectSizeIndex_noIndex() throws IOException {
+ bypassCache = false;
+ clearCache = true;
+ setObjectSizeIndexMinBytes(-1);
+ setupPack(512, 800);
+
+ DfsReader reader = db.getObjectDatabase().newReader();
+ DfsPackFile pack = db.getObjectDatabase().getPacks()[0];
+ assertFalse(pack.hasObjectSizeIndex(reader));
+ }
+
+ private static class TestPackLoadListener implements PackLoadListener {
+ final Map<PackExt, Integer> indexLoadCount = new HashMap<>();
+
+ int blockLoadCount;
+
+ @SuppressWarnings("boxing")
+ @Override
+ public void onIndexLoad(String packName, PackSource src, PackExt ext,
+ long size, Object loadedIdx) {
+ indexLoadCount.merge(ext, 1, Integer::sum);
+ }
+
+ @Override
+ public void onBlockLoad(String packName, PackSource src, PackExt ext, long position,
+ DfsBlockData dfsBlockData) {
+ blockLoadCount += 1;
+ }
+ }
+
+ @Test
+ public void testIndexLoadCallback_indexNotInCache() throws IOException {
+ bypassCache = false;
+ clearCache = true;
+ setObjectSizeIndexMinBytes(-1);
+ setupPack(512, 800);
+
+ TestPackLoadListener tal = new TestPackLoadListener();
+ DfsReader reader = db.getObjectDatabase().newReader();
+ reader.addPackLoadListener(tal);
+ DfsPackFile pack = db.getObjectDatabase().getPacks()[0];
+ pack.getPackIndex(reader);
+
+ assertEquals(1, tal.indexLoadCount.get(PackExt.INDEX).intValue());
+ }
+
+ @Test
+ public void testIndexLoadCallback_indexInCache() throws IOException {
+ bypassCache = false;
+ clearCache = false;
+ setObjectSizeIndexMinBytes(-1);
+ setupPack(512, 800);
+
+ TestPackLoadListener tal = new TestPackLoadListener();
+ DfsReader reader = db.getObjectDatabase().newReader();
+ reader.addPackLoadListener(tal);
+ DfsPackFile pack = db.getObjectDatabase().getPacks()[0];
+ pack.getPackIndex(reader);
+ pack.getPackIndex(reader);
+ pack.getPackIndex(reader);
+
+ assertEquals(1, tal.indexLoadCount.get(PackExt.INDEX).intValue());
+ }
+
+ @Test
+ public void testIndexLoadCallback_multipleReads() throws IOException {
+ bypassCache = false;
+ clearCache = true;
+ setObjectSizeIndexMinBytes(-1);
+ setupPack(512, 800);
+
+ TestPackLoadListener tal = new TestPackLoadListener();
+ DfsReader reader = db.getObjectDatabase().newReader();
+ reader.addPackLoadListener(tal);
+ DfsPackFile pack = db.getObjectDatabase().getPacks()[0];
+ pack.getPackIndex(reader);
+ pack.getPackIndex(reader);
+ pack.getPackIndex(reader);
+
+ assertEquals(1, tal.indexLoadCount.get(PackExt.INDEX).intValue());
+ }
+
+
+ @Test
+ public void testBlockLoadCallback_loadInCache() throws IOException {
+ bypassCache = false;
+ clearCache = true;
+ setObjectSizeIndexMinBytes(-1);
+ setupPack(512, 800);
+
+ TestPackLoadListener tal = new TestPackLoadListener();
+ DfsReader reader = db.getObjectDatabase().newReader();
+ reader.addPackLoadListener(tal);
+ DfsPackFile pack = db.getObjectDatabase().getPacks()[0];
+ ObjectId anObject = pack.getPackIndex(reader).getObjectId(0);
+ pack.get(reader, anObject).getBytes();
+ assertEquals(2, tal.blockLoadCount);
+ }
+
+ private ObjectId setupPack(int bs, int ps) throws IOException {
DfsBlockCacheConfig cfg = new DfsBlockCacheConfig().setBlockSize(bs)
.setBlockLimit(bs * 100).setStreamRatio(bypassCache ? 0F : 1F);
DfsBlockCache.reconfigure(cfg);
@@ -108,13 +230,14 @@ public class DfsPackFileTest {
byte[] data = new TestRng(JGitTestUtil.getName()).nextBytes(ps);
DfsInserter ins = (DfsInserter) db.newObjectInserter();
ins.setCompressionLevel(Deflater.NO_COMPRESSION);
- ins.insert(Constants.OBJ_BLOB, data);
+ ObjectId blobId = ins.insert(Constants.OBJ_BLOB, data);
ins.flush();
if (clearCache) {
DfsBlockCache.reconfigure(cfg);
db.getObjectDatabase().clearCache();
}
+ return blobId;
}
private void assertPackSize() throws IOException {
@@ -129,4 +252,9 @@ public class DfsPackFileTest {
assertEquals(packSize - (12 + 20), os.size());
}
}
+
+ private void setObjectSizeIndexMinBytes(int threshold) {
+ db.getConfig().setInt(CONFIG_PACK_SECTION, null,
+ CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX, threshold);
+ }
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackParserTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackParserTest.java
new file mode 100644
index 0000000000..845d5fcca1
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackParserTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2023, Google LLC and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.storage.dfs;
+
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_PACK_SECTION;
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackList;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.NullProgressMonitor;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
+import org.eclipse.jgit.transport.InMemoryPack;
+import org.eclipse.jgit.transport.PackParser;
+import org.junit.Before;
+import org.junit.Test;
+
+public class DfsPackParserTest {
+ private InMemoryRepository repo;
+
+
+ @Before
+ public void setUp() throws Exception {
+ DfsRepositoryDescription desc = new DfsRepositoryDescription("test");
+ repo = new InMemoryRepository(desc);
+ repo.getConfig().setInt(CONFIG_PACK_SECTION, null,
+ CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX, 0);
+ }
+
+ @Test
+ public void parse_writeObjSizeIdx() throws IOException {
+ InMemoryPack pack = new InMemoryPack();
+
+ // Sha1 of the blob "a"
+ ObjectId blobA = ObjectId
+ .fromString("2e65efe2a145dda7ee51d1741299f848e5bf752e");
+
+ pack.header(2);
+ pack.write((Constants.OBJ_BLOB) << 4 | 1);
+ pack.deflate(new byte[] { 'a' });
+
+ pack.write((Constants.OBJ_REF_DELTA) << 4 | 4);
+ pack.copyRaw(blobA);
+ pack.deflate(new byte[] { 0x1, 0x1, 0x1, 'b' });
+ pack.digest();
+
+ try (ObjectInserter ins = repo.newObjectInserter()) {
+ PackParser parser = ins.newPackParser(pack.toInputStream());
+ parser.parse(NullProgressMonitor.INSTANCE,
+ NullProgressMonitor.INSTANCE);
+ ins.flush();
+ }
+
+ DfsReader reader = repo.getObjectDatabase().newReader();
+ PackList packList = repo.getObjectDatabase().getPackList();
+ assertEquals(1, packList.packs.length);
+ assertEquals(1, packList.packs[0].getIndexedObjectSize(reader, blobA));
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsReaderTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsReaderTest.java
new file mode 100644
index 0000000000..eb8ceecd81
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsReaderTest.java
@@ -0,0 +1,262 @@
+/*
+ * Copyright (C) 2023, Google LLC. and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.storage.dfs;
+
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_PACK_SECTION;
+import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
+import org.eclipse.jgit.internal.storage.dfs.DfsReader.PackLoadListener;
+import org.eclipse.jgit.internal.storage.pack.PackExt;
+import org.eclipse.jgit.junit.JGitTestUtil;
+import org.eclipse.jgit.junit.TestRng;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
+import org.junit.Before;
+import org.junit.Test;
+
+public class DfsReaderTest {
+ InMemoryRepository db;
+
+ @Before
+ public void setUp() {
+ db = new InMemoryRepository(new DfsRepositoryDescription("test"));
+ }
+
+ @Test
+ public void isNotLargerThan_objAboveThreshold()
+ throws IOException {
+ setObjectSizeIndexMinBytes(100);
+ ObjectId obj = insertBlobWithSize(200);
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ assertFalse("limit < threshold < obj",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 50));
+ assertEquals(1, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(1, ctx.stats.objectSizeIndexHit);
+ assertEquals(0, ctx.stats.objectSizeIndexMiss);
+
+ assertFalse("limit = threshold < obj",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 100));
+ assertEquals(2, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(2, ctx.stats.objectSizeIndexHit);
+ assertEquals(0, ctx.stats.objectSizeIndexMiss);
+
+ assertFalse("threshold < limit < obj",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 150));
+ assertEquals(3, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(3, ctx.stats.objectSizeIndexHit);
+ assertEquals(0, ctx.stats.objectSizeIndexMiss);
+
+ assertTrue("threshold < limit = obj",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 200));
+ assertEquals(4, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(4, ctx.stats.objectSizeIndexHit);
+ assertEquals(0, ctx.stats.objectSizeIndexMiss);
+
+ assertTrue("threshold < obj < limit",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 250));
+ assertEquals(5, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(5, ctx.stats.objectSizeIndexHit);
+ assertEquals(0, ctx.stats.objectSizeIndexMiss);
+ }
+ }
+
+
+ @Test
+ public void isNotLargerThan_objBelowThreshold()
+ throws IOException {
+ setObjectSizeIndexMinBytes(100);
+ insertBlobWithSize(1000); // index not empty
+ ObjectId obj = insertBlobWithSize(50);
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ assertFalse("limit < obj < threshold",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 10));
+ assertEquals(1, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(0, ctx.stats.objectSizeIndexHit);
+ assertEquals(1, ctx.stats.objectSizeIndexMiss);
+
+ assertTrue("limit = obj < threshold",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 50));
+ assertEquals(2, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(0, ctx.stats.objectSizeIndexHit);
+ assertEquals(2, ctx.stats.objectSizeIndexMiss);
+
+ assertTrue("obj < limit < threshold",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 80));
+ assertEquals(3, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(0, ctx.stats.objectSizeIndexHit);
+ assertEquals(3, ctx.stats.objectSizeIndexMiss);
+
+ assertTrue("obj < limit = threshold",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 100));
+ assertEquals(4, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(0, ctx.stats.objectSizeIndexHit);
+ assertEquals(4, ctx.stats.objectSizeIndexMiss);
+
+ assertTrue("obj < threshold < limit",
+ ctx.isNotLargerThan(obj, OBJ_BLOB, 120));
+ assertEquals(5, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(0, ctx.stats.objectSizeIndexHit);
+ assertEquals(5, ctx.stats.objectSizeIndexMiss);
+ }
+ }
+
+ @Test
+ public void isNotLargerThan_emptyIdx() throws IOException {
+ setObjectSizeIndexMinBytes(100);
+ ObjectId obj = insertBlobWithSize(10);
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ assertFalse(ctx.isNotLargerThan(obj, OBJ_BLOB, 0));
+ assertTrue(ctx.isNotLargerThan(obj, OBJ_BLOB, 10));
+ assertTrue(ctx.isNotLargerThan(obj, OBJ_BLOB, 40));
+ assertTrue(ctx.isNotLargerThan(obj, OBJ_BLOB, 50));
+ assertTrue(ctx.isNotLargerThan(obj, OBJ_BLOB, 100));
+
+ assertEquals(5, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(5, ctx.stats.objectSizeIndexMiss);
+ assertEquals(0, ctx.stats.objectSizeIndexHit);
+ }
+ }
+
+ @Test
+ public void isNotLargerThan_noObjectSizeIndex() throws IOException {
+ setObjectSizeIndexMinBytes(-1);
+ ObjectId obj = insertBlobWithSize(10);
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ assertFalse(ctx.isNotLargerThan(obj, OBJ_BLOB, 0));
+ assertTrue(ctx.isNotLargerThan(obj, OBJ_BLOB, 10));
+ assertTrue(ctx.isNotLargerThan(obj, OBJ_BLOB, 40));
+ assertTrue(ctx.isNotLargerThan(obj, OBJ_BLOB, 50));
+ assertTrue(ctx.isNotLargerThan(obj, OBJ_BLOB, 100));
+
+ assertEquals(5, ctx.stats.isNotLargerThanCallCount);
+ assertEquals(0, ctx.stats.objectSizeIndexMiss);
+ assertEquals(0, ctx.stats.objectSizeIndexHit);
+ }
+ }
+
+ @Test
+ public void packLoadListener_noInvocations() throws IOException {
+ insertBlobWithSize(100);
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ CounterPackLoadListener listener = new CounterPackLoadListener();
+ ctx.addPackLoadListener(listener);
+ assertEquals(null, listener.callsPerExt.get(PackExt.INDEX));
+ }
+ }
+
+ @Test
+ public void packLoadListener_has_openIdx() throws IOException {
+ ObjectId obj = insertBlobWithSize(100);
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ CounterPackLoadListener listener = new CounterPackLoadListener();
+ ctx.addPackLoadListener(listener);
+ boolean has = ctx.has(obj);
+ assertTrue(has);
+ assertEquals(Integer.valueOf(1), listener.callsPerExt.get(PackExt.INDEX));
+ }
+ }
+
+ @Test
+ public void packLoadListener_notLargerThan_openMultipleIndices() throws IOException {
+ setObjectSizeIndexMinBytes(100);
+ ObjectId obj = insertBlobWithSize(200);
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ CounterPackLoadListener listener = new CounterPackLoadListener();
+ ctx.addPackLoadListener(listener);
+ boolean notLargerThan = ctx.isNotLargerThan(obj, OBJ_BLOB, 1000);
+ assertTrue(notLargerThan);
+ assertEquals(Integer.valueOf(1), listener.callsPerExt.get(PackExt.INDEX));
+ assertEquals(Integer.valueOf(1), listener.callsPerExt.get(PackExt.OBJECT_SIZE_INDEX));
+ }
+ }
+
+ @Test
+ public void packLoadListener_has_openMultipleIndices() throws IOException {
+ setObjectSizeIndexMinBytes(100);
+ insertBlobWithSize(200);
+ insertBlobWithSize(230);
+ insertBlobWithSize(100);
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ CounterPackLoadListener listener = new CounterPackLoadListener();
+ ctx.addPackLoadListener(listener);
+ ObjectId oid = ObjectId.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f129");
+ boolean has = ctx.has(oid);
+ assertFalse(has);
+ // Open 3 indices trying to find the pack
+ assertEquals(Integer.valueOf(3), listener.callsPerExt.get(PackExt.INDEX));
+ }
+ }
+
+
+ @Test
+ public void packLoadListener_has_repeatedCalls_openMultipleIndices() throws IOException {
+ // Two objects NOT in the repo
+ ObjectId oid = ObjectId.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f129");
+ ObjectId oid2 = ObjectId.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f130");
+
+ setObjectSizeIndexMinBytes(100);
+ insertBlobWithSize(200);
+ insertBlobWithSize(230);
+ insertBlobWithSize(100);
+ CounterPackLoadListener listener = new CounterPackLoadListener();
+ try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+ ctx.addPackLoadListener(listener);
+ boolean has = ctx.has(oid);
+ ctx.has(oid);
+ ctx.has(oid2);
+ assertFalse(has);
+ // The 3 indices were loaded only once each
+ assertEquals(Integer.valueOf(3), listener.callsPerExt.get(PackExt.INDEX));
+ }
+ }
+
+ private static class CounterPackLoadListener implements PackLoadListener {
+ final Map<PackExt, Integer> callsPerExt = new HashMap<>();
+
+ @SuppressWarnings("boxing")
+ @Override
+ public void onIndexLoad(String packName, PackSource src, PackExt ext, long size,
+ Object loadedIdx) {
+ callsPerExt.merge(ext, 1, Integer::sum);
+ }
+
+ @Override
+ public void onBlockLoad(String packName, PackSource src, PackExt ext,
+ long size, DfsBlockData dfsBlockData) {
+ // empty
+ }
+ }
+
+ private ObjectId insertBlobWithSize(int size)
+ throws IOException {
+ TestRng testRng = new TestRng(JGitTestUtil.getName());
+ ObjectId oid;
+ try (ObjectInserter ins = db.newObjectInserter()) {
+ oid = ins.insert(OBJ_BLOB,
+ testRng.nextBytes(size));
+ ins.flush();
+ }
+ return oid;
+ }
+
+ private void setObjectSizeIndexMinBytes(int threshold) {
+ db.getConfig().setInt(CONFIG_PACK_SECTION, null,
+ CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX, threshold);
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileRepositoryBuilderAfterOpenConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileRepositoryBuilderAfterOpenConfigTest.java
index 100bd32ad8..ed5a6990ac 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileRepositoryBuilderAfterOpenConfigTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileRepositoryBuilderAfterOpenConfigTest.java
@@ -18,7 +18,6 @@ import org.eclipse.jgit.util.SystemReader;
import org.junit.Before;
public class FileRepositoryBuilderAfterOpenConfigTest extends FileRepositoryBuilderTest {
- /** {@inheritDoc} */
@Before
@Override
public void setUp() throws Exception {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcReverseIndexTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcReverseIndexTest.java
new file mode 100644
index 0000000000..cbb0943426
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcReverseIndexTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2023, Google LLC and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.internal.storage.file;
+
+import static org.eclipse.jgit.internal.storage.pack.PackExt.REVERSE_INDEX;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Collections;
+
+import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.storage.pack.PackConfig;
+import org.eclipse.jgit.util.IO;
+import org.junit.Test;
+
+public class GcReverseIndexTest extends GcTestCase {
+
+ @Test
+ public void testWriteDefault() throws Exception {
+ PackConfig config = new PackConfig(repo);
+ gc.setPackConfig(config);
+
+ RevCommit tip = commitChain(10);
+ TestRepository.BranchBuilder bb = tr.branch("refs/heads/main");
+ bb.update(tip);
+
+ gc.gc().get();
+ assertRidxDoesNotExist(repo);
+ }
+
+ @Test
+ public void testWriteDisabled() throws Exception {
+ PackConfig config = new PackConfig(repo);
+ config.setWriteReverseIndex(false);
+ gc.setPackConfig(config);
+
+ RevCommit tip = commitChain(10);
+ TestRepository.BranchBuilder bb = tr.branch("refs/heads/main");
+ bb.update(tip);
+
+ gc.gc().get();
+ assertRidxDoesNotExist(repo);
+ }
+
+ @Test
+ public void testWriteEmptyRepo() throws Exception {
+ PackConfig config = new PackConfig(repo);
+ config.setWriteReverseIndex(true);
+ gc.setPackConfig(config);
+
+ gc.gc().get();
+ assertRidxDoesNotExist(repo);
+ }
+
+ @Test
+ public void testWriteShallowRepo() throws Exception {
+ PackConfig config = new PackConfig(repo);
+ config.setWriteReverseIndex(true);
+ gc.setPackConfig(config);
+
+ RevCommit tip = commitChain(2);
+ TestRepository.BranchBuilder bb = tr.branch("refs/heads/main");
+ bb.update(tip);
+ repo.getObjectDatabase().setShallowCommits(Collections.singleton(tip));
+
+ gc.gc().get();
+ assertValidRidxExists(repo);
+ }
+
+ @Test
+ public void testWriteEnabled() throws Exception {
+ PackConfig config = new PackConfig(repo);
+ config.setWriteReverseIndex(true);
+ gc.setPackConfig(config);
+
+ RevCommit tip = commitChain(10);
+ TestRepository.BranchBuilder bb = tr.branch("refs/heads/main");
+ bb.update(tip);
+
+ gc.gc().get();
+ assertValidRidxExists(repo);
+ }
+
+ private static void assertValidRidxExists(FileRepository repo)
+ throws Exception {
+ PackFile packFile = repo.getObjectDatabase().getPacks().iterator()
+ .next().getPackFile();
+ File file = packFile.create(REVERSE_INDEX);
+ assertTrue(file.exists());
+ try (InputStream os = new FileInputStream(file)) {
+ byte[] magic = new byte[4];
+ IO.readFully(os, magic, 0, 4);
+ assertArrayEquals(new byte[] { 'R', 'I', 'D', 'X' }, magic);
+ }
+ }
+
+ private static void assertRidxDoesNotExist(FileRepository repo) {
+ File packDir = repo.getObjectDatabase().getPackDirectory();
+ String[] reverseIndexFilenames = packDir.list(
+ (dir, name) -> name.endsWith(REVERSE_INDEX.getExtension()));
+ assertEquals(0, reverseIndexFilenames.length);
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexComputedTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexComputedTest.java
new file mode 100644
index 0000000000..ea5aaf5dd4
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexComputedTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2008, Imran M Yousuf <imyousuf@smartitengineering.com>
+ * Copyright (C) 2008, Marek Zawirski <marek.zawirski@gmail.com> and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.internal.storage.file;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.jgit.errors.CorruptObjectException;
+import org.eclipse.jgit.errors.PackMismatchException;
+import org.eclipse.jgit.internal.storage.file.PackIndex.MutableEntry;
+import org.eclipse.jgit.junit.JGitTestUtil;
+import org.eclipse.jgit.junit.RepositoryTestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PackReverseIndexComputedTest extends RepositoryTestCase {
+
+ private PackIndex idx;
+
+ private PackReverseIndex reverseIdx;
+
+ /**
+ * Set up tested class instance, test constructor by the way.
+ */
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ // index with both small (< 2^31) and big offsets
+ idx = PackIndex.open(JGitTestUtil.getTestResourceFile("pack-huge.idx"));
+ reverseIdx = PackReverseIndexFactory.computeFromIndex(idx);
+ }
+
+ /**
+ * Test findObject() for all index entries.
+ */
+ @Test
+ public void testFindObject() {
+ for (MutableEntry me : idx)
+ assertEquals(me.toObjectId(), reverseIdx.findObject(me.getOffset()));
+ }
+
+ /**
+ * Test findObject() with illegal argument.
+ */
+ @Test
+ public void testFindObjectWrongOffset() {
+ assertNull(reverseIdx.findObject(0));
+ }
+
+ /**
+ * Test findNextOffset() for all index entries.
+ *
+ * @throws CorruptObjectException
+ */
+ @Test
+ public void testFindNextOffset() throws CorruptObjectException {
+ long offset = findFirstOffset();
+ assertTrue(offset > 0);
+ for (int i = 0; i < idx.getObjectCount(); i++) {
+ long newOffset = reverseIdx.findNextOffset(offset, Long.MAX_VALUE);
+ assertTrue(newOffset > offset);
+ if (i == idx.getObjectCount() - 1)
+ assertEquals(newOffset, Long.MAX_VALUE);
+ else
+ assertEquals(newOffset, idx.findOffset(reverseIdx
+ .findObject(newOffset)));
+ offset = newOffset;
+ }
+ }
+
+ /**
+ * Test findNextOffset() with wrong illegal argument as offset.
+ */
+ @Test
+ public void testFindNextOffsetWrongOffset() {
+ try {
+ reverseIdx.findNextOffset(0, Long.MAX_VALUE);
+ fail("findNextOffset() should throw exception");
+ } catch (CorruptObjectException x) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testVerifyChecksum() throws PackMismatchException {
+ // ComputedReverseIndex doesn't have a file containing a checksum.
+ reverseIdx.verifyPackChecksum(null);
+ }
+
+ private long findFirstOffset() {
+ long min = Long.MAX_VALUE;
+ for (MutableEntry me : idx)
+ min = Math.min(min, me.getOffset());
+ return min;
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexTest.java
index 292e3e758a..f8fb4c15e7 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexTest.java
@@ -1,6 +1,5 @@
/*
- * Copyright (C) 2008, Imran M Yousuf <imyousuf@smartitengineering.com>
- * Copyright (C) 2008, Marek Zawirski <marek.zawirski@gmail.com> and others
+ * Copyright (C) 2022, Google LLC and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -8,95 +7,94 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
-
package org.eclipse.jgit.internal.storage.file;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import org.eclipse.jgit.errors.CorruptObjectException;
-import org.eclipse.jgit.internal.storage.file.PackIndex.MutableEntry;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.jgit.internal.storage.pack.PackExt;
import org.eclipse.jgit.junit.JGitTestUtil;
-import org.eclipse.jgit.junit.RepositoryTestCase;
-import org.junit.Before;
import org.junit.Test;
-public class PackReverseIndexTest extends RepositoryTestCase {
+public class PackReverseIndexTest {
- private PackIndex idx;
-
- private PackReverseIndex reverseIdx;
+ @Test
+ public void open_fallbackToComputed() throws IOException {
+ String noRevFilePrefix = "pack-3280af9c07ee18a87705ef50b0cc4cd20266cf12.";
+ PackReverseIndex computed = PackReverseIndexFactory.openOrCompute(
+ getResourceFileFor(noRevFilePrefix, PackExt.REVERSE_INDEX), 7,
+ () -> PackIndex.open(
+ getResourceFileFor(noRevFilePrefix, PackExt.INDEX)));
- /**
- * Set up tested class instance, test constructor by the way.
- */
- @Override
- @Before
- public void setUp() throws Exception {
- super.setUp();
- // index with both small (< 2^31) and big offsets
- idx = PackIndex.open(JGitTestUtil.getTestResourceFile(
- "pack-huge.idx"));
- reverseIdx = new PackReverseIndex(idx);
+ assertTrue(computed instanceof PackReverseIndexComputed);
}
- /**
- * Test findObject() for all index entries.
- */
@Test
- public void testFindObject() {
- for (MutableEntry me : idx)
- assertEquals(me.toObjectId(), reverseIdx.findObject(me.getOffset()));
+ public void open_readGoodFile() throws IOException {
+ String hasRevFilePrefix = "pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.";
+ PackReverseIndex version1 = PackReverseIndexFactory.openOrCompute(
+ getResourceFileFor(hasRevFilePrefix, PackExt.REVERSE_INDEX), 6,
+ () -> PackIndex.open(
+ getResourceFileFor(hasRevFilePrefix, PackExt.INDEX)));
+
+ assertTrue(version1 instanceof PackReverseIndexV1);
}
- /**
- * Test findObject() with illegal argument.
- */
@Test
- public void testFindObjectWrongOffset() {
- assertNull(reverseIdx.findObject(0));
+ public void open_readCorruptFile() {
+ String hasRevFilePrefix = "pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.";
+
+ assertThrows(IOException.class,
+ () -> PackReverseIndexFactory.openOrCompute(
+ getResourceFileFor(hasRevFilePrefix + "corrupt.",
+ PackExt.REVERSE_INDEX),
+ 6, () -> PackIndex.open(getResourceFileFor(
+ hasRevFilePrefix, PackExt.INDEX))));
}
- /**
- * Test findNextOffset() for all index entries.
- *
- * @throws CorruptObjectException
- */
@Test
- public void testFindNextOffset() throws CorruptObjectException {
- long offset = findFirstOffset();
- assertTrue(offset > 0);
- for (int i = 0; i < idx.getObjectCount(); i++) {
- long newOffset = reverseIdx.findNextOffset(offset, Long.MAX_VALUE);
- assertTrue(newOffset > offset);
- if (i == idx.getObjectCount() - 1)
- assertEquals(newOffset, Long.MAX_VALUE);
- else
- assertEquals(newOffset, idx.findOffset(reverseIdx
- .findObject(newOffset)));
- offset = newOffset;
- }
+ public void read_badMagic() {
+ byte[] badMagic = new byte[] { 'R', 'B', 'A', 'D', // magic
+ 0x00, 0x00, 0x00, 0x01, // file version
+ 0x00, 0x00, 0x00, 0x01, // oid version
+ // pack checksum
+ 'P', 'A', 'C', 'K', 'C', 'H', 'E', 'C', 'K', 'S', 'U', 'M', '3',
+ '4', '5', '6', '7', '8', '9', '0',
+ // checksum
+ 0x66, 0x01, (byte) 0xbc, (byte) 0xe8, 0x51, 0x4b, 0x2f,
+ (byte) 0xa1, (byte) 0xa9, (byte) 0xcd, (byte) 0xbe, (byte) 0xd6,
+ 0x4f, (byte) 0xa8, 0x7d, (byte) 0xab, 0x50, (byte) 0xa3,
+ (byte) 0xf7, (byte) 0xcc, };
+ ByteArrayInputStream in = new ByteArrayInputStream(badMagic);
+
+ assertThrows(IOException.class,
+ () -> PackReverseIndexFactory.readFromFile(in, 0, () -> null));
}
- /**
- * Test findNextOffset() with wrong illegal argument as offset.
- */
@Test
- public void testFindNextOffsetWrongOffset() {
- try {
- reverseIdx.findNextOffset(0, Long.MAX_VALUE);
- fail("findNextOffset() should throw exception");
- } catch (CorruptObjectException x) {
- // expected
- }
+ public void read_unsupportedVersion2() {
+ byte[] version2 = new byte[] { 'R', 'I', 'D', 'X', // magic
+ 0x00, 0x00, 0x00, 0x02, // file version
+ 0x00, 0x00, 0x00, 0x01, // oid version
+ // pack checksum
+ 'P', 'A', 'C', 'K', 'C', 'H', 'E', 'C', 'K', 'S', 'U', 'M', '3',
+ '4', '5', '6', '7', '8', '9', '0',
+ // checksum
+ 0x70, 0x17, 0x10, 0x51, (byte) 0xfe, (byte) 0xab, (byte) 0x9b,
+ 0x68, (byte) 0xed, 0x3a, 0x3f, 0x27, 0x1d, (byte) 0xce,
+ (byte) 0xff, 0x38, 0x09, (byte) 0x9b, 0x29, 0x58, };
+ ByteArrayInputStream in = new ByteArrayInputStream(version2);
+
+ assertThrows(IOException.class,
+ () -> PackReverseIndexFactory.readFromFile(in, 0, () -> null));
}
- private long findFirstOffset() {
- long min = Long.MAX_VALUE;
- for (MutableEntry me : idx)
- min = Math.min(min, me.getOffset());
- return min;
+ private File getResourceFileFor(String packFilePrefix, PackExt ext) {
+ return JGitTestUtil
+ .getTestResourceFile(packFilePrefix + ext.getExtension());
}
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1Test.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1Test.java
new file mode 100644
index 0000000000..38b28b501b
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1Test.java
@@ -0,0 +1,289 @@
+/*
+ * Copyright (C) 2022, Google LLC and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.storage.file;
+
+import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
+import static org.eclipse.jgit.lib.Constants.OBJ_COMMIT;
+import static org.eclipse.jgit.lib.Constants.OBJ_TREE;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThrows;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import org.eclipse.jgit.errors.CorruptObjectException;
+import org.eclipse.jgit.errors.PackMismatchException;
+import org.eclipse.jgit.junit.JGitTestUtil;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.transport.PackedObjectInfo;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PackReverseIndexV1Test {
+ private static final byte[] FAKE_PACK_CHECKSUM = new byte[] { 'P', 'A', 'C',
+ 'K', 'C', 'H', 'E', 'C', 'K', 'S', 'U', 'M', '3', '4', '5', '6',
+ '7', '8', '9', '0', };
+
+ private static final byte[] NO_OBJECTS = new byte[] { 'R', 'I', 'D', 'X', // magic
+ 0x00, 0x00, 0x00, 0x01, // file version
+ 0x00, 0x00, 0x00, 0x01, // oid version
+ // pack checksum to copy into at byte 12
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ // checksum
+ (byte) 0xd1, 0x1d, 0x17, (byte) 0xd5, (byte) 0xa1, 0x5c,
+ (byte) 0x8f, 0x45, 0x7e, 0x06, (byte) 0x91, (byte) 0xf2, 0x7e, 0x20,
+ 0x35, 0x2c, (byte) 0xdc, 0x4c, 0x46, (byte) 0xe4, };
+
+ private static final byte[] SMALL_PACK_CHECKSUM = new byte[] { (byte) 0xbb,
+ 0x1d, 0x25, 0x3d, (byte) 0xd3, (byte) 0xf0, 0x08, 0x75, (byte) 0xc8,
+ 0x04, (byte) 0xd0, 0x6f, 0x73, (byte) 0xe9, 0x00, (byte) 0x82,
+ (byte) 0xdb, 0x09, (byte) 0xc8, 0x13, };
+
+ private static final byte[] SMALL_CONTENTS = new byte[] { 'R', 'I', 'D',
+ 'X', // magic
+ 0x00, 0x00, 0x00, 0x01, // file version
+ 0x00, 0x00, 0x00, 0x01, // oid version
+ 0x00, 0x00, 0x00, 0x04, // offset 12: "68" -> index @ 4
+ 0x00, 0x00, 0x00, 0x02, // offset 165: "5c" -> index @ 2
+ 0x00, 0x00, 0x00, 0x03, // offset 257: "62" -> index @ 3
+ 0x00, 0x00, 0x00, 0x01, // offset 450: "58" -> index @ 1
+ 0x00, 0x00, 0x00, 0x05, // offset 556: "c5" -> index @ 5
+ 0x00, 0x00, 0x00, 0x00, // offset 614: "2d" -> index @ 0
+ // pack checksum to copy into at byte 36
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ // checksum
+ (byte) 0xf0, 0x6d, 0x03, (byte) 0xd7, 0x6f, (byte) 0x9f,
+ (byte) 0xc1, 0x36, 0x26, (byte) 0xbc, (byte) 0xcb, 0x75, 0x36,
+ (byte) 0xa1, 0x26, 0x6a, 0x2b, (byte) 0x84, 0x16, (byte) 0x83, };
+
+ private PackReverseIndex emptyReverseIndex;
+
+ /**
+ * Reverse index for the pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.idx
+ * with contents `SHA-1 type size size-in-packfile offset-in-packfile` as
+ * shown by `verify-pack`:
+ * 2d04ee74dba30078c2dcdb713ddb8be4bc084d76 blob 8 17 614
+ * 58728c938a9a8b9970cc09236caf94ada4689923 blob 140 106 450
+ * 5ce00008cf3fb8f194f52742020bd40d78f3f1b3 commit 81 92 165 1 68cb1f232964f3cd698afc1dafe583937203c587
+ * 62299a7ae290d685196e948a2fcb7d8c07f95c7d tree 198 193 257
+ * 68cb1f232964f3cd698afc1dafe583937203c587 commit 220 153 12
+ * c5ab27309491cf641eb11bb4b7a78641f280b482 tree 46 58 556 1 62299a7ae290d685196e948a2fcb7d8c07f95c7d
+ */
+ private PackReverseIndex smallReverseIndex;
+
+ private final PackedObjectInfo object614 = objectInfo(
+ "2d04ee74dba30078c2dcdb713ddb8be4bc084d76", OBJ_BLOB, 614);
+
+ private final PackedObjectInfo object450 = objectInfo(
+ "58728c938a9a8b9970cc09236caf94ada4689923", OBJ_BLOB, 450);
+
+ private final PackedObjectInfo object165 = objectInfo(
+ "5ce00008cf3fb8f194f52742020bd40d78f3f1b3", OBJ_COMMIT, 165);
+
+ private final PackedObjectInfo object257 = objectInfo(
+ "62299a7ae290d685196e948a2fcb7d8c07f95c7d", OBJ_TREE, 257);
+
+ private final PackedObjectInfo object12 = objectInfo(
+ "68cb1f232964f3cd698afc1dafe583937203c587", OBJ_COMMIT, 12);
+
+ private final PackedObjectInfo object556 = objectInfo(
+ "c5ab27309491cf641eb11bb4b7a78641f280b482", OBJ_TREE, 556);
+
+ // last object's offset + last object's length
+ private final long smallMaxOffset = 631;
+
+ @Before
+ public void setUp() throws Exception {
+ System.arraycopy(SMALL_PACK_CHECKSUM, 0, SMALL_CONTENTS, 36,
+ SMALL_PACK_CHECKSUM.length);
+ ByteArrayInputStream smallIn = new ByteArrayInputStream(SMALL_CONTENTS);
+ smallReverseIndex = PackReverseIndexFactory.readFromFile(smallIn, 6,
+ () -> PackIndex.open(JGitTestUtil.getTestResourceFile(
+ "pack-cbdeda40019ae0e6e789088ea0f51f164f489d14.idx")));
+
+ System.arraycopy(FAKE_PACK_CHECKSUM, 0, NO_OBJECTS, 12,
+ FAKE_PACK_CHECKSUM.length);
+ ByteArrayInputStream emptyIn = new ByteArrayInputStream(NO_OBJECTS);
+ emptyReverseIndex = PackReverseIndexFactory.readFromFile(emptyIn, 0,
+ () -> null);
+ }
+
+ @Test
+ public void read_unsupportedOidSHA256() {
+ byte[] version2 = new byte[] { 'R', 'I', 'D', 'X', // magic
+ 0x00, 0x00, 0x00, 0x01, // file version
+ 0x00, 0x00, 0x00, 0x02, // oid version
+ // pack checksum to copy into at byte 12
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ // checksum
+ 0x6e, 0x78, 0x75, 0x67, (byte) 0x84, (byte) 0x89, (byte) 0xde,
+ (byte) 0xe3, (byte) 0x86, 0x6a, 0x3b, (byte) 0x98, 0x51,
+ (byte) 0xd8, (byte) 0x8c, (byte) 0xec, 0x50, (byte) 0xe7,
+ (byte) 0xfb, 0x22, };
+ System.arraycopy(FAKE_PACK_CHECKSUM, 0, version2, 12,
+ FAKE_PACK_CHECKSUM.length);
+ ByteArrayInputStream in = new ByteArrayInputStream(version2);
+
+ assertThrows(IOException.class,
+ () -> PackReverseIndexFactory.readFromFile(in, 0, () -> null));
+ }
+
+ @Test
+ public void read_objectCountTooLarge() {
+ ByteArrayInputStream dummyInput = new ByteArrayInputStream(NO_OBJECTS);
+ long biggerThanInt = ((long) Integer.MAX_VALUE) + 1;
+
+ assertThrows(IllegalArgumentException.class,
+ () -> PackReverseIndexFactory.readFromFile(dummyInput,
+ biggerThanInt,
+ () -> null));
+ }
+
+ @Test
+ public void read_incorrectChecksum() {
+ byte[] badChecksum = new byte[] { 'R', 'I', 'D', 'X', // magic
+ 0x00, 0x00, 0x00, 0x01, // file version
+ 0x00, 0x00, 0x00, 0x01, // oid version
+ // pack checksum to copy into at byte 12
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ // checksum
+ (byte) 0xf2, 0x1a, 0x1a, (byte) 0xaa, 0x32, 0x2d, (byte) 0xb9,
+ (byte) 0xfd, 0x0f, (byte) 0xa5, 0x4c, (byte) 0xea, (byte) 0xcf,
+ (byte) 0xbb, (byte) 0x99, (byte) 0xde, (byte) 0xd3, 0x4e,
+ (byte) 0xb1, (byte) 0xee, // would be 0x74 if correct
+ };
+ System.arraycopy(FAKE_PACK_CHECKSUM, 0, badChecksum, 12,
+ FAKE_PACK_CHECKSUM.length);
+ ByteArrayInputStream in = new ByteArrayInputStream(badChecksum);
+ assertThrows(CorruptObjectException.class,
+ () -> PackReverseIndexFactory.readFromFile(in, 0, () -> null));
+ }
+
+ @Test
+ public void findObject_noObjects() {
+ assertNull(emptyReverseIndex.findObject(0));
+ }
+
+ @Test
+ public void findObject_multipleObjects() {
+ assertEquals(object614, smallReverseIndex.findObject(614));
+ assertEquals(object450, smallReverseIndex.findObject(450));
+ assertEquals(object165, smallReverseIndex.findObject(165));
+ assertEquals(object257, smallReverseIndex.findObject(257));
+ assertEquals(object12, smallReverseIndex.findObject(12));
+ assertEquals(object556, smallReverseIndex.findObject(556));
+ }
+
+ @Test
+ public void findObject_badOffset() {
+ assertNull(smallReverseIndex.findObject(0));
+ }
+
+ @Test
+ public void findNextOffset_noObjects() {
+ assertThrows(IOException.class,
+ () -> emptyReverseIndex.findNextOffset(0, Long.MAX_VALUE));
+ }
+
+ @Test
+ public void findNextOffset_multipleObjects() throws CorruptObjectException {
+ assertEquals(smallMaxOffset,
+ smallReverseIndex.findNextOffset(614, smallMaxOffset));
+ assertEquals(614,
+ smallReverseIndex.findNextOffset(556, smallMaxOffset));
+ assertEquals(556,
+ smallReverseIndex.findNextOffset(450, smallMaxOffset));
+ assertEquals(450,
+ smallReverseIndex.findNextOffset(257, smallMaxOffset));
+ assertEquals(257,
+ smallReverseIndex.findNextOffset(165, smallMaxOffset));
+ assertEquals(165, smallReverseIndex.findNextOffset(12, smallMaxOffset));
+ }
+
+ @Test
+ public void findNextOffset_badOffset() {
+ assertThrows(IOException.class,
+ () -> smallReverseIndex.findNextOffset(0, Long.MAX_VALUE));
+ }
+
+ @Test
+ public void findPosition_noObjects() {
+ assertEquals(-1, emptyReverseIndex.findPosition(0));
+ }
+
+ @Test
+ public void findPosition_multipleObjects() {
+ assertEquals(0, smallReverseIndex.findPosition(12));
+ assertEquals(1, smallReverseIndex.findPosition(165));
+ assertEquals(2, smallReverseIndex.findPosition(257));
+ assertEquals(3, smallReverseIndex.findPosition(450));
+ assertEquals(4, smallReverseIndex.findPosition(556));
+ assertEquals(5, smallReverseIndex.findPosition(614));
+ }
+
+ @Test
+ public void findPosition_badOffset() {
+ assertEquals(-1, smallReverseIndex.findPosition(10));
+ }
+
+ @Test
+ public void findObjectByPosition_noObjects() {
+ assertThrows(AssertionError.class,
+ () -> emptyReverseIndex.findObjectByPosition(0));
+ }
+
+ @Test
+ public void findObjectByPosition_multipleObjects() {
+ assertEquals(object12, smallReverseIndex.findObjectByPosition(0));
+ assertEquals(object165, smallReverseIndex.findObjectByPosition(1));
+ assertEquals(object257, smallReverseIndex.findObjectByPosition(2));
+ assertEquals(object450, smallReverseIndex.findObjectByPosition(3));
+ assertEquals(object556, smallReverseIndex.findObjectByPosition(4));
+ assertEquals(object614, smallReverseIndex.findObjectByPosition(5));
+ }
+
+ @Test
+ public void findObjectByPosition_badOffset() {
+ assertThrows(AssertionError.class,
+ () -> smallReverseIndex.findObjectByPosition(10));
+ }
+
+ @Test
+ public void verifyChecksum_match() throws IOException {
+ smallReverseIndex.verifyPackChecksum("smallPackFilePath");
+ }
+
+ @Test
+ public void verifyChecksum_mismatch() throws IOException {
+ ByteArrayInputStream in = new ByteArrayInputStream(NO_OBJECTS);
+ PackIndex mockForwardIndex = mock(PackIndex.class);
+ when(mockForwardIndex.getChecksum()).thenReturn(
+ new byte[] { 'D', 'I', 'F', 'F', 'P', 'A', 'C', 'K', 'C', 'H',
+ 'E', 'C', 'K', 'S', 'U', 'M', '7', '8', '9', '0', });
+ PackReverseIndex reverseIndex = PackReverseIndexFactory.readFromFile(in,
+ 0,
+ () -> mockForwardIndex);
+
+ assertThrows(PackMismatchException.class,
+ () -> reverseIndex.verifyPackChecksum("packFilePath"));
+ }
+
+ private static PackedObjectInfo objectInfo(String objectId, int type,
+ long offset) {
+ PackedObjectInfo objectInfo = new PackedObjectInfo(
+ ObjectId.fromString(objectId));
+ objectInfo.setType(type);
+ objectInfo.setOffset(offset);
+ return objectInfo;
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1WriteReadTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1WriteReadTest.java
new file mode 100644
index 0000000000..372a4c7cba
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1WriteReadTest.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2022, Google LLC and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.storage.file;
+
+import static org.eclipse.jgit.lib.Constants.OBJECT_ID_STRING_LENGTH;
+import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
+import static org.eclipse.jgit.lib.Constants.OBJ_COMMIT;
+import static org.eclipse.jgit.lib.Constants.OBJ_TREE;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.transport.PackedObjectInfo;
+import org.junit.Test;
+
+public class PackReverseIndexV1WriteReadTest {
+
+ private static byte[] PACK_CHECKSUM = new byte[] { 'P', 'A', 'C', 'K', 'C',
+ 'H', 'E', 'C', 'K', 'S', 'U', 'M', '3', '4', '5', '6', '7', '8',
+ '9', '0', };
+
+ @Test
+ public void writeThenRead_noObjects() throws IOException {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ PackReverseIndexWriter writer = PackReverseIndexWriter.createWriter(out,
+ 1);
+ List<PackedObjectInfo> objectsSortedByName = new ArrayList<>();
+
+ // write
+ writer.write(objectsSortedByName, PACK_CHECKSUM);
+
+ ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+
+ // read
+ PackReverseIndex noObjectsReverseIndex = PackReverseIndexFactory
+ .readFromFile(in, 0, () -> null);
+
+ // use
+ assertThrows(AssertionError.class,
+ () -> noObjectsReverseIndex.findObjectByPosition(0));
+ }
+
+ @Test
+ public void writeThenRead_oneObject() throws IOException {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ PackReverseIndexWriter writer = PackReverseIndexWriter.createWriter(out,
+ 1);
+ PackedObjectInfo a = objectInfo("a", OBJ_COMMIT, 0);
+ List<PackedObjectInfo> objectsSortedByName = List.of(a);
+
+ // write
+ writer.write(objectsSortedByName, PACK_CHECKSUM);
+
+ ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+ PackIndex mockForwardIndex = mock(PackIndex.class);
+ when(mockForwardIndex.getObjectId(0)).thenReturn(a);
+
+ // read
+ PackReverseIndex oneObjectReverseIndex = PackReverseIndexFactory
+ .readFromFile(in, 1, () -> mockForwardIndex);
+
+ // use
+ assertEquals(a, oneObjectReverseIndex.findObjectByPosition(0));
+ }
+
+ @Test
+ public void writeThenRead_multipleObjectsLargeOffsets() throws IOException {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ PackReverseIndexWriter writer = PackReverseIndexWriter.createWriter(out,
+ 1);
+ PackedObjectInfo a = objectInfo("a", OBJ_BLOB, 200000000);
+ PackedObjectInfo b = objectInfo("b", OBJ_COMMIT, 0);
+ PackedObjectInfo c = objectInfo("c", OBJ_COMMIT, 52000000000L);
+ PackedObjectInfo d = objectInfo("d", OBJ_TREE, 7);
+ PackedObjectInfo e = objectInfo("e", OBJ_COMMIT, 38000000000L);
+ List<PackedObjectInfo> objectsSortedByName = List.of(a, b, c, d, e);
+
+ writer.write(objectsSortedByName, PACK_CHECKSUM);
+
+ // write
+ writer.write(objectsSortedByName, PACK_CHECKSUM);
+
+ ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+ PackIndex mockForwardIndex = mock(PackIndex.class);
+ when(mockForwardIndex.getObjectId(4)).thenReturn(e);
+
+ // read
+ PackReverseIndex multipleObjectsReverseIndex = PackReverseIndexFactory
+ .readFromFile(in, 5, () -> mockForwardIndex);
+
+ // use with minimal mocked forward index use
+ assertEquals(e, multipleObjectsReverseIndex.findObjectByPosition(3));
+ }
+
+ private static PackedObjectInfo objectInfo(String objectId, int type,
+ long offset) {
+ assert (objectId.length() == 1);
+ PackedObjectInfo objectInfo = new PackedObjectInfo(
+ ObjectId.fromString(objectId.repeat(OBJECT_ID_STRING_LENGTH)));
+ objectInfo.setType(type);
+ objectInfo.setOffset(offset);
+ return objectInfo;
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackTest.java
index a3596541fe..e1509456e5 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackTest.java
@@ -261,7 +261,7 @@ public class PackTest extends LocalDiskRepositoryTestCase {
new PackIndexWriterV1(f).write(list, footer);
}
- Pack pack = new Pack(packName, null);
+ Pack pack = new Pack(repo.getConfig(), packName, null);
try {
pack.get(wc, b);
fail("expected LargeObjectException.ExceedsByteArrayLimit");
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryAfterOpenConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryAfterOpenConfigTest.java
index 42304e2253..3ea4a167cb 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryAfterOpenConfigTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryAfterOpenConfigTest.java
@@ -17,7 +17,6 @@ import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.util.SystemReader;
public class RefDirectoryAfterOpenConfigTest extends RefDirectoryTest {
- /** {@inheritDoc} */
@Override
public void refDirectorySetup() throws Exception {
StoredConfig userConfig = SystemReader.getInstance().getUserConfig();
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectoryTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectoryTest.java
index c3dafe4aa2..90a2aa601e 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectoryTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectoryTest.java
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertEquals;
public class SnapshottingRefDirectoryTest extends RefDirectoryTest {
private RefDirectory originalRefDirectory;
- /** {@inheritDoc} */
@Before
@Override
public void setUp() throws Exception {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/CommitTemplateConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/CommitTemplateConfigTest.java
index 42bafb60ca..3ccd0ef021 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/CommitTemplateConfigTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/CommitTemplateConfigTest.java
@@ -17,7 +17,9 @@ import java.io.IOException;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.junit.JGitTestUtil;
+import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
+import org.eclipse.jgit.util.FS;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -27,7 +29,7 @@ import org.junit.rules.TemporaryFolder;
* test using bazel which doesn't allow tests to create files in the home
* directory
*/
-public class CommitTemplateConfigTest {
+public class CommitTemplateConfigTest extends LocalDiskRepositoryTestCase {
@Rule
public TemporaryFolder tmp = new TemporaryFolder();
@@ -42,9 +44,11 @@ public class CommitTemplateConfigTest {
String templateContent = "content of the template";
JGitTestUtil.write(tempFile, templateContent);
// proper evaluation of the ~/ directory
- String homeDir = System.getProperty("user.home");
+ File homeDir = FS.DETECTED.userHome();
File tempFileInHomeDirectory = File.createTempFile("fileInHomeFolder",
- ".tmp", new File(homeDir));
+ ".tmp", homeDir);
+ // The home directory should be a mocked temporary directory, but
+ // still...
tempFileInHomeDirectory.deleteOnExit();
JGitTestUtil.write(tempFileInHomeDirectory, templateContent);
String expectedTemplatePath = "~/" + tempFileInHomeDirectory.getName();
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
index 8f9d105319..36cf77bb01 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
@@ -1482,7 +1482,9 @@ public class ConfigTest {
File workTree = tmp.newFolder("dummy-worktree");
File tempFile = tmp.newFile("testCommitTemplate-");
- Repository repo = FileRepositoryBuilder.create(workTree);
+ Repository repo = FileRepositoryBuilder
+ .create(new File(workTree, ".git"));
+ repo.create();
String templateContent = "content of the template";
JGitTestUtil.write(tempFile, templateContent);
String expectedTemplatePath = tempFile.getPath();
@@ -1532,7 +1534,9 @@ public class ConfigTest {
throws ConfigInvalidException, IOException {
Config config = new Config(null);
File workTree = tmp.newFolder("dummy-worktree");
- Repository repo = FileRepositoryBuilder.create(workTree);
+ Repository repo = FileRepositoryBuilder
+ .create(new File(workTree, ".git"));
+ repo.create();
File tempFile = tmp.newFile("testCommitTemplate-");
String templateContent = "content of the template";
JGitTestUtil.write(tempFile, templateContent);
@@ -1554,7 +1558,9 @@ public class ConfigTest {
Config config = new Config(null);
File workTree = tmp.newFolder("dummy-worktree");
File tempFile = tmp.newFile("testCommitTemplate-");
- Repository repo = FileRepositoryBuilder.create(workTree);
+ Repository repo = FileRepositoryBuilder
+ .create(new File(workTree, ".git"));
+ repo.create();
String templateContent = "content of the template";
JGitTestUtil.write(tempFile, templateContent);
config = parse("[i18n]\n\tcommitEncoding = invalidEcoding\n"
@@ -1569,7 +1575,9 @@ public class ConfigTest {
Config config = new Config(null);
File workTree = tmp.newFolder("dummy-worktree");
File tempFile = tmp.newFile("testCommitTemplate-");
- Repository repo = FileRepositoryBuilder.create(workTree);
+ Repository repo = FileRepositoryBuilder
+ .create(new File(workTree, ".git"));
+ repo.create();
String templateContent = "content of the template";
JGitTestUtil.write(tempFile, templateContent);
// commit message encoding
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
index 5f4331b04d..680a2d5d72 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
@@ -47,7 +47,10 @@ public class MergeAlgorithmTest {
@Test
public void testTwoConflictingModifications() throws IOException {
assertEquals(t("a<b=Z>Zdefghij"),
- merge("abcdefghij", "abZdefghij", "aZZdefghij"));
+ merge("abcdefghij", "abZdefghij", "aZZdefghij", false));
+
+ assertEquals(t("a<b|b=Z>Zdefghij"),
+ merge("abcdefghij", "abZdefghij", "aZZdefghij", true));
}
/**
@@ -60,7 +63,10 @@ public class MergeAlgorithmTest {
@Test
public void testOneAgainstTwoConflictingModifications() throws IOException {
assertEquals(t("aZ<Z=c>Zefghij"),
- merge("abcdefghij", "aZZZefghij", "aZcZefghij"));
+ merge("abcdefghij", "aZZZefghij", "aZcZefghij", false));
+
+ assertEquals(t("aZ<Z|c=c>Zefghij"),
+ merge("abcdefghij", "aZZZefghij", "aZcZefghij", true));
}
/**
@@ -72,7 +78,10 @@ public class MergeAlgorithmTest {
@Test
public void testNoAgainstOneModification() throws IOException {
assertEquals(t("aZcZefghij"),
- merge("abcdefghij", "abcdefghij", "aZcZefghij"));
+ merge("abcdefghij", "abcdefghij", "aZcZefghij", false));
+
+ assertEquals(t("aZcZefghij"),
+ merge("abcdefghij", "abcdefghij", "aZcZefghij", true));
}
/**
@@ -84,7 +93,10 @@ public class MergeAlgorithmTest {
@Test
public void testTwoNonConflictingModifications() throws IOException {
assertEquals(t("YbZdefghij"),
- merge("abcdefghij", "abZdefghij", "Ybcdefghij"));
+ merge("abcdefghij", "abZdefghij", "Ybcdefghij", false));
+
+ assertEquals(t("YbZdefghij"),
+ merge("abcdefghij", "abZdefghij", "Ybcdefghij", true));
}
/**
@@ -96,7 +108,10 @@ public class MergeAlgorithmTest {
@Test
public void testTwoComplicatedModifications() throws IOException {
assertEquals(t("a<ZZZZfZhZj=bYdYYYYiY>"),
- merge("abcdefghij", "aZZZZfZhZj", "abYdYYYYiY"));
+ merge("abcdefghij", "aZZZZfZhZj", "abYdYYYYiY", false));
+
+ assertEquals(t("a<ZZZZfZhZj|bcdefghij=bYdYYYYiY>"),
+ merge("abcdefghij", "aZZZZfZhZj", "abYdYYYYiY", true));
}
/**
@@ -109,7 +124,9 @@ public class MergeAlgorithmTest {
@Test
public void testTwoModificationsWithSharedDelete() throws IOException {
assertEquals(t("Cb}n}"),
- merge("ab}n}n}", "ab}n}", "Cb}n}"));
+ merge("ab}n}n}", "ab}n}", "Cb}n}", false));
+
+ assertEquals(t("Cb}n}"), merge("ab}n}n}", "ab}n}", "Cb}n}", true));
}
/**
@@ -122,7 +139,11 @@ public class MergeAlgorithmTest {
@Test
public void testModificationsWithMiddleInsert() throws IOException {
assertEquals(t("aBcd123123uvwxPq"),
- merge("abcd123uvwxpq", "aBcd123123uvwxPq", "abcd123123uvwxpq"));
+ merge("abcd123uvwxpq", "aBcd123123uvwxPq", "abcd123123uvwxpq",
+ false));
+
+ assertEquals(t("aBcd123123uvwxPq"), merge("abcd123uvwxpq",
+ "aBcd123123uvwxPq", "abcd123123uvwxpq", true));
}
/**
@@ -135,7 +156,10 @@ public class MergeAlgorithmTest {
@Test
public void testModificationsWithMiddleDelete() throws IOException {
assertEquals(t("Abz}z123Q"),
- merge("abz}z}z123q", "Abz}z123Q", "abz}z123q"));
+ merge("abz}z}z123q", "Abz}z123Q", "abz}z123q", false));
+
+ assertEquals(t("Abz}z123Q"),
+ merge("abz}z}z123q", "Abz}z123Q", "abz}z123q", true));
}
/**
@@ -146,7 +170,10 @@ public class MergeAlgorithmTest {
@Test
public void testConflictAtStart() throws IOException {
assertEquals(t("<Z=Y>bcdefghij"),
- merge("abcdefghij", "Zbcdefghij", "Ybcdefghij"));
+ merge("abcdefghij", "Zbcdefghij", "Ybcdefghij", false));
+
+ assertEquals(t("<Z|a=Y>bcdefghij"),
+ merge("abcdefghij", "Zbcdefghij", "Ybcdefghij", true));
}
/**
@@ -157,7 +184,10 @@ public class MergeAlgorithmTest {
@Test
public void testConflictAtEnd() throws IOException {
assertEquals(t("abcdefghi<Z=Y>"),
- merge("abcdefghij", "abcdefghiZ", "abcdefghiY"));
+ merge("abcdefghij", "abcdefghiZ", "abcdefghiY", false));
+
+ assertEquals(t("abcdefghi<Z|j=Y>"),
+ merge("abcdefghij", "abcdefghiZ", "abcdefghiY", true));
}
/**
@@ -169,7 +199,10 @@ public class MergeAlgorithmTest {
@Test
public void testSameModification() throws IOException {
assertEquals(t("abZdefghij"),
- merge("abcdefghij", "abZdefghij", "abZdefghij"));
+ merge("abcdefghij", "abZdefghij", "abZdefghij", false));
+
+ assertEquals(t("abZdefghij"),
+ merge("abcdefghij", "abZdefghij", "abZdefghij", true));
}
/**
@@ -181,27 +214,36 @@ public class MergeAlgorithmTest {
@Test
public void testDeleteVsModify() throws IOException {
assertEquals(t("ab<=Z>defghij"),
- merge("abcdefghij", "abdefghij", "abZdefghij"));
+ merge("abcdefghij", "abdefghij", "abZdefghij", false));
+
+ assertEquals(t("ab<|c=Z>defghij"),
+ merge("abcdefghij", "abdefghij", "abZdefghij", true));
}
@Test
public void testInsertVsModify() throws IOException {
- assertEquals(t("a<bZ=XY>"), merge("ab", "abZ", "aXY"));
+ assertEquals(t("a<bZ=XY>"), merge("ab", "abZ", "aXY", false));
+ assertEquals(t("a<bZ|b=XY>"), merge("ab", "abZ", "aXY", true));
}
@Test
public void testAdjacentModifications() throws IOException {
- assertEquals(t("a<Zc=bY>d"), merge("abcd", "aZcd", "abYd"));
+ assertEquals(t("a<Zc=bY>d"), merge("abcd", "aZcd", "abYd", false));
+ assertEquals(t("a<Zc|bc=bY>d"), merge("abcd", "aZcd", "abYd", true));
}
@Test
public void testSeparateModifications() throws IOException {
- assertEquals(t("aZcYe"), merge("abcde", "aZcde", "abcYe"));
+ assertEquals(t("aZcYe"), merge("abcde", "aZcde", "abcYe", false));
+ assertEquals(t("aZcYe"), merge("abcde", "aZcde", "abcYe", true));
}
@Test
public void testBlankLines() throws IOException {
- assertEquals(t("aZc\nYe"), merge("abc\nde", "aZc\nde", "abc\nYe"));
+ assertEquals(t("aZc\nYe"),
+ merge("abc\nde", "aZc\nde", "abc\nYe", false));
+ assertEquals(t("aZc\nYe"),
+ merge("abc\nde", "aZc\nde", "abc\nYe", true));
}
/**
@@ -214,11 +256,22 @@ public class MergeAlgorithmTest {
*/
@Test
public void testTwoSimilarModsAndOneInsert() throws IOException {
- assertEquals(t("aBcDde"), merge("abcde", "aBcde", "aBcDde"));
- assertEquals(t("IAAAJCAB"), merge("iACAB", "IACAB", "IAAAJCAB"));
- assertEquals(t("HIAAAJCAB"), merge("HiACAB", "HIACAB", "HIAAAJCAB"));
+ assertEquals(t("aBcDde"), merge("abcde", "aBcde", "aBcDde", false));
+ assertEquals(t("aBcDde"), merge("abcde", "aBcde", "aBcDde", true));
+
+ assertEquals(t("IAAAJCAB"), merge("iACAB", "IACAB", "IAAAJCAB", false));
+ assertEquals(t("IAAAJCAB"), merge("iACAB", "IACAB", "IAAAJCAB", true));
+
+ assertEquals(t("HIAAAJCAB"),
+ merge("HiACAB", "HIACAB", "HIAAAJCAB", false));
+ assertEquals(t("HIAAAJCAB"),
+ merge("HiACAB", "HIACAB", "HIAAAJCAB", true));
+
+ assertEquals(t("AGADEFHIAAAJCAB"),
+ merge("AGADEFHiACAB", "AGADEFHIACAB", "AGADEFHIAAAJCAB",
+ false));
assertEquals(t("AGADEFHIAAAJCAB"),
- merge("AGADEFHiACAB", "AGADEFHIACAB", "AGADEFHIAAAJCAB"));
+ merge("AGADEFHiACAB", "AGADEFHIACAB", "AGADEFHIAAAJCAB", true));
}
/**
@@ -232,18 +285,28 @@ public class MergeAlgorithmTest {
@Test
public void testTwoSimilarModsAndOneInsertAtEnd() throws IOException {
Assume.assumeTrue(newlineAtEnd);
- assertEquals(t("IAAJ"), merge("iA", "IA", "IAAJ"));
- assertEquals(t("IAJ"), merge("iA", "IA", "IAJ"));
- assertEquals(t("IAAAJ"), merge("iA", "IA", "IAAAJ"));
+ assertEquals(t("IAAJ"), merge("iA", "IA", "IAAJ", false));
+ assertEquals(t("IAAJ"), merge("iA", "IA", "IAAJ", true));
+
+ assertEquals(t("IAJ"), merge("iA", "IA", "IAJ", false));
+ assertEquals(t("IAJ"), merge("iA", "IA", "IAJ", true));
+
+ assertEquals(t("IAAAJ"), merge("iA", "IA", "IAAAJ", false));
+ assertEquals(t("IAAAJ"), merge("iA", "IA", "IAAAJ", true));
}
@Test
public void testTwoSimilarModsAndOneInsertAtEndNoNewlineAtEnd()
throws IOException {
Assume.assumeFalse(newlineAtEnd);
- assertEquals(t("I<A=AAJ>"), merge("iA", "IA", "IAAJ"));
- assertEquals(t("I<A=AJ>"), merge("iA", "IA", "IAJ"));
- assertEquals(t("I<A=AAAJ>"), merge("iA", "IA", "IAAAJ"));
+ assertEquals(t("I<A=AAJ>"), merge("iA", "IA", "IAAJ", false));
+ assertEquals(t("I<A|A=AAJ>"), merge("iA", "IA", "IAAJ", true));
+
+ assertEquals(t("I<A=AJ>"), merge("iA", "IA", "IAJ", false));
+ assertEquals(t("I<A|A=AJ>"), merge("iA", "IA", "IAJ", true));
+
+ assertEquals(t("I<A=AAAJ>"), merge("iA", "IA", "IAAAJ", false));
+ assertEquals(t("I<A|A=AAAJ>"), merge("iA", "IA", "IAAAJ", true));
}
/**
@@ -254,22 +317,34 @@ public class MergeAlgorithmTest {
@Test
public void testEmptyTexts() throws IOException {
// test modification against deletion
- assertEquals(t("<AB=>"), merge("A", "AB", ""));
- assertEquals(t("<=AB>"), merge("A", "", "AB"));
+ assertEquals(t("<AB=>"), merge("A", "AB", "", false));
+ assertEquals(t("<AB|A=>"), merge("A", "AB", "", true));
+
+ assertEquals(t("<=AB>"), merge("A", "", "AB", false));
+ assertEquals(t("<|A=AB>"), merge("A", "", "AB", true));
// test unmodified against deletion
- assertEquals(t(""), merge("AB", "AB", ""));
- assertEquals(t(""), merge("AB", "", "AB"));
+ assertEquals(t(""), merge("AB", "AB", "", false));
+ assertEquals(t(""), merge("AB", "AB", "", true));
+
+ assertEquals(t(""), merge("AB", "", "AB", false));
+ assertEquals(t(""), merge("AB", "", "AB", true));
// test deletion against deletion
- assertEquals(t(""), merge("AB", "", ""));
+ assertEquals(t(""), merge("AB", "", "", false));
+ assertEquals(t(""), merge("AB", "", "", true));
}
- private String merge(String commonBase, String ours, String theirs) throws IOException {
+ private String merge(String commonBase, String ours, String theirs,
+ boolean diff3) throws IOException {
MergeResult r = new MergeAlgorithm().merge(RawTextComparator.DEFAULT,
T(commonBase), T(ours), T(theirs));
ByteArrayOutputStream bo=new ByteArrayOutputStream(50);
- fmt.formatMerge(bo, r, "B", "O", "T", UTF_8);
+ if (diff3) {
+ fmt.formatMergeDiff3(bo, r, "B", "O", "T", UTF_8);
+ } else {
+ fmt.formatMerge(bo, r, "B", "O", "T", UTF_8);
+ }
return new String(bo.toByteArray(), UTF_8);
}
@@ -284,6 +359,9 @@ public class MergeAlgorithmTest {
case '=':
r.append("=======\n");
break;
+ case '|':
+ r.append("||||||| B\n");
+ break;
case '>':
r.append(">>>>>>> T\n");
break;
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java
index 113f3bee82..01f6a3a0a0 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java
@@ -16,76 +16,74 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
-import java.io.IOException;
import java.util.List;
import org.eclipse.jgit.junit.RepositoryTestCase;
-import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.junit.Test;
public class FooterLineTest extends RepositoryTestCase {
@Test
- public void testNoFooters_EmptyBody() throws IOException {
- final RevCommit commit = parse("");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNoFooters_EmptyBody() {
+ String msg = buildMessage("");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
assertNotNull(footers);
assertEquals(0, footers.size());
}
@Test
- public void testNoFooters_NewlineOnlyBody1() throws IOException {
- final RevCommit commit = parse("\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNoFooters_NewlineOnlyBody1() {
+ String msg = buildMessage("\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
assertNotNull(footers);
assertEquals(0, footers.size());
}
@Test
- public void testNoFooters_NewlineOnlyBody5() throws IOException {
- final RevCommit commit = parse("\n\n\n\n\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNoFooters_NewlineOnlyBody5() {
+ String msg = buildMessage("\n\n\n\n\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
assertNotNull(footers);
assertEquals(0, footers.size());
}
@Test
- public void testNoFooters_OneLineBodyNoLF() throws IOException {
- final RevCommit commit = parse("this is a commit");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNoFooters_OneLineBodyNoLF() {
+ String msg = buildMessage("this is a commit");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
assertNotNull(footers);
assertEquals(0, footers.size());
}
@Test
- public void testNoFooters_OneLineBodyWithLF() throws IOException {
- final RevCommit commit = parse("this is a commit\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNoFooters_OneLineBodyWithLF() {
+ String msg = buildMessage("this is a commit\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
assertNotNull(footers);
assertEquals(0, footers.size());
}
@Test
- public void testNoFooters_ShortBodyNoLF() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNoFooters_ShortBodyNoLF() {
+ String msg = buildMessage("subject\n\nbody of commit");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
assertNotNull(footers);
assertEquals(0, footers.size());
}
@Test
- public void testNoFooters_ShortBodyWithLF() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNoFooters_ShortBodyWithLF() {
+ String msg = buildMessage("subject\n\nbody of commit\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
assertNotNull(footers);
assertEquals(0, footers.size());
}
@Test
- public void testSignedOffBy_OneUserNoLF() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n" + "\n"
- + "Signed-off-by: A. U. Thor <a@example.com>");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testSignedOffBy_OneUserNoLF() {
+ String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
+ + "Signed-off-by: A. U. Thor <a@example.com>");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -98,10 +96,10 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testSignedOffBy_OneUserWithLF() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n" + "\n"
- + "Signed-off-by: A. U. Thor <a@example.com>\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testSignedOffBy_OneUserWithLF() {
+ String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
+ + "Signed-off-by: A. U. Thor <a@example.com>\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -114,14 +112,13 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testSignedOffBy_IgnoreWhitespace() throws IOException {
+ public void testSignedOffBy_IgnoreWhitespace() {
// We only ignore leading whitespace on the value, trailing
// is assumed part of the value.
//
- final RevCommit commit = parse("subject\n\nbody of commit\n" + "\n"
- + "Signed-off-by: A. U. Thor <a@example.com> \n");
- final List<FooterLine> footers = commit.getFooterLines();
- FooterLine f;
+ String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
+ + "Signed-off-by: A. U. Thor <a@example.com> \n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg); FooterLine f;
assertNotNull(footers);
assertEquals(1, footers.size());
@@ -133,10 +130,10 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testEmptyValueNoLF() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n" + "\n"
- + "Signed-off-by:");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testEmptyValueNoLF() {
+ String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
+ + "Signed-off-by:");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -149,10 +146,10 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testEmptyValueWithLF() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n" + "\n"
- + "Signed-off-by:\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testEmptyValueWithLF() {
+ String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
+ + "Signed-off-by:\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -165,10 +162,10 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testShortKey() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n" + "\n"
- + "K:V\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testShortKey() {
+ String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
+ + "K:V\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -181,10 +178,10 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testNonDelimtedEmail() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n" + "\n"
- + "Acked-by: re@example.com\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNonDelimtedEmail() {
+ String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
+ + "Acked-by: re@example.com\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -197,10 +194,10 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testNotEmail() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n" + "\n"
- + "Acked-by: Main Tain Er\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testNotEmail() {
+ String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
+ + "Acked-by: Main Tain Er\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -213,15 +210,15 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testSignedOffBy_ManyUsers() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n"
- + "Not-A-Footer-Line: this line must not be read as a footer\n"
- + "\n" // paragraph break, now footers appear in final block
- + "Signed-off-by: A. U. Thor <a@example.com>\n"
- + "CC: <some.mailing.list@example.com>\n"
- + "Acked-by: Some Reviewer <sr@example.com>\n"
- + "Signed-off-by: Main Tain Er <mte@example.com>\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testSignedOffBy_ManyUsers() {
+ String msg = buildMessage("subject\n\nbody of commit\n"
+ + "Not-A-Footer-Line: this line must not be read as a footer\n"
+ + "\n" // paragraph break, now footers appear in final block
+ + "Signed-off-by: A. U. Thor <a@example.com>\n"
+ + "CC: <some.mailing.list@example.com>\n"
+ + "Acked-by: Some Reviewer <sr@example.com>\n"
+ + "Signed-off-by: Main Tain Er <mte@example.com>\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -249,16 +246,16 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testSignedOffBy_SkipNonFooter() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n"
- + "Not-A-Footer-Line: this line must not be read as a footer\n"
- + "\n" // paragraph break, now footers appear in final block
- + "Signed-off-by: A. U. Thor <a@example.com>\n"
- + "CC: <some.mailing.list@example.com>\n"
- + "not really a footer line but we'll skip it anyway\n"
- + "Acked-by: Some Reviewer <sr@example.com>\n"
- + "Signed-off-by: Main Tain Er <mte@example.com>\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testSignedOffBy_SkipNonFooter() {
+ String msg = buildMessage("subject\n\nbody of commit\n"
+ + "Not-A-Footer-Line: this line must not be read as a footer\n"
+ + "\n" // paragraph break, now footers appear in final block
+ + "Signed-off-by: A. U. Thor <a@example.com>\n"
+ + "CC: <some.mailing.list@example.com>\n"
+ + "not really a footer line but we'll skip it anyway\n"
+ + "Acked-by: Some Reviewer <sr@example.com>\n"
+ + "Signed-off-by: Main Tain Er <mte@example.com>\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
FooterLine f;
assertNotNull(footers);
@@ -282,15 +279,16 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testFilterFootersIgnoreCase() throws IOException {
- final RevCommit commit = parse("subject\n\nbody of commit\n"
- + "Not-A-Footer-Line: this line must not be read as a footer\n"
- + "\n" // paragraph break, now footers appear in final block
- + "Signed-Off-By: A. U. Thor <a@example.com>\n"
- + "CC: <some.mailing.list@example.com>\n"
- + "Acked-by: Some Reviewer <sr@example.com>\n"
- + "signed-off-by: Main Tain Er <mte@example.com>\n");
- final List<String> footers = commit.getFooterLines("signed-off-by");
+ public void testFilterFootersIgnoreCase() {
+ String msg = buildMessage("subject\n\nbody of commit\n"
+ + "Not-A-Footer-Line: this line must not be read as a footer\n"
+ + "\n" // paragraph break, now footers appear in final block
+ + "Signed-Off-By: A. U. Thor <a@example.com>\n"
+ + "CC: <some.mailing.list@example.com>\n"
+ + "Acked-by: Some Reviewer <sr@example.com>\n"
+ + "signed-off-by: Main Tain Er <mte@example.com>\n");
+ List<String> footers = FooterLine.getValues(
+ FooterLine.fromMessage(msg), "signed-off-by");
assertNotNull(footers);
assertEquals(2, footers.size());
@@ -300,38 +298,33 @@ public class FooterLineTest extends RepositoryTestCase {
}
@Test
- public void testMatchesBugId() throws IOException {
- final RevCommit commit = parse("this is a commit subject for test\n"
- + "\n" // paragraph break, now footers appear in final block
- + "Simple-Bug-Id: 42\n");
- final List<FooterLine> footers = commit.getFooterLines();
+ public void testMatchesBugId() {
+ String msg = buildMessage("this is a commit subject for test\n"
+ + "\n" // paragraph break, now footers appear in final block
+ + "Simple-Bug-Id: 42\n");
+ List<FooterLine> footers = FooterLine.fromMessage(msg);
assertNotNull(footers);
assertEquals(1, footers.size());
- final FooterLine line = footers.get(0);
+ FooterLine line = footers.get(0);
assertNotNull(line);
assertEquals("Simple-Bug-Id", line.getKey());
assertEquals("42", line.getValue());
- final FooterKey bugid = new FooterKey("Simple-Bug-Id");
+ FooterKey bugid = new FooterKey("Simple-Bug-Id");
assertTrue("matches Simple-Bug-Id", line.matches(bugid));
assertFalse("not Signed-off-by", line.matches(FooterKey.SIGNED_OFF_BY));
assertFalse("not CC", line.matches(FooterKey.CC));
}
- private RevCommit parse(String msg) throws IOException {
- final StringBuilder buf = new StringBuilder();
+ private String buildMessage(String msg) {
+ StringBuilder buf = new StringBuilder();
buf.append("tree " + ObjectId.zeroId().name() + "\n");
buf.append("author A. U. Thor <a@example.com> 1 +0000\n");
buf.append("committer A. U. Thor <a@example.com> 1 +0000\n");
buf.append("\n");
buf.append(msg);
-
- try (RevWalk walk = new RevWalk(db)) {
- RevCommit c = new RevCommit(ObjectId.zeroId());
- c.parseCanonical(walk, Constants.encode(buf.toString()));
- return c;
- }
+ return buf.toString();
}
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java
index 3cc0368943..8215a795b2 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java
@@ -26,6 +26,8 @@ import java.util.Comparator;
import java.util.List;
import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.diff.DiffConfig;
+import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.internal.storage.file.GC;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.ConfigConstants;
@@ -33,6 +35,7 @@ import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.filter.MessageRevFilter;
import org.eclipse.jgit.revwalk.filter.RevFilter;
+import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.treewalk.filter.AndTreeFilter;
import org.eclipse.jgit.treewalk.filter.PathFilter;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
@@ -46,6 +49,7 @@ public class RevWalkCommitGraphTest extends RevWalkTestCase {
public void setUp() throws Exception {
super.setUp();
rw = new RevWalk(db);
+ mockSystemReader.setJGitConfig(new MockConfig());
}
@Test
@@ -167,6 +171,72 @@ public class RevWalkCommitGraphTest extends RevWalkTestCase {
}
@Test
+ public void testChangedPathFilter() throws Exception {
+ RevCommit c1 = commitFile("file1", "1", "master");
+ commitFile("file2", "2", "master");
+ RevCommit c3 = commitFile("file1", "3", "master");
+ RevCommit c4 = commitFile("file2", "4", "master");
+
+ enableAndWriteCommitGraph();
+
+ TreeRevFilter trf = new TreeRevFilter(rw, PathFilter.create("file1"));
+ rw.markStart(rw.lookupCommit(c4));
+ rw.setRevFilter(trf);
+ assertEquals(c3, rw.next());
+ assertEquals(c1, rw.next());
+ assertNull(rw.next());
+
+ // 1 commit that has exactly one parent and matches path
+ assertEquals(1, trf.getChangedPathFilterTruePositive());
+
+ // No false positives
+ assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+ // 2 commits that have exactly one parent and don't match path
+ assertEquals(2, trf.getChangedPathFilterNegative());
+ }
+
+ @Test
+ public void testChangedPathFilterWithFollowFilter() throws Exception {
+ RevCommit c0 = commit(tree());
+ RevCommit c1 = commit(tree(file("file", blob("contents"))), c0);
+ RevCommit c2 = commit(tree(file("file", blob("contents")),
+ file("unrelated", blob("unrelated change"))), c1);
+ RevCommit c3 = commit(tree(file("renamed-file", blob("contents")),
+ file("unrelated", blob("unrelated change"))), c2);
+ RevCommit c4 = commit(
+ tree(file("renamed-file", blob("contents")),
+ file("unrelated", blob("another unrelated change"))),
+ c3);
+ branch(c4, "master");
+
+ enableAndWriteCommitGraph();
+
+ db.getConfig().setString(ConfigConstants.CONFIG_DIFF_SECTION, null,
+ ConfigConstants.CONFIG_KEY_RENAMES, "true");
+
+ TreeRevFilter trf = new TreeRevFilter(rw,
+ new FollowFilter(PathFilter.create("renamed-file"),
+ db.getConfig().get(DiffConfig.KEY)));
+ rw.markStart(rw.lookupCommit(c4));
+ rw.setRevFilter(trf);
+ assertEquals(c3, rw.next());
+ assertEquals(c1, rw.next());
+ assertNull(rw.next());
+
+ // Path "renamed-file" is in c3's bloom filter, and another path "file"
+ // is in c1's bloom filter (we know of "file" because the rev walk
+ // detected that "renamed-file" is a renaming of "file")
+ assertEquals(2, trf.getChangedPathFilterTruePositive());
+
+ // No false positives
+ assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+ // 2 commits that have exactly one parent and don't match path
+ assertEquals(2, trf.getChangedPathFilterNegative());
+ }
+
+ @Test
public void testWalkWithCommitMessageFilter() throws Exception {
RevCommit a = commit();
RevCommit b = commitBuilder().parent(a)
@@ -437,6 +507,8 @@ public class RevWalkCommitGraphTest extends RevWalkTestCase {
ConfigConstants.CONFIG_COMMIT_GRAPH, true);
db.getConfig().setBoolean(ConfigConstants.CONFIG_GC_SECTION, null,
ConfigConstants.CONFIG_KEY_WRITE_COMMIT_GRAPH, true);
+ db.getConfig().setBoolean(ConfigConstants.CONFIG_GC_SECTION, null,
+ ConfigConstants.CONFIG_KEY_WRITE_CHANGED_PATHS, true);
GC gc = new GC(db);
gc.gc().get();
}
@@ -445,4 +517,41 @@ public class RevWalkCommitGraphTest extends RevWalkTestCase {
rw.close();
rw = new RevWalk(db);
}
+
+ private static final class MockConfig extends FileBasedConfig {
+ private MockConfig() {
+ super(null, null);
+ }
+
+ @Override
+ public void load() throws IOException, ConfigInvalidException {
+ // Do nothing
+ }
+
+ @Override
+ public void save() throws IOException {
+ // Do nothing
+ }
+
+ @Override
+ public boolean isOutdated() {
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "MockConfig";
+ }
+
+ @Override
+ public boolean getBoolean(final String section, final String name,
+ final boolean defaultValue) {
+ if (section.equals(ConfigConstants.CONFIG_COMMIT_GRAPH_SECTION)
+ && name.equals(
+ ConfigConstants.CONFIG_KEY_READ_CHANGED_PATHS)) {
+ return true;
+ }
+ return defaultValue;
+ }
+ }
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkFollowFilterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkFollowFilterTest.java
index c62136e64d..5203e3fbea 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkFollowFilterTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkFollowFilterTest.java
@@ -27,9 +27,17 @@ public class RevWalkFollowFilterTest extends RevWalkTestCase {
private static class DiffCollector extends RenameCallback {
List<DiffEntry> diffs = new ArrayList<>();
+ List<RevCommit> commits = new ArrayList<>();
+
@Override
public void renamed(DiffEntry diff) {
+ throw new UnsupportedOperationException("unimplemented");
+ }
+
+ @Override
+ public void renamed(DiffEntry diff, RevCommit commit) {
diffs.add(diff);
+ commits.add(commit);
}
}
@@ -77,6 +85,7 @@ public class RevWalkFollowFilterTest extends RevWalkTestCase {
assertNull(rw.next());
assertRenames("a->b");
+ assertRenameCommits(renameCommit);
}
@Test
@@ -108,6 +117,7 @@ public class RevWalkFollowFilterTest extends RevWalkTestCase {
assertNull(rw.next());
assertRenames("c->a", "b->c", "a->b");
+ assertRenameCommits(renameCommit3, renameCommit2, renameCommit1);
}
/**
@@ -136,6 +146,20 @@ public class RevWalkFollowFilterTest extends RevWalkTestCase {
}
}
+ protected void assertRenameCommits(RevCommit... expectedCommits) {
+ Assert.assertEquals(
+ "Unexpected number of rename commits. Expected: "
+ + expectedCommits.length + ", actual: "
+ + diffCollector.diffs.size(),
+ expectedCommits.length, diffCollector.diffs.size());
+
+ for (int i = 0; i < expectedCommits.length; i++) {
+ RevCommit renameCommit = diffCollector.commits.get(i);
+ Assert.assertNotNull(renameCommit);
+ Assert.assertEquals(expectedCommits[i], renameCommit);
+ }
+ }
+
protected void assertNoRenames() {
Assert.assertEquals("Found unexpected rename/copy diff", 0,
diffCollector.diffs.size());
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/UserConfigFileTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/UserConfigFileTest.java
new file mode 100644
index 0000000000..7d212d540f
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/UserConfigFileTest.java
@@ -0,0 +1,301 @@
+/*
+ * Copyright (C) 2023, Thomas Wolf <twolf@apache.org> and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.storage.file;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.eclipse.jgit.util.FS;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+public class UserConfigFileTest {
+
+ @Rule
+ public TemporaryFolder tmp = new TemporaryFolder();
+
+ @Test
+ public void testParentOnlyLoad() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ }
+
+ @Test
+ public void testLoadBoth() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ Files.writeString(user, "[user]\n\temail = a.u.thor@example.com");
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ }
+
+ @Test
+ public void testOverwriteChild() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ Files.writeString(user, "[user]\n\temail = a.u.thor@example.com");
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ config.setString("user", null, "name", "A U Thor");
+ assertEquals("A U Thor", config.getString("user", null, "name"));
+ config.save();
+ UserConfigFile config2 = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config2.load();
+ assertEquals("A U Thor", config2.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ FileBasedConfig cfg = new FileBasedConfig(null, xdg.toFile(),
+ FS.DETECTED);
+ cfg.load();
+ assertEquals("Archibald Ulysses Thor",
+ cfg.getString("user", null, "name"));
+ assertNull(cfg.getString("user", null, "email"));
+ }
+
+ @Test
+ public void testUnset() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ Files.writeString(user, "[user]\n\temail = a.u.thor@example.com");
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ config.setString("user", null, "name", "A U Thor");
+ assertEquals("A U Thor", config.getString("user", null, "name"));
+ config.unset("user", null, "name");
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ config.save();
+ UserConfigFile config2 = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config2.load();
+ assertEquals("Archibald Ulysses Thor",
+ config2.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ FileBasedConfig cfg = new FileBasedConfig(null, user.toFile(),
+ FS.DETECTED);
+ cfg.load();
+ assertNull(cfg.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ cfg.getString("user", null, "email"));
+ }
+
+ @Test
+ public void testUnsetSection() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ Files.writeString(user, "[user]\n\temail = a.u.thor@example.com");
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ config.unsetSection("user", null);
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ config.save();
+ assertTrue(Files.readString(user).strip().isEmpty());
+ }
+
+ @Test
+ public void testNoChild() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertNull(config.getString("user", null, "email"));
+ config.setString("user", null, "email", "a.u.thor@example.com");
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ config.save();
+ assertFalse(Files.exists(user));
+ UserConfigFile config2 = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config2.load();
+ assertEquals("Archibald Ulysses Thor",
+ config2.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config2.getString("user", null, "email"));
+ }
+
+ @Test
+ public void testNoFiles() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertNull(config.getString("user", null, "name"));
+ assertNull(config.getString("user", null, "email"));
+ config.setString("user", null, "name", "Archibald Ulysses Thor");
+ config.setString("user", null, "email", "a.u.thor@example.com");
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ config.save();
+ assertTrue(Files.exists(user));
+ assertFalse(Files.exists(xdg));
+ UserConfigFile config2 = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config2.load();
+ assertEquals("Archibald Ulysses Thor",
+ config2.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config2.getString("user", null, "email"));
+ }
+
+ @Test
+ public void testSetInXdg() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ config.setString("user", null, "email", "a.u.thor@example.com");
+ config.save();
+ assertFalse(Files.exists(user));
+ FileBasedConfig cfg = new FileBasedConfig(null, xdg.toFile(),
+ FS.DETECTED);
+ cfg.load();
+ assertEquals("Archibald Ulysses Thor",
+ cfg.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ cfg.getString("user", null, "email"));
+ }
+
+ @Test
+ public void testUserConfigCreated() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ Thread.sleep(3000); // Avoid racily clean isOutdated() below.
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ Files.writeString(user,
+ "[user]\n\temail = a.u.thor@example.com\n\tname = A U Thor");
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertTrue(config.isOutdated());
+ config.load();
+ assertEquals("A U Thor", config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ }
+
+ @Test
+ public void testUserConfigDeleted() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ Files.writeString(user,
+ "[user]\n\temail = a.u.thor@example.com\n\tname = A U Thor");
+ Thread.sleep(3000); // Avoid racily clean isOutdated() below.
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("A U Thor", config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ Files.delete(user);
+ assertEquals("A U Thor", config.getString("user", null, "name"));
+ assertEquals("a.u.thor@example.com",
+ config.getString("user", null, "email"));
+ assertTrue(config.isOutdated());
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertNull(config.getString("user", null, "email"));
+ }
+
+ @Test
+ public void testXdgConfigDeleted() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ Thread.sleep(3000); // Avoid racily clean isOutdated() below.
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ Files.delete(xdg);
+ assertEquals("Archibald Ulysses Thor",
+ config.getString("user", null, "name"));
+ assertTrue(config.isOutdated());
+ config.load();
+ assertNull(config.getString("user", null, "name"));
+ }
+
+ @Test
+ public void testXdgConfigDeletedUserConfigExists() throws Exception {
+ Path xdg = tmp.getRoot().toPath().resolve("xdg.cfg");
+ Files.writeString(xdg, "[user]\n\tname = Archibald Ulysses Thor");
+ Path user = tmp.getRoot().toPath().resolve("user.cfg");
+ Files.writeString(user,
+ "[user]\n\temail = a.u.thor@example.com\n\tname = A U Thor");
+ Thread.sleep(3000); // Avoid racily clean isOutdated() below.
+ UserConfigFile config = new UserConfigFile(null, user.toFile(),
+ xdg.toFile(), FS.DETECTED);
+ config.load();
+ assertEquals("A U Thor", config.getString("user", null, "name"));
+ Files.delete(xdg);
+ assertTrue(config.isOutdated());
+ config.load();
+ assertEquals("A U Thor", config.getString("user", null, "name"));
+ }
+
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/HttpAuthTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/HttpAuthTest.java
index 947ca97615..c1ab43eadf 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/HttpAuthTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/HttpAuthTest.java
@@ -160,7 +160,7 @@ public class HttpAuthTest {
String value = header.substring(i + 1).trim();
if (!headerFields.containsKey(key))
- headerFields.put(key, new ArrayList<String>());
+ headerFields.put(key, new ArrayList<>());
List<String> values = headerFields.get(key);
values.add(value);
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/InMemoryPack.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/InMemoryPack.java
new file mode 100644
index 0000000000..cad80ef707
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/InMemoryPack.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2023, Google LLC. and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.transport;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.MessageDigest;
+import java.util.zip.Deflater;
+
+import org.eclipse.jgit.lib.AnyObjectId;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.util.NB;
+import org.eclipse.jgit.util.TemporaryBuffer;
+import org.eclipse.jgit.util.TemporaryBuffer.Heap;
+
+/**
+ * Helper class to create packs for tests.
+ */
+public class InMemoryPack {
+
+ private final Heap tinyPack;
+
+ public InMemoryPack() {
+ this(1024);
+ }
+
+ public InMemoryPack(int size) {
+ this.tinyPack = new TemporaryBuffer.Heap(size);
+ }
+
+ public InMemoryPack header(int cnt)
+ throws IOException {
+ final byte[] hdr = new byte[8];
+ NB.encodeInt32(hdr, 0, 2);
+ NB.encodeInt32(hdr, 4, cnt);
+
+ tinyPack.write(Constants.PACK_SIGNATURE);
+ tinyPack.write(hdr, 0, 8);
+ return this;
+ }
+
+ public InMemoryPack write(int i) throws IOException {
+ tinyPack.write(i);
+ return this;
+ }
+
+ public InMemoryPack deflate(byte[] content)
+ throws IOException {
+ Deflater deflater = new Deflater();
+ byte[] buf = new byte[128];
+ deflater.setInput(content, 0, content.length);
+ deflater.finish();
+ do {
+ final int n = deflater.deflate(buf, 0, buf.length);
+ if (n > 0)
+ tinyPack.write(buf, 0, n);
+ } while (!deflater.finished());
+ return this;
+ }
+
+ public InMemoryPack copyRaw(AnyObjectId o) throws IOException {
+ o.copyRawTo(tinyPack);
+ return this;
+ }
+
+ public InMemoryPack digest() throws IOException {
+ MessageDigest md = Constants.newMessageDigest();
+ md.update(tinyPack.toByteArray());
+ tinyPack.write(md.digest());
+ return this;
+ }
+
+ public InputStream toInputStream() throws IOException {
+ return new ByteArrayInputStream(tinyPack.toByteArray());
+ }
+
+ public byte[] toByteArray() throws IOException {
+ return tinyPack.toByteArray();
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java
index f02428efc9..2fd82e7bdb 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java
@@ -22,12 +22,10 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.security.MessageDigest;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.zip.Deflater;
import org.eclipse.jgit.errors.TooLargeObjectInPackException;
import org.eclipse.jgit.internal.JGitText;
@@ -42,8 +40,6 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevBlob;
-import org.eclipse.jgit.util.NB;
-import org.eclipse.jgit.util.TemporaryBuffer;
import org.eclipse.jgit.util.io.UnionInputStream;
import org.junit.After;
import org.junit.Test;
@@ -193,17 +189,14 @@ public class PackParserTest extends RepositoryTestCase {
a = d.blob("a");
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
-
- packHeader(pack, 1);
-
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(1);
pack.write((Constants.OBJ_REF_DELTA) << 4 | 4);
- a.copyRawTo(pack);
- deflate(pack, new byte[] { 0x1, 0x1, 0x1, 'b' });
+ pack.copyRaw(a);
+ pack.deflate(new byte[] { 0x1, 0x1, 0x1, 'b' });
+ pack.digest();
- digest(pack);
-
- PackParser p = index(new ByteArrayInputStream(pack.toByteArray()));
+ PackParser p = index(pack.toInputStream());
p.setAllowThin(true);
p.parse(NullProgressMonitor.INSTANCE);
}
@@ -216,14 +209,14 @@ public class PackParserTest extends RepositoryTestCase {
assertTrue(db.getObjectDatabase().has(d.blob(data)));
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
- packHeader(pack, 1);
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(1);
pack.write((Constants.OBJ_BLOB) << 4 | 0x80 | 1);
pack.write(1);
- deflate(pack, data);
- digest(pack);
+ pack.deflate(data);
+ pack.digest();
- PackParser p = index(new ByteArrayInputStream(pack.toByteArray()));
+ PackParser p = index(pack.toInputStream());
p.setAllowThin(false);
p.parse(NullProgressMonitor.INSTANCE);
}
@@ -236,16 +229,16 @@ public class PackParserTest extends RepositoryTestCase {
assertTrue(db.getObjectDatabase().has(d.blob(data)));
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
- packHeader(pack, 2);
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(2);
pack.write((Constants.OBJ_BLOB) << 4 | 10); // offset 12
- deflate(pack, data);
+ pack.deflate(data);
pack.write((Constants.OBJ_OFS_DELTA) << 4 | 4); // offset 31
pack.write(19);
- deflate(pack, new byte[] { 0xA, 0xB, 0x1, 'b' });
- digest(pack);
+ pack.deflate(new byte[] { 0xA, 0xB, 0x1, 'b' });
+ pack.digest();
- PackParser p = index(new ByteArrayInputStream(pack.toByteArray()));
+ PackParser p = index(pack.toInputStream());
p.parse(NullProgressMonitor.INSTANCE);
List<PackedObjectInfo> sortedObjectList = p.getSortedObjectList(null);
@@ -275,15 +268,15 @@ public class PackParserTest extends RepositoryTestCase {
a = d.blob("a");
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
- packHeader(pack, 1);
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(1);
pack.write((Constants.OBJ_REF_DELTA) << 4 | 4);
- a.copyRawTo(pack);
- deflate(pack, new byte[] { 0x1, 0x1, 0x1, 'b' });
- digest(pack);
+ pack.copyRaw(a);
+ pack.deflate(new byte[] { 0x1, 0x1, 0x1, 'b' });
+ pack.digest();
PackParser p = index(new UnionInputStream(
- new ByteArrayInputStream(pack.toByteArray()),
+ pack.toInputStream(),
new ByteArrayInputStream(new byte[] { 0x7e })));
p.setAllowThin(true);
p.setCheckEofAfterPackFooter(true);
@@ -305,22 +298,21 @@ public class PackParserTest extends RepositoryTestCase {
d.blob(data);
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
-
- packHeader(pack, 1);
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(1);
pack.write((Constants.OBJ_BLOB) << 4 | 10);
- deflate(pack, data);
- digest(pack);
+ pack.deflate(data);
+ pack.digest();
- PackParser p = index(new ByteArrayInputStream(pack.toByteArray()));
+ PackParser p = index(pack.toInputStream());
p.setMaxObjectSizeLimit(11);
p.parse(NullProgressMonitor.INSTANCE);
- p = index(new ByteArrayInputStream(pack.toByteArray()));
+ p = index(pack.toInputStream());
p.setMaxObjectSizeLimit(10);
p.parse(NullProgressMonitor.INSTANCE);
- p = index(new ByteArrayInputStream(pack.toByteArray()));
+ p = index(pack.toInputStream());
p.setMaxObjectSizeLimit(9);
try {
p.parse(NullProgressMonitor.INSTANCE);
@@ -339,21 +331,20 @@ public class PackParserTest extends RepositoryTestCase {
a = d.blob("a");
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
-
- packHeader(pack, 1);
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(1);
pack.write((Constants.OBJ_REF_DELTA) << 4 | 14);
- a.copyRawTo(pack);
- deflate(pack, new byte[] { 1, 11, 11, 'a', '0', '1', '2', '3', '4',
+ pack.copyRaw(a);
+ pack.deflate(new byte[] { 1, 11, 11, 'a', '0', '1', '2', '3', '4',
'5', '6', '7', '8', '9' });
- digest(pack);
+ pack.digest();
- PackParser p = index(new ByteArrayInputStream(pack.toByteArray()));
+ PackParser p = index(pack.toInputStream());
p.setAllowThin(true);
p.setMaxObjectSizeLimit(14);
p.parse(NullProgressMonitor.INSTANCE);
- p = index(new ByteArrayInputStream(pack.toByteArray()));
+ p = index(pack.toInputStream());
p.setAllowThin(true);
p.setMaxObjectSizeLimit(13);
try {
@@ -373,20 +364,19 @@ public class PackParserTest extends RepositoryTestCase {
a = d.blob("0123456789");
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
-
- packHeader(pack, 1);
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(1);
pack.write((Constants.OBJ_REF_DELTA) << 4 | 4);
- a.copyRawTo(pack);
- deflate(pack, new byte[] { 10, 11, 1, 'a' });
- digest(pack);
+ pack.copyRaw(a);
+ pack.deflate(new byte[] { 10, 11, 1, 'a' });
+ pack.digest();
- PackParser p = index(new ByteArrayInputStream(pack.toByteArray()));
+ PackParser p = index(pack.toInputStream());
p.setAllowThin(true);
p.setMaxObjectSizeLimit(11);
p.parse(NullProgressMonitor.INSTANCE);
- p = index(new ByteArrayInputStream(pack.toByteArray()));
+ p = index(pack.toInputStream());
p.setAllowThin(true);
p.setMaxObjectSizeLimit(10);
try {
@@ -406,12 +396,12 @@ public class PackParserTest extends RepositoryTestCase {
a = d.blob("a");
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
- packHeader(pack, 1);
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(1);
pack.write((Constants.OBJ_REF_DELTA) << 4 | 4);
- a.copyRawTo(pack);
- deflate(pack, new byte[] { 0x1, 0x1, 0x1, 'b' });
- digest(pack);
+ pack.copyRaw(a);
+ pack.deflate(new byte[] { 0x1, 0x1, 0x1, 'b' });
+ pack.digest();
InputStream in = new ByteArrayInputStream(pack.toByteArray()) {
@Override
@@ -447,12 +437,12 @@ public class PackParserTest extends RepositoryTestCase {
a = d.blob("a");
}
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(32*1024);
- packHeader(pack, 1);
+ InMemoryPack pack = new InMemoryPack();
+ pack.header(1);
pack.write((Constants.OBJ_REF_DELTA) << 4 | 4);
- a.copyRawTo(pack);
- deflate(pack, new byte[] { 0x1, 0x1, 0x1, 'b' });
- digest(pack);
+ pack.copyRaw(a);
+ pack.deflate(new byte[] { 0x1, 0x1, 0x1, 'b' });
+ pack.digest();
byte packData[] = pack.toByteArray();
byte streamData[] = new byte[packData.length + 1];
@@ -476,14 +466,14 @@ public class PackParserTest extends RepositoryTestCase {
// Build a pack ~17k
int objects = 900;
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(32 * 1024);
- packHeader(pack, objects);
+ InMemoryPack pack = new InMemoryPack(32 * 1024);
+ pack.header(objects);
for (int i = 0; i < objects; i++) {
pack.write((Constants.OBJ_BLOB) << 4 | 10);
- deflate(pack, data);
+ pack.deflate(data);
}
- digest(pack);
+ pack.digest();
byte packData[] = pack.toByteArray();
byte streamData[] = new byte[packData.length + 1];
@@ -510,8 +500,9 @@ public class PackParserTest extends RepositoryTestCase {
}
int objects = 248;
- TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(32 * 1024);
- packHeader(pack, objects + 1);
+ InMemoryPack pack = new InMemoryPack(32 * 1024);
+ pack.header(objects + 1);
+
int offset = 13;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < offset; i++)
@@ -529,16 +520,16 @@ public class PackParserTest extends RepositoryTestCase {
lenByte |= 1 << 7;
pack.write(lenByte);
}
- deflate(pack, Constants.encode(sb.toString()));
+ pack.deflate(Constants.encode(sb.toString()));
for (int i = 0; i < objects; i++) {
// The last pack header written falls across the 8192 byte boundary
// between [8189:8210]
pack.write((Constants.OBJ_REF_DELTA) << 4 | 4);
- b.copyRawTo(pack);
- deflate(pack, new byte[] { 0x1, 0x1, 0x1, 'b' });
+ pack.copyRaw(b);
+ pack.deflate(new byte[] { 0x1, 0x1, 0x1, 'b' });
}
- digest(pack);
+ pack.digest();
byte packData[] = pack.toByteArray();
byte streamData[] = new byte[packData.length + 1];
@@ -555,36 +546,6 @@ public class PackParserTest extends RepositoryTestCase {
assertEquals(0x7e, in.read());
}
- private static void packHeader(TemporaryBuffer.Heap tinyPack, int cnt)
- throws IOException {
- final byte[] hdr = new byte[8];
- NB.encodeInt32(hdr, 0, 2);
- NB.encodeInt32(hdr, 4, cnt);
-
- tinyPack.write(Constants.PACK_SIGNATURE);
- tinyPack.write(hdr, 0, 8);
- }
-
- private static void deflate(TemporaryBuffer.Heap tinyPack,
- final byte[] content)
- throws IOException {
- final Deflater deflater = new Deflater();
- final byte[] buf = new byte[128];
- deflater.setInput(content, 0, content.length);
- deflater.finish();
- do {
- final int n = deflater.deflate(buf, 0, buf.length);
- if (n > 0)
- tinyPack.write(buf, 0, n);
- } while (!deflater.finished());
- }
-
- private static void digest(TemporaryBuffer.Heap buf) throws IOException {
- MessageDigest md = Constants.newMessageDigest();
- md.update(buf.toByteArray());
- buf.write(md.digest());
- }
-
private ObjectInserter inserter;
@After
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
index 9755ed1b69..f9687f9f82 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
@@ -2168,12 +2168,12 @@ public class UploadPackTest {
/**
* <pre>
* remote:
- * foo <- foofoo <-- branchFoo
- * bar <- barbar <-- branchBar
+ * foo &lt;- foofoo &lt;-- branchFoo
+ * bar &lt;- barbar &lt;-- branchBar
*
* client:
- * foo <-- branchFoo
- * bar <-- branchBar
+ * foo &lt;-- branchFoo
+ * bar &lt;-- branchBar
*
* fetch(branchFoo) should send exactly 1 have (i.e. foo) from branchFoo
* </pre>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/PathSuffixFilterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/PathSuffixFilterTest.java
index 0b5a7356c8..d6f4f18f30 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/PathSuffixFilterTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/PathSuffixFilterTest.java
@@ -53,8 +53,8 @@ public class PathSuffixFilterTest extends RepositoryTestCase {
@Test
public void testEdgeCases() throws IOException {
ObjectId treeId = createTree("abc", "abcd", "bcd", "c");
- assertEquals(new ArrayList<String>(), getMatchingPaths("xbcd", treeId));
- assertEquals(new ArrayList<String>(), getMatchingPaths("abcx", treeId));
+ assertEquals(new ArrayList<>(), getMatchingPaths("xbcd", treeId));
+ assertEquals(new ArrayList<>(), getMatchingPaths("abcx", treeId));
assertEquals(Arrays.asList("abcd"), getMatchingPaths("abcd", treeId));
assertEquals(Arrays.asList("abcd", "bcd"), getMatchingPaths("bcd", treeId));
assertEquals(Arrays.asList("abc", "c"), getMatchingPaths("c", treeId));
diff --git a/org.eclipse.jgit.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.ui/.settings/org.eclipse.jdt.core.prefs
index 0857bc15f2..3a92f0c434 100644
--- a/org.eclipse.jgit.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.ui/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index fd679f96da..90fb486a73 100644
--- a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
@@ -4,14 +4,14 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit.ui
Bundle-SymbolicName: org.eclipse.jgit.ui
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.awtui;version="6.6.2"
-Import-Package: org.eclipse.jgit.errors;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.lib;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.nls;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revplot;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.revwalk;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.transport;version="[6.6.2,6.7.0)",
- org.eclipse.jgit.util;version="[6.6.2,6.7.0)"
+Export-Package: org.eclipse.jgit.awtui;version="6.7.1"
+Import-Package: org.eclipse.jgit.errors;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.lib;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.nls;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revplot;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.revwalk;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.transport;version="[6.7.1,6.8.0)",
+ org.eclipse.jgit.util;version="[6.7.1,6.8.0)"
diff --git a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
index be9bb5d89f..94b8bc58c5 100644
--- a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit.ui - Sources
Bundle-SymbolicName: org.eclipse.jgit.ui.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ui;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ui;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index cdb6f84f33..930fc73e35 100644
--- a/org.eclipse.jgit.ui/pom.xml
+++ b/org.eclipse.jgit.ui/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtAuthenticator.java b/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtAuthenticator.java
index 56655b3b6d..2b078c11ff 100644
--- a/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtAuthenticator.java
+++ b/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtAuthenticator.java
@@ -36,7 +36,6 @@ public class AwtAuthenticator extends CachedAuthenticator {
setDefault(new AwtAuthenticator());
}
- /** {@inheritDoc} */
@Override
protected PasswordAuthentication promptPasswordAuthentication() {
final GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 1, 1,
diff --git a/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java b/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java
index 0403957d66..729f4cb263 100644
--- a/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java
+++ b/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java
@@ -43,13 +43,11 @@ public class AwtCredentialsProvider extends CredentialsProvider {
CredentialsProvider.setDefault(cp);
}
- /** {@inheritDoc} */
@Override
public boolean isInteractive() {
return true;
}
- /** {@inheritDoc} */
@Override
public boolean supports(CredentialItem... items) {
for (CredentialItem i : items) {
@@ -71,7 +69,6 @@ public class AwtCredentialsProvider extends CredentialsProvider {
return true;
}
- /** {@inheritDoc} */
@Override
public boolean get(URIish uri, CredentialItem... items)
throws UnsupportedCredentialItem {
diff --git a/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/CommitGraphPane.java b/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/CommitGraphPane.java
index dcf3c1d314..a266a2fc27 100644
--- a/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/CommitGraphPane.java
+++ b/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/CommitGraphPane.java
@@ -80,7 +80,6 @@ public class CommitGraphPane extends JTable {
return allCommits;
}
- /** {@inheritDoc} */
@Override
public void setModel(TableModel dataModel) {
if (dataModel != null && !(dataModel instanceof CommitTableModel))
@@ -88,7 +87,6 @@ public class CommitGraphPane extends JTable {
super.setModel(dataModel);
}
- /** {@inheritDoc} */
@Override
protected TableModel createDefaultDataModel() {
return new CommitTableModel();
diff --git a/org.eclipse.jgit/.settings/.api_filters b/org.eclipse.jgit/.settings/.api_filters
index a6aff1bf85..277e9ce3a5 100644
--- a/org.eclipse.jgit/.settings/.api_filters
+++ b/org.eclipse.jgit/.settings/.api_filters
@@ -16,37 +16,31 @@
</message_arguments>
</filter>
</resource>
- <resource path="src/org/eclipse/jgit/errors/PackMismatchException.java" type="org.eclipse.jgit.errors.PackMismatchException">
+ <resource path="src/org/eclipse/jgit/lib/ConfigConstants.java" type="org.eclipse.jgit.lib.ConfigConstants">
<filter id="1142947843">
<message_arguments>
- <message_argument value="5.9.1"/>
- <message_argument value="isPermanent()"/>
+ <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.9.1"/>
- <message_argument value="setPermanent(boolean)"/>
+ <message_argument value="5.13.3"/>
+ <message_argument value="CONFIG_REPACK_SECTION"/>
</message_arguments>
</filter>
</resource>
- <resource path="src/org/eclipse/jgit/lib/ConfigConstants.java" type="org.eclipse.jgit.lib.ConfigConstants">
- <filter id="1142947843">
+ <resource path="src/org/eclipse/jgit/lib/Constants.java" type="org.eclipse.jgit.lib.Constants">
+ <filter id="388100214">
<message_arguments>
- <message_argument value="5.13.2"/>
- <message_argument value="CONFIG_KEY_SKIPHASH"/>
+ <message_argument value="org.eclipse.jgit.lib.Constants"/>
+ <message_argument value="COMMIT_GENERATION_NOT_COMPUTED"/>
</message_arguments>
</filter>
- <filter id="1142947843">
+ <filter id="388100214">
<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_argument value="org.eclipse.jgit.lib.Constants"/>
+ <message_argument value="COMMIT_GENERATION_UNKNOWN"/>
</message_arguments>
</filter>
</resource>
@@ -58,14 +52,6 @@
</message_arguments>
</filter>
</resource>
- <resource path="src/org/eclipse/jgit/revwalk/RevCommit.java" type="org.eclipse.jgit.revwalk.RevCommit">
- <filter id="1193279491">
- <message_arguments>
- <message_argument value="6.5.1"/>
- <message_argument value="buffer"/>
- </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>
@@ -73,12 +59,6 @@
<message_argument value="DEFAULT_PACK_KEPT_OBJECTS"/>
</message_arguments>
</filter>
- <filter id="336658481">
- <message_arguments>
- <message_argument value="org.eclipse.jgit.storage.pack.PackConfig"/>
- <message_argument value="DEFAULT_WRITE_REVERSE_INDEX"/>
- </message_arguments>
- </filter>
<filter id="1142947843">
<message_arguments>
<message_argument value="5.13.3"/>
diff --git a/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs
index 2abe9529d3..b27b6c3c7d 100644
--- a/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs
@@ -52,7 +52,7 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
diff --git a/org.eclipse.jgit/BUILD b/org.eclipse.jgit/BUILD
index e806e7d6d0..1e9b7708a0 100644
--- a/org.eclipse.jgit/BUILD
+++ b/org.eclipse.jgit/BUILD
@@ -20,6 +20,7 @@ java_library(
resources = RESOURCES,
deps = [
":insecure_cipher_factory",
+ "//lib:commons-codec",
"//lib:javaewah",
"//lib:slf4j-api",
],
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index bf40cfd7cd..6f0debda99 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -3,12 +3,12 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Automatic-Module-Name: org.eclipse.jgit
Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 6.6.2.qualifier
+Bundle-Version: 6.7.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor
Eclipse-ExtensibleAPI: true
-Export-Package: org.eclipse.jgit.annotations;version="6.6.2",
- org.eclipse.jgit.api;version="6.6.2";
+Export-Package: org.eclipse.jgit.annotations;version="6.7.1",
+ org.eclipse.jgit.api;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.eclipse.jgit.notes,
org.eclipse.jgit.dircache,
@@ -23,18 +23,18 @@ Export-Package: org.eclipse.jgit.annotations;version="6.6.2",
org.eclipse.jgit.revwalk.filter,
org.eclipse.jgit.blame,
org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="6.6.2";
+ org.eclipse.jgit.api.errors;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="6.6.2";
+ org.eclipse.jgit.attributes;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.treewalk",
- org.eclipse.jgit.blame;version="6.6.2";
+ org.eclipse.jgit.blame;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.revwalk,
org.eclipse.jgit.treewalk.filter,
org.eclipse.jgit.diff",
- org.eclipse.jgit.diff;version="6.6.2";
+ org.eclipse.jgit.diff;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.attributes,
org.eclipse.jgit.revwalk,
@@ -42,53 +42,53 @@ Export-Package: org.eclipse.jgit.annotations;version="6.6.2",
org.eclipse.jgit.treewalk.filter,
org.eclipse.jgit.treewalk,
org.eclipse.jgit.util",
- org.eclipse.jgit.dircache;version="6.6.2";
+ org.eclipse.jgit.dircache;version="6.7.1";
uses:="org.eclipse.jgit.events,
org.eclipse.jgit.lib,
org.eclipse.jgit.attributes,
org.eclipse.jgit.treewalk,
org.eclipse.jgit.util",
- org.eclipse.jgit.errors;version="6.6.2";
+ org.eclipse.jgit.errors;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.eclipse.jgit.dircache,
org.eclipse.jgit.lib,
org.eclipse.jgit.internal.storage.pack",
- org.eclipse.jgit.events;version="6.6.2";
+ org.eclipse.jgit.events;version="6.7.1";
uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="6.6.2",
- org.eclipse.jgit.gitrepo;version="6.6.2";
+ org.eclipse.jgit.fnmatch;version="6.7.1",
+ org.eclipse.jgit.gitrepo;version="6.7.1";
uses:="org.xml.sax.helpers,
org.eclipse.jgit.api,
org.eclipse.jgit.lib,
org.eclipse.jgit.revwalk,
org.xml.sax",
- org.eclipse.jgit.gitrepo.internal;version="6.6.2";x-internal:=true,
- org.eclipse.jgit.hooks;version="6.6.2";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.ignore;version="6.6.2",
- org.eclipse.jgit.ignore.internal;version="6.6.2";
+ org.eclipse.jgit.gitrepo.internal;version="6.7.1";x-internal:=true,
+ org.eclipse.jgit.hooks;version="6.7.1";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.ignore;version="6.7.1",
+ org.eclipse.jgit.ignore.internal;version="6.7.1";
x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="6.6.2";
+ org.eclipse.jgit.internal;version="6.7.1";
x-friends:="org.eclipse.jgit.test,
org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.diff;version="6.6.2";
+ org.eclipse.jgit.internal.diff;version="6.7.1";
x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.diffmergetool;version="6.6.2";
+ org.eclipse.jgit.internal.diffmergetool;version="6.7.1";
x-friends:="org.eclipse.jgit.test,
org.eclipse.jgit.pgm.test,
org.eclipse.jgit.pgm,
org.eclipse.egit.ui",
- org.eclipse.jgit.internal.fsck;version="6.6.2";
+ org.eclipse.jgit.internal.fsck;version="6.7.1";
x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.revwalk;version="6.6.2";
+ org.eclipse.jgit.internal.revwalk;version="6.7.1";
x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.commitgraph;version="6.6.2";
+ org.eclipse.jgit.internal.storage.commitgraph;version="6.7.1";
x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.dfs;version="6.6.2";
+ org.eclipse.jgit.internal.storage.dfs;version="6.7.1";
x-friends:="org.eclipse.jgit.test,
org.eclipse.jgit.http.server,
org.eclipse.jgit.http.test,
org.eclipse.jgit.lfs.test",
- org.eclipse.jgit.internal.storage.file;version="6.6.2";
+ org.eclipse.jgit.internal.storage.file;version="6.7.1";
x-friends:="org.eclipse.jgit.test,
org.eclipse.jgit.junit,
org.eclipse.jgit.junit.http,
@@ -97,34 +97,35 @@ Export-Package: org.eclipse.jgit.annotations;version="6.6.2",
org.eclipse.jgit.pgm,
org.eclipse.jgit.pgm.test,
org.eclipse.jgit.ssh.apache",
- org.eclipse.jgit.internal.storage.io;version="6.6.2";
+ org.eclipse.jgit.internal.storage.io;version="6.7.1";
x-friends:="org.eclipse.jgit.junit,
org.eclipse.jgit.test,
org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.memory;version="6.6.2";
+ org.eclipse.jgit.internal.storage.memory;version="6.7.1";
x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.pack;version="6.6.2";
+ org.eclipse.jgit.internal.storage.pack;version="6.7.1";
x-friends:="org.eclipse.jgit.junit,
org.eclipse.jgit.test,
org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftable;version="6.6.2";
+ org.eclipse.jgit.internal.storage.reftable;version="6.7.1";
x-friends:="org.eclipse.jgit.http.test,
org.eclipse.jgit.junit,
org.eclipse.jgit.test,
org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.submodule;version="6.6.2";x-internal:=true,
- org.eclipse.jgit.internal.transport.connectivity;version="6.6.2";
+ org.eclipse.jgit.internal.submodule;version="6.7.1";x-internal:=true,
+ org.eclipse.jgit.internal.transport.connectivity;version="6.7.1";
x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.http;version="6.6.2";
+ org.eclipse.jgit.internal.transport.http;version="6.7.1";
x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.parser;version="6.6.2";
+ org.eclipse.jgit.internal.transport.parser;version="6.7.1";
x-friends:="org.eclipse.jgit.http.server,
org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.ssh;version="6.6.2";
+ org.eclipse.jgit.internal.transport.ssh;version="6.7.1";
x-friends:="org.eclipse.jgit.ssh.apache,
org.eclipse.jgit.ssh.jsch,
org.eclipse.jgit.test",
- org.eclipse.jgit.lib;version="6.6.2";
+ org.eclipse.jgit.internal.util;version="6.7.1";x-internal:=true,
+ org.eclipse.jgit.lib;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.eclipse.jgit.util.sha1,
org.eclipse.jgit.dircache,
@@ -138,12 +139,12 @@ Export-Package: org.eclipse.jgit.annotations;version="6.6.2",
org.eclipse.jgit.util,
org.eclipse.jgit.submodule,
org.eclipse.jgit.util.time",
- org.eclipse.jgit.lib.internal;version="6.6.2";
+ org.eclipse.jgit.lib.internal;version="6.7.1";
x-friends:="org.eclipse.jgit.test,
org.eclipse.jgit.pgm,
org.eclipse.egit.ui",
- org.eclipse.jgit.logging;version="6.6.2",
- org.eclipse.jgit.merge;version="6.6.2";
+ org.eclipse.jgit.logging;version="6.7.1",
+ org.eclipse.jgit.merge;version="6.7.1";
uses:="org.eclipse.jgit.dircache,
org.eclipse.jgit.lib,
org.eclipse.jgit.revwalk,
@@ -152,40 +153,40 @@ Export-Package: org.eclipse.jgit.annotations;version="6.6.2",
org.eclipse.jgit.util,
org.eclipse.jgit.api,
org.eclipse.jgit.attributes",
- org.eclipse.jgit.nls;version="6.6.2",
- org.eclipse.jgit.notes;version="6.6.2";
+ org.eclipse.jgit.nls;version="6.7.1",
+ org.eclipse.jgit.notes;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.revwalk,
org.eclipse.jgit.treewalk,
org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="6.6.2";
+ org.eclipse.jgit.patch;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="6.6.2";
+ org.eclipse.jgit.revplot;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.revwalk",
- org.eclipse.jgit.revwalk;version="6.6.2";
+ org.eclipse.jgit.revwalk;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.diff,
org.eclipse.jgit.treewalk.filter,
org.eclipse.jgit.revwalk.filter,
org.eclipse.jgit.treewalk",
- org.eclipse.jgit.revwalk.filter;version="6.6.2";
+ org.eclipse.jgit.revwalk.filter;version="6.7.1";
uses:="org.eclipse.jgit.revwalk,
org.eclipse.jgit.lib,
org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="6.6.2";
+ org.eclipse.jgit.storage.file;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="6.6.2";
+ org.eclipse.jgit.storage.pack;version="6.7.1";
uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="6.6.2";
+ org.eclipse.jgit.submodule;version="6.7.1";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.diff,
org.eclipse.jgit.treewalk.filter,
org.eclipse.jgit.treewalk,
org.eclipse.jgit.util",
- org.eclipse.jgit.transport;version="6.6.2";
+ org.eclipse.jgit.transport;version="6.7.1";
uses:="javax.crypto,
org.eclipse.jgit.util.io,
org.eclipse.jgit.lib,
@@ -198,21 +199,21 @@ Export-Package: org.eclipse.jgit.annotations;version="6.6.2",
org.eclipse.jgit.transport.resolver,
org.eclipse.jgit.storage.pack,
org.eclipse.jgit.errors",
- org.eclipse.jgit.transport.http;version="6.6.2";
+ org.eclipse.jgit.transport.http;version="6.7.1";
uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="6.6.2";
+ org.eclipse.jgit.transport.resolver;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.eclipse.jgit.lib",
- org.eclipse.jgit.treewalk;version="6.6.2";
+ org.eclipse.jgit.treewalk;version="6.7.1";
uses:="org.eclipse.jgit.dircache,
org.eclipse.jgit.lib,
org.eclipse.jgit.attributes,
org.eclipse.jgit.revwalk,
org.eclipse.jgit.treewalk.filter,
org.eclipse.jgit.util",
- org.eclipse.jgit.treewalk.filter;version="6.6.2";
+ org.eclipse.jgit.treewalk.filter;version="6.7.1";
uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="6.6.2";
+ org.eclipse.jgit.util;version="6.7.1";
uses:="org.eclipse.jgit.transport,
org.eclipse.jgit.hooks,
org.eclipse.jgit.revwalk,
@@ -225,17 +226,18 @@ Export-Package: org.eclipse.jgit.annotations;version="6.6.2",
org.eclipse.jgit.treewalk,
javax.net.ssl,
org.eclipse.jgit.util.time",
- org.eclipse.jgit.util.io;version="6.6.2";
+ org.eclipse.jgit.util.io;version="6.7.1";
uses:="org.eclipse.jgit.attributes,
org.eclipse.jgit.lib,
org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util.sha1;version="6.6.2",
- org.eclipse.jgit.util.time;version="6.6.2"
+ org.eclipse.jgit.util.sha1;version="6.7.1",
+ org.eclipse.jgit.util.time;version="6.7.1"
Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
javax.crypto,
javax.management,
javax.net.ssl,
+ org.apache.commons.codec.digest;version="1.15.0",
org.slf4j;version="[1.7.0,2.0.0)",
org.xml.sax,
org.xml.sax.helpers
diff --git a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
index 152ab2a8d0..5c5f67eec7 100644
--- a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.jgit - Sources
Bundle-SymbolicName: org.eclipse.jgit.source
Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.6.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit;version="6.6.2.qualifier";roots="."
+Bundle-Version: 6.7.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit;version="6.7.1.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index 4d7336d74c..eb9e237d23 100644
--- a/org.eclipse.jgit/pom.xml
+++ b/org.eclipse.jgit/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit</artifactId>
@@ -46,6 +46,12 @@
<artifactId>slf4j-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.16.0</version>
+ </dependency>
+
</dependencies>
<build>
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 eabb0c6fa4..177ceb167a 100644
--- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
+++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -227,6 +227,7 @@ corruptObjectTruncatedInMode=truncated in mode
corruptObjectTruncatedInName=truncated in name
corruptObjectTruncatedInObjectId=truncated in object id
corruptObjectZeroId=entry points to null SHA-1
+corruptReverseIndexChecksumIncorrect=Reverse index checksum incorrect: written as {0} but digest was {1}
corruptUseCnt=close() called when useCnt is already zero for {0}
couldNotGetAdvertisedRef=Remote {0} did not advertise Ref for branch {1}. This Ref may not exist in the remote or may be hidden by permission settings.
couldNotGetRepoStatistics=Could not get repository statistics
@@ -571,7 +572,7 @@ openingConnection=Opening connection
operationCanceled=Operation {0} was canceled
outputHasAlreadyBeenStarted=Output has already been started.
overflowedReftableBlock=Overflowed reftable block
-packChecksumMismatch=Pack checksum mismatch detected for pack file {0}: .pack has {1} whilst .idx has {2}
+packChecksumMismatch=Pack checksum mismatch detected for pack file {0}: {1} has {2} whilst {3} has {4}
packCorruptedWhileWritingToFilesystem=Pack corrupted while writing to filesystem
packedRefsHandleIsStale=packed-refs handle is stale, {0}. retry
packetSizeMustBeAtLeast=packet size {0} must be >= {1}
@@ -694,6 +695,7 @@ searchForReachableBranches=Finding reachable branches
saveFileStoreAttributesFailed=Saving measured FileStore attributes to user config failed
searchForReuse=Finding sources
searchForReuseTimeout=Search for reuse timed out after {0} seconds
+unsupportedObjectIdVersion=Object id version {0} is not supported
searchForSizes=Getting sizes
secondsAgo={0} seconds ago
selectingCommits=Selecting commits
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/AddNoteCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/AddNoteCommand.java
index ceb17fbe25..8805ea2353 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/AddNoteCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/AddNoteCommand.java
@@ -51,7 +51,6 @@ public class AddNoteCommand extends GitCommand<Note> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public Note call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/ApplyCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/ApplyCommand.java
index e612924771..df0f616256 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/ApplyCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/ApplyCommand.java
@@ -37,11 +37,12 @@ public class ApplyCommand extends GitCommand<ApplyResult> {
/**
* Constructs the command.
*
- * @param local
+ * @param repo
+ * the repository this command will be used on
*/
- ApplyCommand(Repository local) {
- super(local);
- if (local == null) {
+ ApplyCommand(Repository repo) {
+ super(repo);
+ if (repo == null) {
throw new NullPointerException(JGitText.get().repositoryIsRequired);
}
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/ArchiveCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/ArchiveCommand.java
index fdf8b80cd4..4efc6a7a46 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/ArchiveCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/ArchiveCommand.java
@@ -389,7 +389,6 @@ public class ArchiveCommand extends GitCommand<OutputStream> {
}
}
- /** {@inheritDoc} */
@Override
public OutputStream call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
index 8edae5a580..2bc14ff72c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
@@ -167,7 +167,6 @@ public class CheckoutCommand extends GitCommand<Ref> {
this.paths = new LinkedList<>();
}
- /** {@inheritDoc} */
@Override
public Ref call() throws GitAPIException, RefAlreadyExistsException,
RefNotFoundException, InvalidRefNameException,
@@ -407,7 +406,9 @@ public class CheckoutCommand extends GitCommand<Ref> {
*
* @return this instance
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.api.errors.RefNotFoundException
+ * if {@code Ref} couldn't be resolved
*/
protected CheckoutCommand checkoutPaths() throws IOException,
RefNotFoundException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java
index 5f8c2b728a..38e795b0eb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java
@@ -399,7 +399,6 @@ public class CherryPickCommand extends GitCommand<CherryPickResult> {
return headName;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java
index 36ca97d694..a4a0c49f45 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java
@@ -113,24 +113,25 @@ public class CleanCommand extends GitCommand<Set<String>> {
}
/**
- * When dryRun is false, deletes the specified path from disk. If dryRun
- * is true, no paths are actually deleted. In both cases, the paths that
- * would have been deleted are added to inFiles and returned.
+ * When dryRun is false, deletes the specified path from disk. If dryRun is
+ * true, no paths are actually deleted. In both cases, the paths that would
+ * have been deleted are added to inFiles and returned.
*
* Paths that are directories are recursively deleted when
- * {@link #directories} is true.
- * Paths that are git repositories are recursively deleted when
- * {@link #directories} and {@link #force} are both true.
+ * {@link #directories} is true. Paths that are git repositories are
+ * recursively deleted when {@link #directories} and {@link #force} are both
+ * true.
*
* @param path
- * The path to be cleaned
+ * The path to be cleaned
* @param inFiles
- * A set of strings representing the files that have been cleaned
- * already, the path to be cleaned will be added to this set
- * before being returned.
+ * A set of strings representing the files that have been cleaned
+ * already, the path to be cleaned will be added to this set
+ * before being returned.
*
* @return a set of strings with the cleaned path added to it
* @throws IOException
+ * if an IO error occurred
*/
private Set<String> cleanPath(String path, Set<String> inFiles)
throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CreateBranchCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CreateBranchCommand.java
index 9e77dd7348..e1efb86cdc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CreateBranchCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CreateBranchCommand.java
@@ -82,7 +82,6 @@ public class CreateBranchCommand extends GitCommand<Ref> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public Ref call() throws GitAPIException, RefAlreadyExistsException,
RefNotFoundException, InvalidRefNameException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteBranchCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteBranchCommand.java
index 3d3ee63568..f1b5d62349 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteBranchCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteBranchCommand.java
@@ -61,7 +61,6 @@ public class DeleteBranchCommand extends GitCommand<List<String>> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public List<String> call() throws GitAPIException,
NotMergedException, CannotDeleteCurrentBranchException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteTagCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteTagCommand.java
index 64d0d94171..92d88aad7d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteTagCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/DeleteTagCommand.java
@@ -48,7 +48,6 @@ public class DeleteTagCommand extends GitCommand<List<String>> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public List<String> call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java
index ab8cd1812a..88d7e91860 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java
@@ -178,7 +178,6 @@ public class GarbageCollectCommand extends GitCommand<Properties> {
return this;
}
- /** {@inheritDoc} */
@Override
public Properties call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
index 3b3e10e7b2..3dc53ec248 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
@@ -68,6 +68,7 @@ public class Git implements AutoCloseable {
* @return a {@link org.eclipse.jgit.api.Git} object for the existing git
* repository
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static Git open(File dir) throws IOException {
return open(dir, FS.DETECTED);
@@ -84,6 +85,7 @@ public class Git implements AutoCloseable {
* @return a {@link org.eclipse.jgit.api.Git} object for the existing git
* repository. Closing this instance will close the repo.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static Git open(File dir, FS fs) throws IOException {
RepositoryCache.FileKey key;
@@ -792,7 +794,6 @@ public class Git implements AutoCloseable {
return repo;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "Git[" + repo + "]"; //$NON-NLS-1$//$NON-NLS-2$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/ListBranchCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/ListBranchCommand.java
index 4b7445fc95..e3c3c89bcb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/ListBranchCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/ListBranchCommand.java
@@ -73,7 +73,6 @@ public class ListBranchCommand extends GitCommand<List<Ref>> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public List<Ref> call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/ListNotesCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/ListNotesCommand.java
index 34955e86f9..9eb52866dc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/ListNotesCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/ListNotesCommand.java
@@ -44,7 +44,6 @@ public class ListNotesCommand extends GitCommand<List<Note>> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public List<Note> call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/ListTagCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/ListTagCommand.java
index 27a5288429..9a4a822b59 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/ListTagCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/ListTagCommand.java
@@ -54,8 +54,11 @@ public class ListTagCommand extends GitCommand<List<Ref>> {
* the specified commit
* @return this command
* @throws IOException
+ * if an IO error occurred
* @throws IncorrectObjectTypeException
+ * if commit has an incorrect object type
* @throws MissingObjectException
+ * if the commit is missing
*
* @since 6.6
*/
@@ -67,7 +70,6 @@ public class ListTagCommand extends GitCommand<List<Ref>> {
return this;
}
- /** {@inheritDoc} */
@Override
public List<Ref> call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
index fa40d93e52..555e351d32 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
@@ -53,13 +53,11 @@ import org.eclipse.jgit.treewalk.filter.TreeFilter;
* </pre>
* <p>
*
- * <p>
* Get commits only for a specific file:
*
* <pre>
* git.log().add(head).addPath(&quot;dir/filename.txt&quot;).call();
* </pre>
- * <p>
*
* @see <a href="http://www.kernel.org/pub/software/scm/git/docs/git-log.html"
* >Git documentation about Log</a>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java
index 7347f63889..ecc3b40fb7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeResult.java
@@ -364,7 +364,6 @@ public class MergeResult {
return base;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java
index e6ab1e6588..cd7c4e9b39 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java
@@ -102,7 +102,6 @@ public class NameRevCommand extends GitCommand<Map<ObjectId, String>> {
};
}
- /** {@inheritDoc} */
@Override
public Map<ObjectId, String> call() throws GitAPIException {
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/PullResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/PullResult.java
index cbb9cc2f78..fdc7f3f333 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/PullResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/PullResult.java
@@ -89,7 +89,6 @@ public class PullResult {
return true;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
index 19fd3bb2c4..859bf93841 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
@@ -86,7 +86,6 @@ import org.eclipse.jgit.util.RawParseUtils;
* supported options and arguments of this command and a {@link #call()} method
* to finally execute the command. Each instance of this class should only be
* used for one invocation of the command (means: one call to {@link #call()})
- * <p>
*
* @see <a
* href="http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html"
@@ -1000,7 +999,9 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
/**
* @return the commit if we had to do a commit, otherwise null
* @throws GitAPIException
+ * if JGit API failed
* @throws IOException
+ * if an IO error occurred
*/
private RevCommit continueRebase() throws GitAPIException, IOException {
// if there are still conflicts, we throw a specific Exception
@@ -1102,7 +1103,9 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
* that can not be parsed as steps
*
* @param numSteps
+ * number of steps to remove
* @throws IOException
+ * if an IO error occurred
*/
private void popSteps(int numSteps) throws IOException {
if (numSteps == 0)
@@ -1297,7 +1300,9 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
* if we can fast-forward to.
* @return the new head, or null
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.api.errors.GitAPIException
+ * if a JGit API exception occurred
*/
public RevCommit tryFastForward(RevCommit newCommit) throws IOException,
GitAPIException {
@@ -1548,6 +1553,7 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
* the name of the upstream branch
* @return {@code this}
* @throws org.eclipse.jgit.api.errors.RefNotFoundException
+ * if {@code upstream} Ref couldn't be resolved
*/
public RebaseCommand setUpstream(String upstream)
throws RefNotFoundException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java
index 826ea518e4..83c0dc2ef2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java
@@ -194,6 +194,7 @@ public class RebaseResult {
* Create <code>RebaseResult</code>
*
* @param status
+ * the overall rebase status
* @param commit
* current commit
* @return the RebaseResult
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RemoveNoteCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RemoveNoteCommand.java
index f4b60adedb..c65cbf160f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RemoveNoteCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RemoveNoteCommand.java
@@ -47,7 +47,6 @@ public class RemoveNoteCommand extends GitCommand<Note> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public Note call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RenameBranchCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RenameBranchCommand.java
index 922cb531de..029f9d02d6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RenameBranchCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RenameBranchCommand.java
@@ -55,7 +55,6 @@ public class RenameBranchCommand extends GitCommand<Ref> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public Ref call() throws GitAPIException, RefNotFoundException, InvalidRefNameException,
RefAlreadyExistsException, DetachedHeadException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/ResetCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/ResetCommand.java
index 87b4acb14c..225c9996cf 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/ResetCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/ResetCommand.java
@@ -436,7 +436,6 @@ public class ResetCommand extends GitCommand<Ref> {
repo.writeMergeCommitMsg(null);
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/ShowNoteCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/ShowNoteCommand.java
index f64cb6b831..7bb9de0ef4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/ShowNoteCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/ShowNoteCommand.java
@@ -44,7 +44,6 @@ public class ShowNoteCommand extends GitCommand<Note> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public Note call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java
index 8171c4c3ae..828a3020f8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java
@@ -43,7 +43,6 @@ public class StashListCommand extends GitCommand<Collection<RevCommit>> {
super(repo);
}
- /** {@inheritDoc} */
@Override
public Collection<RevCommit> call() throws GitAPIException,
InvalidRefNameException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java
index 606d567393..8fb5d60b85 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleAddCommand.java
@@ -66,6 +66,7 @@ public class SubmoduleAddCommand extends
* Set the submodule name
*
* @param name
+ * name of the submodule
* @return this command
* @since 5.1
*/
@@ -117,6 +118,7 @@ public class SubmoduleAddCommand extends
*
* @return true if submodule exists in index, false otherwise
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected boolean submoduleExists() throws IOException {
TreeFilter filter = PathFilter.create(path);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java
index f4b8ac2e07..0aa1515334 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitCommand.java
@@ -61,6 +61,7 @@ public class SubmoduleDeinitCommand
* Constructor of SubmoduleDeinitCommand
*
* @param repo
+ * repository this command works on
*/
public SubmoduleDeinitCommand(Repository repo) {
super(repo);
@@ -69,7 +70,6 @@ public class SubmoduleDeinitCommand
/**
* {@inheritDoc}
- * <p>
*
* @return the set of repositories successfully deinitialized.
* @throws NoSuchSubmoduleException
@@ -135,6 +135,7 @@ public class SubmoduleDeinitCommand
* @param path
* the path to clean
* @throws IOException
+ * if an IO error occurred
*/
private void deinit(String path) throws IOException {
File dir = new File(repo.getWorkTree(), path);
@@ -157,10 +158,14 @@ public class SubmoduleDeinitCommand
* the parent repo's index or HEAD.
*
* @param revWalk
+ * used to walk commit graph
* @param path
+ * path of the submodule
* @return status of the command
* @throws GitAPIException
+ * if JGit API failed
* @throws IOException
+ * if an IO error occurred
*/
private SubmoduleDeinitStatus checkDirty(RevWalk revWalk, String path)
throws GitAPIException, IOException {
@@ -216,6 +221,7 @@ public class SubmoduleDeinitCommand
* @return {@code true} if path exists and is a submodule in index,
* {@code false} otherwise
* @throws IOException
+ * if an IO error occurred
*/
private boolean submoduleExists(String path) throws IOException {
TreeFilter filter = PathFilter.create(path);
@@ -241,6 +247,7 @@ public class SubmoduleDeinitCommand
* else it will refuse to do so.
*
* @param force
+ * execute the command forcefully if there are local modifications
* @return {@code this}
*/
public SubmoduleDeinitCommand setForce(boolean force) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitResult.java
index 8129be4a71..b7d7b66333 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleDeinitResult.java
@@ -25,6 +25,7 @@ public class SubmoduleDeinitResult {
* @param path
* path of the submodule
* @param status
+ * effect of a SubmoduleDeinitCommand's execution
*/
public SubmoduleDeinitResult(String path,
SubmoduleDeinitCommand.SubmoduleDeinitStatus status) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleInitCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleInitCommand.java
index bdceabad37..03b4a000ad 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleInitCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleInitCommand.java
@@ -61,7 +61,6 @@ public class SubmoduleInitCommand extends GitCommand<Collection<String>> {
return this;
}
- /** {@inheritDoc} */
@Override
public Collection<String> call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleStatusCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleStatusCommand.java
index 196ef7b2a9..d5bc0dda98 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleStatusCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleStatusCommand.java
@@ -61,7 +61,6 @@ public class SubmoduleStatusCommand extends
return this;
}
- /** {@inheritDoc} */
@Override
public Map<String, SubmoduleStatus> call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleSyncCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleSyncCommand.java
index b319a1b478..4f3e8512c3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleSyncCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleSyncCommand.java
@@ -70,6 +70,7 @@ public class SubmoduleSyncCommand extends GitCommand<Map<String, String>> {
* a {@link org.eclipse.jgit.lib.Repository} object.
* @return shortened branch name, null on failures
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected String getHeadBranch(Repository subRepo) throws IOException {
Ref head = subRepo.exactRef(Constants.HEAD);
@@ -79,7 +80,6 @@ public class SubmoduleSyncCommand extends GitCommand<Map<String, String>> {
return null;
}
- /** {@inheritDoc} */
@Override
public Map<String, String> call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/TagCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/TagCommand.java
index 58c18b38d1..dd4ba10388 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/TagCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/TagCommand.java
@@ -51,13 +51,11 @@ import org.eclipse.jgit.transport.CredentialsProvider;
* </pre>
* <p>
*
- * <p>
* Create a new unannotated tag for the current commit:
*
* <pre>
* git.tag().setName(&quot;v1.0&quot;).setAnnotated(false).call();
* </pre>
- * <p>
*
* @see <a href="http://www.kernel.org/pub/software/scm/git/docs/git-tag.html"
* >Git documentation about Tag</a>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/TransportCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/TransportCommand.java
index 1af880d792..30f1bc9cc6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/TransportCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/TransportCommand.java
@@ -22,7 +22,9 @@ import org.eclipse.jgit.transport.Transport;
* {@link org.eclipse.jgit.api.TransportConfigCallback}.
*
* @param <C>
+ * concrete type of this {@code GitCommand}
* @param <T>
+ * the return type of the {@code GitCommand}'s {@code call()} method
*/
public abstract class TransportCommand<C extends GitCommand, T> extends
GitCommand<T> {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java
index 3b71373b6e..0224b3dbb3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java
@@ -94,6 +94,7 @@ public class CheckoutConflictException extends GitAPIException {
* Adds a new conflicting path
*
* @param conflictingPath
+ * the new conflicting path
* @return {@code this}
*/
CheckoutConflictException addConflictingPath(String conflictingPath) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attribute.java b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attribute.java
index 470a92eaf5..fe3e22a21f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attribute.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attribute.java
@@ -97,7 +97,6 @@ public final class Attribute {
this(key, State.CUSTOM, value);
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object obj) {
if (this == obj)
@@ -144,7 +143,6 @@ public final class Attribute {
return value;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
final int prime = 31;
@@ -155,7 +153,6 @@ public final class Attribute {
return result;
}
- /** {@inheritDoc} */
@Override
public String toString() {
switch (state) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attributes.java b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attributes.java
index 125ee5961a..08bc1da61e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attributes.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/Attributes.java
@@ -231,7 +231,6 @@ public final class Attributes {
return true;
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder buf = new StringBuilder();
@@ -246,13 +245,11 @@ public final class Attributes {
return buf.toString();
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return map.hashCode();
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object obj) {
if (this == obj)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesHandler.java b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesHandler.java
index 7ec78597fa..d8857f5192 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesHandler.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesHandler.java
@@ -69,6 +69,7 @@ public class AttributesHandler {
* @param treeWalk
* a {@link org.eclipse.jgit.treewalk.TreeWalk}
* @throws java.io.IOException
+ * if an IO error occurred
* @deprecated since 6.1, use {@link #AttributesHandler(TreeWalk, Supplier)}
* instead
*/
@@ -87,6 +88,7 @@ public class AttributesHandler {
* @param attributesTree
* the tree to read .gitattributes from
* @throws java.io.IOException
+ * if an IO error occurred
* @since 6.1
*/
public AttributesHandler(TreeWalk treeWalk,
@@ -128,6 +130,7 @@ public class AttributesHandler {
* current path represented by the
* {@link org.eclipse.jgit.treewalk.TreeWalk}
* @throws java.io.IOException
+ * if an IO error occurred
*/
public Attributes getAttributes() throws IOException {
String entryPath = treeWalk.getPathString();
@@ -206,12 +209,16 @@ public class AttributesHandler {
* @param isDirectory
* true if the target item is a directory.
* @param workingTreeIterator
+ * the working tree iterator
* @param dirCacheIterator
+ * the dircache iterator
* @param otherTree
+ * another tree
* @param result
* that will hold the attributes matching this entry path. This
* method will NOT override any existing entry in attributes.
* @throws IOException
+ * if an IO error occurred
*/
private void mergePerDirectoryEntryAttributes(String entryPath,
int nameRoot, boolean isDirectory,
@@ -357,9 +364,13 @@ public class AttributesHandler {
* </p>
*
* @param treeWalk
+ * used to walk trees
* @param workingTreeIterator
+ * used to walk the working tree
* @param dirCacheIterator
+ * used to walk the dircache
* @param otherTree
+ * another tree
* @return a {@link AttributesNode} of the current entry,
* {@link NullPointerException} otherwise.
* @throws IOException
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesRule.java b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesRule.java
index 73fd587a14..2039191b8c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesRule.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/AttributesRule.java
@@ -187,7 +187,6 @@ public class AttributesRule {
return match;
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/FilterCommandRegistry.java b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/FilterCommandRegistry.java
index 1c9e9d7f71..bbbb437fd2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/attributes/FilterCommandRegistry.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/attributes/FilterCommandRegistry.java
@@ -41,8 +41,8 @@ public class FilterCommandRegistry {
* the factory responsible for creating
* {@link org.eclipse.jgit.attributes.FilterCommand}s for the
* specified name
- * @return the previous factory associated with <tt>commandName</tt>, or
- * <tt>null</tt> if there was no mapping for <tt>commandName</tt>
+ * @return the previous factory associated with {@code commandName}, or
+ * {@code null} if there was no mapping for {@code commandName}
*/
public static FilterCommandFactory register(String filterCommandName,
FilterCommandFactory factory) {
@@ -55,8 +55,8 @@ public class FilterCommandRegistry {
*
* @param filterCommandName
* the FilterCommandFactory's filter command name
- * @return the previous factory associated with <tt>filterCommandName</tt>,
- * or <tt>null</tt> if there was no mapping for <tt>commandName</tt>
+ * @return the previous factory associated with {@code filterCommandName},
+ * or {@code null} if there was no mapping for {@code commandName}
*/
public static FilterCommandFactory unregister(String filterCommandName) {
return filterCommandRegistry.remove(filterCommandName);
@@ -69,7 +69,7 @@ public class FilterCommandRegistry {
*
* @param filterCommandName
* the name for which the registry should be checked
- * @return <code>true</code> if any factory was registered for the name
+ * @return {@code true} if any factory was registered for the name
*/
public static boolean isRegistered(String filterCommandName) {
return filterCommandRegistry.containsKey(filterCommandName);
@@ -107,6 +107,7 @@ public class FilterCommandRegistry {
* @return the command if a command could be created or <code>null</code> if
* there was no factory registered for that name
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static FilterCommand createFilterCommand(String filterCommandName,
Repository db, InputStream in, OutputStream out)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java
index c854b37b84..5e2746cc7c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java
@@ -303,7 +303,6 @@ public class BlameResult {
}
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder r = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java
index ccf99ff5b5..8e2aaecf94 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java
@@ -305,7 +305,6 @@ class Candidate {
}
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/Region.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/Region.java
index 2236eecbfe..c481eb1927 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/Region.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/Region.java
@@ -83,7 +83,6 @@ class Region {
return head;
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder buf = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java
index e8f3f38adb..fafc4fb1ec 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java
@@ -24,7 +24,6 @@ final class ReverseWalk extends RevWalk {
super(repo);
}
- /** {@inheritDoc} */
@Override
public ReverseCommit next() throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -36,7 +35,6 @@ final class ReverseWalk extends RevWalk {
return c;
}
- /** {@inheritDoc} */
@Override
protected RevCommit createCommit(AnyObjectId id) {
return new ReverseCommit(id);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
index 2526cbfae4..7821efd2a6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
@@ -58,6 +58,8 @@ public abstract class DiffAlgorithm {
/**
* Compare two sequences and identify a list of edits between them.
*
+ * @param <S>
+ * type of sequence being compared.
* @param cmp
* the comparator supplying the element equivalence function.
* @param a
@@ -217,6 +219,8 @@ public abstract class DiffAlgorithm {
* method, which invokes this method using
* {@link org.eclipse.jgit.diff.Subsequence}s.
*
+ * @param <S>
+ * type of sequence being compared.
* @param cmp
* the comparator supplying the element equivalence function.
* @param a
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffEntry.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffEntry.java
index f0ce121f73..717d8989ec 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffEntry.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffEntry.java
@@ -457,7 +457,6 @@ public class DiffEntry {
/**
* Whether the mark tree filter with the specified index matched during scan
* or not, see {@link #scan(TreeWalk, boolean, TreeFilter...)}. Example:
- * <p>
*
* <pre>
* TreeFilter filterA = ...;
@@ -506,7 +505,6 @@ public class DiffEntry {
return side == Side.OLD ? getOldId() : getNewId();
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java
index 1a5f74f98a..2f472b5c0a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java
@@ -777,6 +777,7 @@ public class DiffFormatter implements AutoCloseable {
* @param b
* the text B which was compared
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void format(EditList edits, RawText a, RawText b)
throws IOException {
@@ -825,6 +826,7 @@ public class DiffFormatter implements AutoCloseable {
* @param line
* the line number within text
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected void writeContextLine(RawText text, int line)
throws IOException {
@@ -843,6 +845,7 @@ public class DiffFormatter implements AutoCloseable {
* @param line
* the line number within text
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected void writeAddedLine(RawText text, int line)
throws IOException {
@@ -857,6 +860,7 @@ public class DiffFormatter implements AutoCloseable {
* @param line
* the line number within text
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected void writeRemovedLine(RawText text, int line)
throws IOException {
@@ -875,6 +879,7 @@ public class DiffFormatter implements AutoCloseable {
* @param bEndLine
* within second source
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected void writeHunkHeader(int aStartLine, int aEndLine,
int bStartLine, int bEndLine) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java
index 219a187e27..2968dbaa8f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java
@@ -238,13 +238,11 @@ public class Edit {
endB = sEnd;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return beginA ^ endA;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
if (o instanceof Edit) {
@@ -255,7 +253,6 @@ public class Edit {
return false;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/EditList.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/EditList.java
index d40a64099a..85e23e9a92 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/EditList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/EditList.java
@@ -49,7 +49,6 @@ public class EditList extends ArrayList<Edit> {
super(capacity);
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "EditList" + super.toString(); //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequence.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequence.java
index 9cb8e7364b..82ab21c11e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequence.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequence.java
@@ -34,7 +34,6 @@ public final class HashedSequence<S extends Sequence> extends Sequence {
this.hashes = hashes;
}
- /** {@inheritDoc} */
@Override
public int size() {
return base.size();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequenceComparator.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequenceComparator.java
index 0380208565..c7dfd9a18f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequenceComparator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/HashedSequenceComparator.java
@@ -33,7 +33,6 @@ public final class HashedSequenceComparator<S extends Sequence> extends
this.cmp = cmp;
}
- /** {@inheritDoc} */
@Override
public boolean equals(HashedSequence<S> a, int ai, //
HashedSequence<S> b, int bi) {
@@ -41,7 +40,6 @@ public final class HashedSequenceComparator<S extends Sequence> extends
&& cmp.equals(a.base, ai, b.base, bi);
}
- /** {@inheritDoc} */
@Override
public int hash(HashedSequence<S> seq, int ptr) {
return seq.hashes[ptr];
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/HistogramDiff.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/HistogramDiff.java
index 4035a1e48e..bb72e1faed 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/HistogramDiff.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/HistogramDiff.java
@@ -98,7 +98,6 @@ public class HistogramDiff extends LowLevelDiffAlgorithm {
maxChainLength = maxLen;
}
- /** {@inheritDoc} */
@Override
public <S extends Sequence> void diffNonCommon(EditList edits,
HashedSequenceComparator<S> cmp, HashedSequence<S> a,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/LowLevelDiffAlgorithm.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/LowLevelDiffAlgorithm.java
index 7f3c251864..39be43d12d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/LowLevelDiffAlgorithm.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/LowLevelDiffAlgorithm.java
@@ -14,7 +14,6 @@ package org.eclipse.jgit.diff;
* Compares two sequences primarily based upon hash codes.
*/
public abstract class LowLevelDiffAlgorithm extends DiffAlgorithm {
- /** {@inheritDoc} */
@Override
public <S extends Sequence> EditList diffNonCommon(
SequenceComparator<? super S> cmp, S a, S b) {
@@ -40,6 +39,8 @@ public abstract class LowLevelDiffAlgorithm extends DiffAlgorithm {
* method, which invokes this method using
* {@link org.eclipse.jgit.diff.Subsequence}s.
*
+ * @param <S>
+ * type of Sequence compared
* @param edits
* result list to append the region's edits onto.
* @param cmp
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/PatchIdDiffFormatter.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/PatchIdDiffFormatter.java
index 53cd2ea5d7..4343642f9a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/PatchIdDiffFormatter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/PatchIdDiffFormatter.java
@@ -43,14 +43,12 @@ public class PatchIdDiffFormatter extends DiffFormatter {
return ObjectId.fromRaw(digest.digest());
}
- /** {@inheritDoc} */
@Override
protected void writeHunkHeader(int aStartLine, int aEndLine,
int bStartLine, int bEndLine) throws IOException {
// The hunk header is not taken into account for patch id calculation
}
- /** {@inheritDoc} */
@Override
protected void formatIndexLine(OutputStream o, DiffEntry ent)
throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java
index b52803513d..7835582437 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java
@@ -114,7 +114,6 @@ public class RawText extends Sequence {
}
/** @return total number of items in the sequence. */
- /** {@inheritDoc} */
@Override
public int size() {
// The line map is always 2 entries larger than the number of lines in
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextComparator.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextComparator.java
index 0c41b8598b..e06e2f8290 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextComparator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextComparator.java
@@ -227,7 +227,6 @@ public abstract class RawTextComparator extends SequenceComparator<RawText> {
return hashRegion(seq.content, begin, end);
}
- /** {@inheritDoc} */
@Override
public Edit reduceCommonStartEnd(RawText a, RawText b, Edit e) {
// This is a faster exact match based form that tries to improve
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java
index c33f53adde..fd84bc6c87 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java
@@ -713,15 +713,16 @@ public class RenameDetector {
/**
* Find the best match by file path for a given DiffEntry from a list of
- * DiffEntrys. The returned DiffEntry will be of the same type as <src>. If
- * no DiffEntry can be found that has the same type, this method will return
- * null.
+ * DiffEntrys. The returned DiffEntry will be of the same type as
+ * &lt;src&gt;. If no DiffEntry can be found that has the same type, this
+ * method will return null.
*
* @param src
* the DiffEntry to try to find a match for
* @param list
* a list of DiffEntrys to search through
- * @return the DiffEntry from <list> who's file path best matches <src>
+ * @return the DiffEntry from &lt;list&gt; who's file path best matches
+ * &lt;src&gt;
*/
private static DiffEntry bestPathMatch(DiffEntry src, List<DiffEntry> list) {
DiffEntry best = null;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/Subsequence.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/Subsequence.java
index 61f133ca55..878c66b30f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/Subsequence.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/Subsequence.java
@@ -25,6 +25,8 @@ public final class Subsequence<S extends Sequence> extends Sequence {
/**
* Construct a subsequence around the A region/base sequence.
*
+ * @param <S>
+ * type of returned Sequence
* @param a
* the A sequence.
* @param region
@@ -38,6 +40,8 @@ public final class Subsequence<S extends Sequence> extends Sequence {
/**
* Construct a subsequence around the B region/base sequence.
*
+ * @param <S>
+ * type of returned Sequence
* @param b
* the B sequence.
* @param region
@@ -51,6 +55,8 @@ public final class Subsequence<S extends Sequence> extends Sequence {
/**
* Adjust the Edit to reflect positions in the base sequence.
*
+ * @param <S>
+ * type of returned Sequence
* @param e
* edit to adjust in-place. Prior to invocation the indexes are
* in terms of the two subsequences; after invocation the indexes
@@ -72,6 +78,8 @@ public final class Subsequence<S extends Sequence> extends Sequence {
/**
* Adjust the Edits to reflect positions in the base sequence.
*
+ * @param <S>
+ * type of returned Sequence
* @param edits
* edits to adjust in-place. Prior to invocation the indexes are
* in terms of the two subsequences; after invocation the indexes
@@ -116,7 +124,6 @@ public final class Subsequence<S extends Sequence> extends Sequence {
this.size = end - begin;
}
- /** {@inheritDoc} */
@Override
public int size() {
return size;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/SubsequenceComparator.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/SubsequenceComparator.java
index c60945361f..707df59259 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/SubsequenceComparator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/SubsequenceComparator.java
@@ -36,13 +36,11 @@ public final class SubsequenceComparator<S extends Sequence> extends
this.cmp = cmp;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Subsequence<S> a, int ai, Subsequence<S> b, int bi) {
return cmp.equals(a.base, ai + a.begin, b.base, bi + b.begin);
}
- /** {@inheritDoc} */
@Override
public int hash(Subsequence<S> seq, int ptr) {
return cmp.hash(seq.base, ptr + seq.begin);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/BaseDirCacheEditor.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/BaseDirCacheEditor.java
index 86e60e5b73..68296ef330 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/BaseDirCacheEditor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/BaseDirCacheEditor.java
@@ -25,9 +25,11 @@ import org.eclipse.jgit.errors.DirCacheNameConflictException;
* services to applications.
*/
abstract class BaseDirCacheEditor {
+ @SuppressWarnings("doclint:missing")
/** The cache instance this editor updates during {@link #finish()}. */
protected DirCache cache;
+ @SuppressWarnings("doclint:missing")
/**
* Entry table this builder will eventually replace into {@link #cache}.
* <p>
@@ -40,7 +42,7 @@ abstract class BaseDirCacheEditor {
*/
protected DirCacheEntry[] entries;
- /** Total number of valid entries in {@link #entries}. */
+ /** Total number of valid entries in {@link BaseDirCacheEditor#entries}. */
protected int entryCnt;
/**
@@ -137,7 +139,8 @@ abstract class BaseDirCacheEditor {
public abstract void finish();
/**
- * Update the DirCache with the contents of {@link #entries}.
+ * Update the DirCache with the contents of
+ * {@link BaseDirCacheEditor#entries}.
* <p>
* This method should be invoked only during an implementation of
* {@link #finish()}, and only after {@link #entries} is sorted.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java
index e56061223c..34dba0b5be 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java
@@ -429,6 +429,7 @@ public class DirCache {
*
* @return {@code true} if the memory state differs from the index file
* @throws java.io.IOException
+ * if an IO error occurred
*/
public boolean isOutdated() throws IOException {
if (liveFile == null || !liveFile.exists())
@@ -1001,6 +1002,7 @@ public class DirCache {
* Update any smudged entries with information from the working tree.
*
* @throws IOException
+ * if an IO error occurred
*/
private void updateSmudgedEntries() throws IOException {
List<String> paths = new ArrayList<>(128);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuildIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuildIterator.java
index f6e4d360a6..befd8067ab 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuildIterator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuildIterator.java
@@ -74,7 +74,6 @@ public class DirCacheBuildIterator extends DirCacheIterator {
builder = p.builder;
}
- /** {@inheritDoc} */
@Override
public AbstractTreeIterator createSubtreeIterator(ObjectReader reader)
throws IncorrectObjectTypeException, IOException {
@@ -84,7 +83,6 @@ public class DirCacheBuildIterator extends DirCacheIterator {
return new DirCacheBuildIterator(this, currentSubtree);
}
- /** {@inheritDoc} */
@Override
public void skip() throws CorruptObjectException {
if (currentSubtree != null)
@@ -94,7 +92,6 @@ public class DirCacheBuildIterator extends DirCacheIterator {
next(1);
}
- /** {@inheritDoc} */
@Override
public void stopWalk() {
final int cur = ptr;
@@ -103,7 +100,6 @@ public class DirCacheBuildIterator extends DirCacheIterator {
builder.keep(cur, cnt - cur);
}
- /** {@inheritDoc} */
@Override
protected boolean needsStopWalk() {
return ptr < cache.getEntryCount();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuilder.java
index 9fe77f36e8..28d2502005 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheBuilder.java
@@ -186,7 +186,6 @@ public class DirCacheBuilder extends BaseDirCacheEditor {
return e;
}
- /** {@inheritDoc} */
@Override
public void finish() {
if (!sorted)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java
index d54df8d20e..6ae5153c12 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java
@@ -95,7 +95,9 @@ public class DirCacheCheckout {
/**
* @param eolStreamType
+ * how to convert EOL characters during stream conversion
* @param smudgeFilterCommand
+ * command used as smudge filter during checkout
*/
public CheckoutMetadata(EolStreamType eolStreamType,
String smudgeFilterCommand) {
@@ -201,6 +203,7 @@ public class DirCacheCheckout {
* @param workingTree
* an iterator over the repositories Working Tree
* @throws java.io.IOException
+ * if an IO error occurred
*/
public DirCacheCheckout(Repository repo, ObjectId headCommitTree, DirCache dc,
ObjectId mergeCommitTree, WorkingTreeIterator workingTree)
@@ -228,6 +231,7 @@ public class DirCacheCheckout {
* @param mergeCommitTree
* the id of the tree we want to fast-forward to
* @throws java.io.IOException
+ * if an IO error occurred
*/
public DirCacheCheckout(Repository repo, ObjectId headCommitTree,
DirCache dc, ObjectId mergeCommitTree) throws IOException {
@@ -247,6 +251,7 @@ public class DirCacheCheckout {
* @param workingTree
* an iterator over the repositories Working Tree
* @throws java.io.IOException
+ * if an IO error occurred
*/
public DirCacheCheckout(Repository repo, DirCache dc,
ObjectId mergeCommitTree, WorkingTreeIterator workingTree)
@@ -266,6 +271,7 @@ public class DirCacheCheckout {
* @param mergeCommitTree
* the id of the tree of the
* @throws java.io.IOException
+ * if an IO error occurred
*/
public DirCacheCheckout(Repository repo, DirCache dc,
ObjectId mergeCommitTree) throws IOException {
@@ -289,7 +295,9 @@ public class DirCacheCheckout {
* operations.
*
* @throws org.eclipse.jgit.errors.CorruptObjectException
+ * if a corrupt object was found
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void preScanTwoTrees() throws CorruptObjectException, IOException {
removed.clear();
@@ -319,9 +327,13 @@ public class DirCacheCheckout {
* there is no head yet.
*
* @throws org.eclipse.jgit.errors.MissingObjectException
+ * if an object was found missing
* @throws org.eclipse.jgit.errors.IncorrectObjectTypeException
+ * if an object didn't have the expected type
* @throws org.eclipse.jgit.errors.CorruptObjectException
+ * if an object is corrupt
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void prescanOneTree()
throws MissingObjectException, IncorrectObjectTypeException,
@@ -367,6 +379,7 @@ public class DirCacheCheckout {
* @param f
* the working tree
* @throws IOException
+ * if an IO error occurred
*/
void processEntry(CanonicalTreeParser m, DirCacheBuildIterator i,
WorkingTreeIterator f) throws IOException {
@@ -460,6 +473,7 @@ public class DirCacheCheckout {
* successful and the working tree was updated for all other files.
* <code>true</code> is returned when no such problem occurred
* @throws java.io.IOException
+ * if an IO error occurred
*/
public boolean checkout() throws IOException {
try {
@@ -669,9 +683,13 @@ public class DirCacheCheckout {
* Compares whether two pairs of ObjectId and FileMode are equal.
*
* @param id1
+ * id of first object
* @param mode1
+ * mode of first object
* @param id2
+ * id of second object
* @param mode2
+ * mode of second object
* @return <code>true</code> if FileModes and ObjectIds are equal.
* <code>false</code> otherwise
*/
@@ -697,6 +715,7 @@ public class DirCacheCheckout {
* @param f
* the file in the working tree
* @throws IOException
+ * if an IO error occurred
*/
void processEntry(CanonicalTreeParser h, CanonicalTreeParser m,
@@ -1281,6 +1300,7 @@ public class DirCacheCheckout {
* {@link #failOnConflict} is false
*
* @throws CheckoutConflictException
+ * if a conflict occurred during merge checkout
*/
private void cleanUpConflicts() throws CheckoutConflictException {
// TODO: couldn't we delete unsaved worktree content here?
@@ -1294,13 +1314,16 @@ public class DirCacheCheckout {
}
/**
- * Checks whether the subtree starting at a given path differs between Index and
- * workingtree.
+ * Checks whether the subtree starting at a given path differs between Index
+ * and workingtree.
*
* @param path
+ * given subtree path
* @return true if the subtrees differ
* @throws CorruptObjectException
+ * if a corrupt object was found
* @throws IOException
+ * if an IO error occurred
*/
private boolean isModifiedSubtree_IndexWorkingtree(String path)
throws CorruptObjectException, IOException {
@@ -1341,15 +1364,18 @@ public class DirCacheCheckout {
}
/**
- * Checks whether the subtree starting at a given path differs between Index and
- * some tree.
+ * Checks whether the subtree starting at a given path differs between Index
+ * and some tree.
*
* @param path
+ * given path
* @param tree
* the tree to compare
* @return true if the subtrees differ
* @throws CorruptObjectException
+ * if a corrupt object was found
* @throws IOException
+ * if an IO error occurred
*/
private boolean isModifiedSubtree_IndexTree(String path, ObjectId tree)
throws CorruptObjectException, IOException {
@@ -1394,6 +1420,7 @@ public class DirCacheCheckout {
* @param or
* object reader to use for checkout
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.6
* @deprecated since 5.1, use
* {@link #checkoutEntry(Repository, DirCacheEntry, ObjectReader, boolean, CheckoutMetadata, WorkingTreeOptions)}
@@ -1435,6 +1462,7 @@ public class DirCacheCheckout {
* <li>eolStreamType used for stream conversion</li>
* </ul>
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
* @deprecated since 6.3, use
* {@link #checkoutEntry(Repository, DirCacheEntry, ObjectReader, boolean, CheckoutMetadata, WorkingTreeOptions)}
@@ -1479,6 +1507,7 @@ public class DirCacheCheckout {
* {@link WorkingTreeOptions} that are effective; if {@code null}
* they are loaded from the repository config
* @throws java.io.IOException
+ * if an IO error occurred
* @since 6.3
* @deprecated since 6.6.1; use {@link Checkout} instead
*/
@@ -1518,6 +1547,7 @@ public class DirCacheCheckout {
* the output stream the filtered content is written to. The
* caller is responsible to close the stream.
* @throws IOException
+ * if an IO error occurred
*
* @since 5.7
*/
@@ -1573,6 +1603,7 @@ public class DirCacheCheckout {
* the output stream the filtered content is written to. The
* caller is responsible to close the stream.
* @throws IOException
+ * if an IO error occurred
* @since 6.3
*/
public static void getContent(Repository repo, String path,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheEditor.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheEditor.java
index 8c342e267d..b1f4e7db21 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheEditor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheEditor.java
@@ -37,7 +37,6 @@ import org.eclipse.jgit.util.Paths;
* have the editor compute the proper entry indexes necessary to perform an
* efficient in-order update of the index records. This can be easier to use
* than {@link org.eclipse.jgit.dircache.DirCacheBuilder}.
- * <p>
*
* @see DirCacheBuilder
*/
@@ -80,7 +79,6 @@ public class DirCacheEditor extends BaseDirCacheEditor {
edits.add(edit);
}
- /** {@inheritDoc} */
@Override
public boolean commit() throws IOException {
if (edits.isEmpty()) {
@@ -92,7 +90,6 @@ public class DirCacheEditor extends BaseDirCacheEditor {
return super.commit();
}
- /** {@inheritDoc} */
@Override
public void finish() {
if (!edits.isEmpty()) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheIterator.java
index aed1c341f2..9cc34a0f11 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheIterator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheIterator.java
@@ -104,7 +104,6 @@ public class DirCacheIterator extends AbstractTreeIterator {
parseEntry();
}
- /** {@inheritDoc} */
@Override
public AbstractTreeIterator createSubtreeIterator(ObjectReader reader)
throws IncorrectObjectTypeException, IOException {
@@ -114,7 +113,6 @@ public class DirCacheIterator extends AbstractTreeIterator {
return new DirCacheIterator(this, currentSubtree);
}
- /** {@inheritDoc} */
@Override
public EmptyTreeIterator createEmptyTreeIterator() {
final byte[] n = new byte[Math.max(pathLen + 1, DEFAULT_PATH_SIZE)];
@@ -123,7 +121,6 @@ public class DirCacheIterator extends AbstractTreeIterator {
return new EmptyTreeIterator(this, n, pathLen + 1);
}
- /** {@inheritDoc} */
@Override
public boolean hasId() {
if (currentSubtree != null)
@@ -131,7 +128,6 @@ public class DirCacheIterator extends AbstractTreeIterator {
return currentEntry != null;
}
- /** {@inheritDoc} */
@Override
public byte[] idBuffer() {
if (currentSubtree != null)
@@ -141,7 +137,6 @@ public class DirCacheIterator extends AbstractTreeIterator {
return zeroid;
}
- /** {@inheritDoc} */
@Override
public int idOffset() {
if (currentSubtree != null)
@@ -151,7 +146,6 @@ public class DirCacheIterator extends AbstractTreeIterator {
return 0;
}
- /** {@inheritDoc} */
@Override
public void reset() {
if (!first()) {
@@ -164,19 +158,16 @@ public class DirCacheIterator extends AbstractTreeIterator {
}
}
- /** {@inheritDoc} */
@Override
public boolean first() {
return ptr == treeStart;
}
- /** {@inheritDoc} */
@Override
public boolean eof() {
return ptr == treeEnd;
}
- /** {@inheritDoc} */
@Override
public void next(int delta) {
while (--delta >= 0) {
@@ -190,7 +181,6 @@ public class DirCacheIterator extends AbstractTreeIterator {
}
}
- /** {@inheritDoc} */
@Override
public void back(int delta) {
while (--delta >= 0) {
@@ -271,6 +261,7 @@ public class DirCacheIterator extends AbstractTreeIterator {
* @return {@link org.eclipse.jgit.attributes.AttributesNode} for the
* current entry.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.7
*/
public AttributesNode getEntryAttributesNode(ObjectReader reader)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java
index e0c1e93918..2561ae999b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java
@@ -534,7 +534,6 @@ public class DirCacheTree {
return -1;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return getNameString();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/errors/LargeObjectException.java b/org.eclipse.jgit/src/org/eclipse/jgit/errors/LargeObjectException.java
index 4a535619d7..40aa1c3b7c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/errors/LargeObjectException.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/errors/LargeObjectException.java
@@ -84,7 +84,6 @@ public class LargeObjectException extends RuntimeException {
objectId = id.copy();
}
- /** {@inheritDoc} */
@Override
public String getMessage() {
return MessageFormat.format(JGitText.get().largeObjectException,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/errors/RevisionSyntaxException.java b/org.eclipse.jgit/src/org/eclipse/jgit/errors/RevisionSyntaxException.java
index 084d67c02b..83876ef03c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/errors/RevisionSyntaxException.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/errors/RevisionSyntaxException.java
@@ -44,7 +44,6 @@ public class RevisionSyntaxException extends IllegalArgumentException {
this.revstr = revstr;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return super.toString() + ":" + revstr; //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/events/ConfigChangedEvent.java b/org.eclipse.jgit/src/org/eclipse/jgit/events/ConfigChangedEvent.java
index e6342542d0..0c2aa46aa0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/events/ConfigChangedEvent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/events/ConfigChangedEvent.java
@@ -14,13 +14,11 @@ package org.eclipse.jgit.events;
* Describes a change to one or more keys in the configuration.
*/
public class ConfigChangedEvent extends RepositoryEvent<ConfigChangedListener> {
- /** {@inheritDoc} */
@Override
public Class<ConfigChangedListener> getListenerType() {
return ConfigChangedListener.class;
}
- /** {@inheritDoc} */
@Override
public void dispatch(ConfigChangedListener listener) {
listener.onConfigChanged(this);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/events/IndexChangedEvent.java b/org.eclipse.jgit/src/org/eclipse/jgit/events/IndexChangedEvent.java
index f5a6d64b16..64d285aca1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/events/IndexChangedEvent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/events/IndexChangedEvent.java
@@ -36,13 +36,11 @@ public class IndexChangedEvent extends RepositoryEvent<IndexChangedListener> {
return internal;
}
- /** {@inheritDoc} */
@Override
public Class<IndexChangedListener> getListenerType() {
return IndexChangedListener.class;
}
- /** {@inheritDoc} */
@Override
public void dispatch(IndexChangedListener listener) {
listener.onIndexChanged(this);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerHandle.java b/org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerHandle.java
index 44897605db..94d49fd93e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerHandle.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerHandle.java
@@ -35,7 +35,6 @@ public class ListenerHandle {
parent.remove(this);
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerList.java b/org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerList.java
index 476c37c1c3..92a227750f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/events/ListenerList.java
@@ -71,6 +71,8 @@ public class ListenerList {
/**
* Add a listener to the list.
*
+ * @param <T>
+ * type of {@code RepositoryListener}
* @param type
* type of listener being registered.
* @param listener
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/events/RefsChangedEvent.java b/org.eclipse.jgit/src/org/eclipse/jgit/events/RefsChangedEvent.java
index 6f1e8d5d66..9bd1ef0653 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/events/RefsChangedEvent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/events/RefsChangedEvent.java
@@ -14,13 +14,11 @@ package org.eclipse.jgit.events;
* Describes a change to one or more references of a repository.
*/
public class RefsChangedEvent extends RepositoryEvent<RefsChangedListener> {
- /** {@inheritDoc} */
@Override
public Class<RefsChangedListener> getListenerType() {
return RefsChangedListener.class;
}
- /** {@inheritDoc} */
@Override
public void dispatch(RefsChangedListener listener) {
listener.onRefsChanged(this);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/events/RepositoryEvent.java b/org.eclipse.jgit/src/org/eclipse/jgit/events/RepositoryEvent.java
index 81f2e73de2..288074e15f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/events/RepositoryEvent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/events/RepositoryEvent.java
@@ -61,7 +61,6 @@ public abstract class RepositoryEvent<T extends RepositoryListener> {
*/
public abstract void dispatch(T listener);
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/events/WorkingTreeModifiedEvent.java b/org.eclipse.jgit/src/org/eclipse/jgit/events/WorkingTreeModifiedEvent.java
index f9888eae34..c3275153ea 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/events/WorkingTreeModifiedEvent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/events/WorkingTreeModifiedEvent.java
@@ -87,13 +87,11 @@ public class WorkingTreeModifiedEvent
return result;
}
- /** {@inheritDoc} */
@Override
public Class<WorkingTreeModifiedListener> getListenerType() {
return WorkingTreeModifiedListener.class;
}
- /** {@inheritDoc} */
@Override
public void dispatch(WorkingTreeModifiedListener listener) {
listener.onWorkingTreeModified(this);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/AbstractHead.java b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/AbstractHead.java
index d54bf65a27..8668ea9c0e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/AbstractHead.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/AbstractHead.java
@@ -45,7 +45,6 @@ abstract class AbstractHead implements Head {
this.newHeads = newHeads;
}
- /** {@inheritDoc} */
@Override
public List<Head> getNextHeads(char c) {
if (matches(c)) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/CharacterHead.java b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/CharacterHead.java
index faf4ee66c9..92fee62188 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/CharacterHead.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/CharacterHead.java
@@ -24,13 +24,11 @@ final class CharacterHead extends AbstractHead {
this.expectedCharacter = expectedCharacter;
}
- /** {@inheritDoc} */
@Override
protected final boolean matches(char c) {
return c == expectedCharacter;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return String.valueOf(expectedCharacter);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/GroupHead.java b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/GroupHead.java
index 5ffcafc41e..3b240c3b74 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/GroupHead.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/GroupHead.java
@@ -96,7 +96,6 @@ final class GroupHead extends AbstractHead {
}
}
- /** {@inheritDoc} */
@Override
protected final boolean matches(char c) {
for (CharacterPattern pattern : characterClasses) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/LastHead.java b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/LastHead.java
index 6aac3faab3..d4cc850a12 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/LastHead.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/LastHead.java
@@ -22,7 +22,6 @@ final class LastHead implements Head {
// defined because of javadoc and visibility modifier.
}
- /** {@inheritDoc} */
@Override
public List<Head> getNextHeads(char c) {
return FileNameMatcher.EMPTY_HEAD_LIST;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/RestrictedWildCardHead.java b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/RestrictedWildCardHead.java
index 14b6038c44..6b4526f825 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/RestrictedWildCardHead.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/RestrictedWildCardHead.java
@@ -18,13 +18,11 @@ final class RestrictedWildCardHead extends AbstractHead {
this.excludedCharacter = excludedCharacter;
}
- /** {@inheritDoc} */
@Override
protected final boolean matches(char c) {
return c != excludedCharacter;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return isStar() ? "*" : "?"; //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/WildCardHead.java b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/WildCardHead.java
index 3665a70476..62b6f42c52 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/WildCardHead.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/fnmatch/WildCardHead.java
@@ -15,7 +15,6 @@ final class WildCardHead extends AbstractHead {
super(star);
}
- /** {@inheritDoc} */
@Override
protected final boolean matches(char c) {
return true;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java
index aa69a05112..8483b774f9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java
@@ -75,7 +75,9 @@ public class ManifestParser extends DefaultHandler {
* The relative path to the file to read
* @return the {@code InputStream} of the file.
* @throws GitAPIException
+ * a JGit API exception
* @throws IOException
+ * if an IO error occurred
*/
public InputStream readIncludeFile(String path)
throws GitAPIException, IOException;
@@ -134,12 +136,23 @@ public class ManifestParser extends DefaultHandler {
* @param inputStream
* a {@link java.io.InputStream} object.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void read(InputStream inputStream) throws IOException {
xmlInRead++;
final XMLReader xr;
try {
- xr = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
+ SAXParserFactory spf = SAXParserFactory.newInstance();
+ spf.setFeature(
+ "http://xml.org/sax/features/external-general-entities", //$NON-NLS-1$
+ false);
+ spf.setFeature(
+ "http://xml.org/sax/features/external-parameter-entities", //$NON-NLS-1$
+ false);
+ spf.setFeature(
+ "http://apache.org/xml/features/disallow-doctype-decl", //$NON-NLS-1$
+ true);
+ xr = spf.newSAXParser().getXMLReader();
} catch (SAXException | ParserConfigurationException e) {
throw new IOException(JGitText.get().noXMLParserAvailable, e);
}
@@ -151,7 +164,6 @@ public class ManifestParser extends DefaultHandler {
}
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public void startElement(
@@ -239,7 +251,6 @@ public class ManifestParser extends DefaultHandler {
}
}
- /** {@inheritDoc} */
@Override
public void endElement(
String uri,
@@ -251,7 +262,6 @@ public class ManifestParser extends DefaultHandler {
}
}
- /** {@inheritDoc} */
@Override
public void endDocument() throws SAXException {
xmlInRead--;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java
index 6e943e5d36..1ca3ce4501 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java
@@ -105,6 +105,7 @@ public class RepoCommand extends GitCommand<RevCommit> {
* @return the sha1 of the remote repository, or null if the ref does
* not exist.
* @throws GitAPIException
+ * a JGit API exception
*/
@Nullable
public ObjectId sha1(String uri, String ref) throws GitAPIException;
@@ -120,7 +121,10 @@ public class RepoCommand extends GitCommand<RevCommit> {
* The relative path (inside the repo) to the file to read
* @return the file content.
* @throws GitAPIException
+ * If the ref have an invalid or ambiguous name, or it does
+ * not exist in the repository,
* @throws IOException
+ * If the object does not exist or is too large
* @since 3.5
*
* @deprecated Use {@link #readFileWithMode(String, String, String)}
@@ -528,7 +532,6 @@ public class RepoCommand extends GitCommand<RevCommit> {
return this;
}
- /** {@inheritDoc} */
@Override
public RevCommit call() throws GitAPIException {
checkCallable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoProject.java b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoProject.java
index c5ead09523..8deb7386a6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoProject.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoProject.java
@@ -93,6 +93,7 @@ public class RepoProject implements Comparable<RepoProject> {
* Do the copy file action.
*
* @throws IOException
+ * if an IO error occurred
*/
public void copy() throws IOException {
File srcFile = new File(repo.getWorkTree(),
@@ -180,7 +181,7 @@ public class RepoProject implements Comparable<RepoProject> {
*/
public RepoProject(String name, String path, String revision,
String remote, String groupsParam) {
- this(name, path, revision, remote, new HashSet<String>(), null);
+ this(name, path, revision, remote, new HashSet<>(), null);
if (groupsParam != null && groupsParam.length() > 0)
this.setGroups(groupsParam);
}
@@ -418,7 +419,6 @@ public class RepoProject implements Comparable<RepoProject> {
return thatPath.startsWith(getPathWithSlash());
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
if (o instanceof RepoProject) {
@@ -428,13 +428,11 @@ public class RepoProject implements Comparable<RepoProject> {
return false;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return this.getPathWithSlash().hashCode();
}
- /** {@inheritDoc} */
@Override
public int compareTo(RepoProject that) {
return this.getPathWithSlash().compareTo(that.getPathWithSlash());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/CommitMsgHook.java b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/CommitMsgHook.java
index 023aef1c1f..17fdd7e7cb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/CommitMsgHook.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/CommitMsgHook.java
@@ -71,7 +71,6 @@ public class CommitMsgHook extends GitHook<String> {
super(repo, outputStream, errorStream);
}
- /** {@inheritDoc} */
@Override
public String call() throws IOException, AbortedByHookException {
if (commitMessage == null) {
@@ -94,7 +93,6 @@ public class CommitMsgHook extends GitHook<String> {
return getCommitEditMessageFilePath() != null && commitMessage != null;
}
- /** {@inheritDoc} */
@Override
public String getHookName() {
return NAME;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PostCommitHook.java b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PostCommitHook.java
index b9dafcca31..3988ee06ca 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PostCommitHook.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PostCommitHook.java
@@ -61,14 +61,12 @@ public class PostCommitHook extends GitHook<Void> {
super(repo, outputStream, errorStream);
}
- /** {@inheritDoc} */
@Override
public Void call() throws IOException, AbortedByHookException {
doRun();
return null;
}
- /** {@inheritDoc} */
@Override
public String getHookName() {
return NAME;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PreCommitHook.java b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PreCommitHook.java
index 321f476620..b12ea83b99 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PreCommitHook.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PreCommitHook.java
@@ -60,14 +60,12 @@ public class PreCommitHook extends GitHook<Void> {
super(repo, outputStream, errorStream);
}
- /** {@inheritDoc} */
@Override
public Void call() throws IOException, AbortedByHookException {
doRun();
return null;
}
- /** {@inheritDoc} */
@Override
public String getHookName() {
return NAME;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PrePushHook.java b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PrePushHook.java
index 43dbc37f4f..e36312b3da 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PrePushHook.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/PrePushHook.java
@@ -74,13 +74,11 @@ public class PrePushHook extends GitHook<String> {
super(repo, outputStream, errorStream);
}
- /** {@inheritDoc} */
@Override
protected String getStdinArgs() {
return refs;
}
- /** {@inheritDoc} */
@Override
public String call() throws IOException, AbortedByHookException {
if (canRun()) {
@@ -96,7 +94,6 @@ public class PrePushHook extends GitHook<String> {
return true;
}
- /** {@inheritDoc} */
@Override
public String getHookName() {
return NAME;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java
index 9dd565ff0a..b041729e28 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java
@@ -208,7 +208,6 @@ public class FastIgnoreRule {
return matcher == NO_MATCH;
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@@ -221,7 +220,6 @@ public class FastIgnoreRule {
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
final int prime = 31;
@@ -232,7 +230,6 @@ public class FastIgnoreRule {
return result;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object obj) {
if (this == obj)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/IgnoreNode.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/IgnoreNode.java
index 4e7f126a60..33dceb0717 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/IgnoreNode.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/IgnoreNode.java
@@ -190,7 +190,6 @@ public class IgnoreNode {
return null;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return rules.toString();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/AbstractMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/AbstractMatcher.java
index 0737ed8878..a3f365ea0e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/AbstractMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/AbstractMatcher.java
@@ -33,19 +33,16 @@ public abstract class AbstractMatcher implements IMatcher {
this.dirOnly = dirOnly;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return pattern;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return pattern.hashCode();
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object obj) {
if (this == obj)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/LeadingAsteriskMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/LeadingAsteriskMatcher.java
index 73e2ad3977..84376be53e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/LeadingAsteriskMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/LeadingAsteriskMatcher.java
@@ -22,7 +22,6 @@ public class LeadingAsteriskMatcher extends NameMatcher {
"Pattern must have leading asterisk: " + pattern); //$NON-NLS-1$
}
- /** {@inheritDoc} */
@Override
public boolean matches(String segment, int startIncl, int endExcl) {
// faster local access, same as in string.indexOf()
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java
index 39fa74f6ea..4f8e149b4b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java
@@ -38,7 +38,6 @@ public class NameMatcher extends AbstractMatcher {
}
}
- /** {@inheritDoc} */
@Override
public boolean matches(String path, boolean assumeDirectory,
boolean pathMatch) {
@@ -88,7 +87,6 @@ public class NameMatcher extends AbstractMatcher {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean matches(String segment, int startIncl, int endExcl) {
// faster local access, same as in string.indexOf()
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java
index ba77b3dd87..a40568de08 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java
@@ -91,6 +91,7 @@ public class PathMatcher extends AbstractMatcher {
* a boolean.
* @return never null
* @throws org.eclipse.jgit.errors.InvalidPatternException
+ * if pattern is invalid
*/
public static IMatcher createPathMatcher(String pattern,
Character pathSeparator, boolean dirOnly)
@@ -149,7 +150,6 @@ public class PathMatcher extends AbstractMatcher {
}
}
- /** {@inheritDoc} */
@Override
public boolean matches(String path, boolean assumeDirectory,
boolean pathMatch) {
@@ -192,7 +192,6 @@ public class PathMatcher extends AbstractMatcher {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean matches(String segment, int startIncl, int endExcl) {
throw new UnsupportedOperationException(
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java
index fbce08adf4..3305a74af1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java
@@ -232,16 +232,19 @@ public class Strings {
.compile("\\[\\[[.=]\\w+[.=]\\]\\]"); //$NON-NLS-1$
/**
- * Conversion from glob to Java regex following two sources: <li>
- * http://man7.org/linux/man-pages/man7/glob.7.html <li>
- * org.eclipse.jgit.fnmatch.FileNameMatcher.java Seems that there are
+ * Conversion from glob to Java regex following two sources:
+ * <ul>
+ * <li>http://man7.org/linux/man-pages/man7/glob.7.html
+ * <li>org.eclipse.jgit.fnmatch.FileNameMatcher.java Seems that there are
* various ways to define what "glob" can be.
+ * </ul>
*
* @param pattern
* non null pattern
*
* @return Java regex pattern corresponding to given glob pattern
* @throws InvalidPatternException
+ * if pattern is invalid
*/
static Pattern convertGlob(String pattern) throws InvalidPatternException {
if (UNSUPPORTED.matcher(pattern).find())
@@ -419,6 +422,7 @@ public class Strings {
/**
* @param buffer
+ * buffer
* @return zero of the buffer is empty, otherwise the last character from
* buffer
*/
@@ -427,10 +431,13 @@ public class Strings {
}
/**
+ * Lookahead next character after given index in pattern
+ *
* @param pattern
+ * the pattern
* @param i
* current pointer in the pattern
- * @return zero of the index is out of range, otherwise the next character
+ * @return zero if the index is out of range, otherwise the next character
* from given position
*/
private static char lookAhead(String pattern, int i) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/TrailingAsteriskMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/TrailingAsteriskMatcher.java
index 7fa076b855..1f1c223270 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/TrailingAsteriskMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/TrailingAsteriskMatcher.java
@@ -22,7 +22,6 @@ public class TrailingAsteriskMatcher extends NameMatcher {
"Pattern must have trailing asterisk: " + pattern); //$NON-NLS-1$
}
- /** {@inheritDoc} */
@Override
public boolean matches(String segment, int startIncl, int endExcl) {
// faster local access, same as in string.indexOf()
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildCardMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildCardMatcher.java
index 76a88641c9..d976f6ea5b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildCardMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildCardMatcher.java
@@ -31,7 +31,6 @@ public class WildCardMatcher extends NameMatcher {
p = convertGlob(subPattern);
}
- /** {@inheritDoc} */
@Override
public boolean matches(String segment, int startIncl, int endExcl) {
return p.matcher(segment.substring(startIncl, endExcl)).matches();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildMatcher.java
index 1baa9abf19..606b585cdf 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/WildMatcher.java
@@ -26,7 +26,6 @@ public final class WildMatcher extends AbstractMatcher {
super(WILDMATCH, dirOnly);
}
- /** {@inheritDoc} */
@Override
public final boolean matches(String path, boolean assumeDirectory,
boolean pathMatch) {
@@ -34,7 +33,6 @@ public final class WildMatcher extends AbstractMatcher {
|| (!pathMatch && isSubdirectory(path));
}
- /** {@inheritDoc} */
@Override
public final boolean matches(String segment, int startIncl, int endExcl) {
return true;
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 1d5a2e1f6b..02af5b4d81 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -256,6 +256,7 @@ public class JGitText extends TranslationBundle {
/***/ public String corruptObjectTruncatedInName;
/***/ public String corruptObjectTruncatedInObjectId;
/***/ public String corruptObjectZeroId;
+ /***/ public String corruptReverseIndexChecksumIncorrect;
/***/ public String corruptPack;
/***/ public String corruptUseCnt;
/***/ public String couldNotFindTabInLine;
@@ -871,6 +872,7 @@ public class JGitText extends TranslationBundle {
/***/ public String unsupportedEncryptionVersion;
/***/ public String unsupportedGC;
/***/ public String unsupportedMark;
+ /***/ public String unsupportedObjectIdVersion;
/***/ public String unsupportedOperationNotAddAtEnd;
/***/ public String unsupportedPackIndexVersion;
/***/ public String unsupportedPackReverseIndexVersion;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diff/FilteredRenameDetector.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diff/FilteredRenameDetector.java
index d65624fc6a..ec4049a63e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diff/FilteredRenameDetector.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diff/FilteredRenameDetector.java
@@ -54,6 +54,7 @@ public class FilteredRenameDetector {
* Filter out changes that didn't affect this path.
* @return The subset of changes that affect only the filtered path.
* @throws IOException
+ * if an IO error occurred
*/
public List<DiffEntry> compute(List<DiffEntry> diffs,
PathFilter pathFilter) throws IOException {
@@ -73,6 +74,7 @@ public class FilteredRenameDetector {
* Filter out changes that didn't affect these paths.
* @return The subset of changes that affect only the filtered paths.
* @throws IOException
+ * if an IO error occurred
* @see RenameDetector#compute()
*/
public List<DiffEntry> compute(List<DiffEntry> changes,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/CommandExecutor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/CommandExecutor.java
index ebef5247e6..3a729fb95f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/CommandExecutor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/CommandExecutor.java
@@ -62,8 +62,11 @@ public class CommandExecutor {
* the environment
* @return the execution result
* @throws ToolException
+ * if a tool raised an error
* @throws InterruptedException
+ * if thread was interrupted
* @throws IOException
+ * if an IO error occurred
*/
public ExecutionResult run(String command, File workingDir,
Map<String, String> env)
@@ -109,8 +112,11 @@ public class CommandExecutor {
* the environment
* @return the execution result
* @throws ToolException
+ * if a tool raised an error
* @throws InterruptedException
+ * if thread was interrupted
* @throws IOException
+ * if an IO error occurred
*/
public boolean checkExecutable(String path, File workingDir,
Map<String, String> env)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/DiffTools.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/DiffTools.java
index d0034df3bc..6a67bf3a1a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/DiffTools.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/DiffTools.java
@@ -172,6 +172,7 @@ public class DiffTools {
* the "trust exit code" option
* @return the execution result from tool
* @throws ToolException
+ * when the tool fails
*/
public ExecutionResult compare(FileElement localFile,
FileElement remoteFile, ExternalDiffTool tool,
@@ -244,6 +245,7 @@ public class DiffTools {
* path to the node in repository to parse git attributes for
* @return name of the difftool if set
* @throws ToolException
+ * when the tool failed
*/
public Optional<String> getExternalToolFromAttributes(final String path)
throws ToolException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/ExternalToolUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/ExternalToolUtils.java
index b2dd846d70..367107d0e8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/ExternalToolUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/ExternalToolUtils.java
@@ -57,6 +57,7 @@ public class ExternalToolUtils {
* the base file (can be null)
* @return the prepared (with replaced variables) command string
* @throws IOException
+ * if an IO error occurred
*/
public static String prepareCommand(String command, FileElement localFile,
FileElement remoteFile, FileElement mergedFile,
@@ -91,6 +92,7 @@ public class ExternalToolUtils {
* the base file (can be null)
* @return the environment map with variables and values (file paths)
* @throws IOException
+ * if an IO error occurred
*/
public static Map<String, String> prepareEnvironment(File gitDir,
FileElement localFile, FileElement remoteFile,
@@ -209,6 +211,7 @@ public class ExternalToolUtils {
* config key name for the tool
* @return attribute value for the given tool key if set
* @throws ToolException
+ * if the tool failed
*/
public static Optional<String> getExternalToolFromAttributes(
final Repository repository, final String path,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/FileElement.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/FileElement.java
index ba8ca54c58..0061e3f878 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/FileElement.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/FileElement.java
@@ -138,6 +138,7 @@ public class FileElement {
*
* @return the object stream
* @throws IOException
+ * if an IO error occurred
*/
public File getFile() throws IOException {
// if we have already temp file and no stream
@@ -179,6 +180,7 @@ public class FileElement {
* temporary directory is used
* @return temporary file in directory or in the system temporary directory
* @throws IOException
+ * if an IO error occurred
*/
public File createTempFile(File directory) throws IOException {
if (tempFile == null) {
@@ -204,6 +206,7 @@ public class FileElement {
* the input string
* @return the replaced input string
* @throws IOException
+ * if an IO error occurred
*/
public String replaceVariable(String input) throws IOException {
return input.replace("$" + type.name(), getFile().getPath()); //$NON-NLS-1$
@@ -215,6 +218,7 @@ public class FileElement {
* @param env
* the environment where this element should be added
* @throws IOException
+ * if an IO error occurred
*/
public void addToEnv(Map<String, String> env) throws IOException {
env.put(type.name(), getFile().getPath());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/MergeTools.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/MergeTools.java
index b903201264..0da58e4a42 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/MergeTools.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/MergeTools.java
@@ -184,6 +184,7 @@ public class MergeTools {
* the selected tool
* @return the execution result from tool
* @throws ToolException
+ * if the tool failed
*/
public ExecutionResult merge(FileElement localFile, FileElement remoteFile,
FileElement mergedFile, FileElement baseFile, File tempDir,
@@ -254,6 +255,7 @@ public class MergeTools {
* @return the created temporary directory if (mergetol.writeToTemp == true)
* or null if not configured or false.
* @throws IOException
+ * if an IO error occurred
*/
public File createTempDirectory() throws IOException {
return config.isWriteToTemp()
@@ -305,6 +307,7 @@ public class MergeTools {
* path to the node in repository to parse git attributes for
* @return name of the difftool if set
* @throws ToolException
+ * if the tool failed
*/
public Optional<String> getExternalToolFromAttributes(final String path)
throws ToolException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/PreDefinedDiffTool.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/PreDefinedDiffTool.java
index e1169a2d60..c1d69b4f11 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/PreDefinedDiffTool.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/PreDefinedDiffTool.java
@@ -43,6 +43,7 @@ public class PreDefinedDiffTool extends UserDefinedDiffTool {
/**
* @param path
+ * path string
*/
@Override
public void setPath(String path) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/UserDefinedMergeTool.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/UserDefinedMergeTool.java
index 1dd2f0d793..17d5b0b673 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/UserDefinedMergeTool.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/UserDefinedMergeTool.java
@@ -59,7 +59,7 @@ public class UserDefinedMergeTool extends UserDefinedDiffTool
/**
* @param withBase
* not used, because user-defined merge tool can only define one
- * cmd -> it must handle with and without base present (empty)
+ * cmd -&gt; it must handle with and without base present (empty)
* @return the tool command
*/
@Override
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/fsck/FsckPackParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/fsck/FsckPackParser.java
index 3b94984561..795f4404e8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/fsck/FsckPackParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/fsck/FsckPackParser.java
@@ -66,7 +66,6 @@ public class FsckPackParser extends PackParser {
this.blockSize = channel.blockSize() > 0 ? channel.blockSize() : 65536;
}
- /** {@inheritDoc} */
@Override
protected void onPackHeader(long objCnt) throws IOException {
if (expectedObjectCount >= 0) {
@@ -78,48 +77,41 @@ public class FsckPackParser extends PackParser {
}
}
- /** {@inheritDoc} */
@Override
protected void onBeginWholeObject(long streamPosition, int type,
long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected void onObjectHeader(Source src, byte[] raw, int pos, int len)
throws IOException {
crc.update(raw, pos, len);
}
- /** {@inheritDoc} */
@Override
protected void onObjectData(Source src, byte[] raw, int pos, int len)
throws IOException {
crc.update(raw, pos, len);
}
- /** {@inheritDoc} */
@Override
protected void onEndWholeObject(PackedObjectInfo info) throws IOException {
info.setCRC((int) crc.getValue());
}
- /** {@inheritDoc} */
@Override
protected void onBeginOfsDelta(long deltaStreamPosition,
long baseStreamPosition, long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected void onBeginRefDelta(long deltaStreamPosition, AnyObjectId baseId,
long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected UnresolvedDelta onEndDelta() throws IOException {
UnresolvedDelta delta = new UnresolvedDelta();
@@ -127,14 +119,12 @@ public class FsckPackParser extends PackParser {
return delta;
}
- /** {@inheritDoc} */
@Override
protected void onInflatedObjectData(PackedObjectInfo obj, int typeCode,
byte[] data) throws IOException {
// FsckPackParser ignores this event.
}
- /** {@inheritDoc} */
@Override
protected void verifySafeObject(final AnyObjectId id, final int type,
final byte[] data) {
@@ -146,13 +136,11 @@ public class FsckPackParser extends PackParser {
}
}
- /** {@inheritDoc} */
@Override
protected void onPackFooter(byte[] hash) throws IOException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
protected boolean onAppendBase(int typeCode, byte[] data,
PackedObjectInfo info) throws IOException {
@@ -160,13 +148,11 @@ public class FsckPackParser extends PackParser {
return false;
}
- /** {@inheritDoc} */
@Override
protected void onEndThinPack() throws IOException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
protected ObjectTypeAndSize seekDatabase(PackedObjectInfo obj,
ObjectTypeAndSize info) throws IOException {
@@ -175,7 +161,6 @@ public class FsckPackParser extends PackParser {
return readObjectHeader(info);
}
- /** {@inheritDoc} */
@Override
protected ObjectTypeAndSize seekDatabase(UnresolvedDelta delta,
ObjectTypeAndSize info) throws IOException {
@@ -184,7 +169,6 @@ public class FsckPackParser extends PackParser {
return readObjectHeader(info);
}
- /** {@inheritDoc} */
@Override
protected int readDatabase(byte[] dst, int pos, int cnt)
throws IOException {
@@ -229,13 +213,11 @@ public class FsckPackParser extends PackParser {
return buf.array();
}
- /** {@inheritDoc} */
@Override
protected boolean checkCRC(int oldCRC) {
return oldCRC == (int) crc.getValue();
}
- /** {@inheritDoc} */
@Override
protected void onStoreStream(byte[] raw, int pos, int len)
throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapFilter.java
index 86d4722000..84f1cb968a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapFilter.java
@@ -40,7 +40,6 @@ public class AddToBitmapFilter extends RevFilter {
this.bitmap = bitmap;
}
- /** {@inheritDoc} */
@Override
public final boolean include(RevWalk walker, RevCommit cmit) {
Bitmap visitedBitmap;
@@ -61,13 +60,11 @@ public class AddToBitmapFilter extends RevFilter {
return false;
}
- /** {@inheritDoc} */
@Override
public final RevFilter clone() {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public final boolean requiresCommitBody() {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapWithCacheFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapWithCacheFilter.java
index d7ccadfbe7..a95432ce73 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapWithCacheFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddToBitmapWithCacheFilter.java
@@ -53,7 +53,6 @@ public class AddToBitmapWithCacheFilter extends RevFilter {
this.bitmap = bitmap;
}
- /** {@inheritDoc} */
@Override
public final boolean include(RevWalk rw, RevCommit c) {
Bitmap visitedBitmap;
@@ -76,13 +75,11 @@ public class AddToBitmapWithCacheFilter extends RevFilter {
return false;
}
- /** {@inheritDoc} */
@Override
public final RevFilter clone() {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public final boolean requiresCommitBody() {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddUnseenToBitmapFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddUnseenToBitmapFilter.java
index da9f9d031e..5ac267e789 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddUnseenToBitmapFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/AddUnseenToBitmapFilter.java
@@ -48,7 +48,6 @@ public class AddUnseenToBitmapFilter extends RevFilter {
this.bitmap = bitmap;
}
- /** {@inheritDoc} */
@Override
public final boolean include(RevWalk walker, RevCommit cmit) {
Bitmap visitedBitmap;
@@ -69,13 +68,11 @@ public class AddUnseenToBitmapFilter extends RevFilter {
return false;
}
- /** {@inheritDoc} */
@Override
public final RevFilter clone() {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public final boolean requiresCommitBody() {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/BitmappedReachabilityChecker.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/BitmappedReachabilityChecker.java
index 37721ad1ea..f5f51e4830 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/BitmappedReachabilityChecker.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/revwalk/BitmappedReachabilityChecker.java
@@ -119,7 +119,6 @@ public class BitmappedReachabilityChecker implements ReachabilityChecker {
this.reached = repoBitmaps.newBitmapBuilder();
}
- /** {@inheritDoc} */
@Override
public final boolean include(RevWalk walker, RevCommit cmit) {
Bitmap commitBitmap;
@@ -149,13 +148,11 @@ public class BitmappedReachabilityChecker implements ReachabilityChecker {
}
}
- /** {@inheritDoc} */
@Override
public final RevFilter clone() {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public final boolean requiresCommitBody() {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/ChangedPathFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/ChangedPathFilter.java
new file mode 100644
index 0000000000..53d921e8f8
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/ChangedPathFilter.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2023, Google LLC
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.internal.storage.commitgraph;
+
+import java.io.ByteArrayOutputStream;
+import java.nio.ByteBuffer;
+import java.util.Set;
+
+import org.apache.commons.codec.digest.MurmurHash3;
+
+/**
+ * A changed path filter for a commit.
+ *
+ * @since 6.7
+ */
+public class ChangedPathFilter {
+ /**
+ * The number of times a path is hashed, as described in man
+ * gitformat-commit-graph(5). The value of this constant is the only value
+ * JGit currently supports.
+ */
+ public static final int PATH_HASH_COUNT = 7;
+
+ /**
+ * The minimum bits per entry, as described in man
+ * gitformat-commit-graph(5). The value of this constant is the only value
+ * JGit currently supports.
+ */
+ public static final int BITS_PER_ENTRY = 10;
+
+ /**
+ * Seed value as described in man gitformat-commit-graph(5).
+ */
+ private static final int SEED1 = 0x293ae76f;
+
+ /**
+ * Seed value as described in man gitformat-commit-graph(5).
+ */
+ private static final int SEED2 = 0x7e646e2c;
+
+ /**
+ * A filter that matches every path.
+ */
+ public static final ChangedPathFilter FULL = new ChangedPathFilter(
+ new byte[] { (byte) 0xff }, 0, 1);
+
+ private static final ChangedPathFilter EMPTY = new ChangedPathFilter(
+ new byte[] { (byte) 0 }, 0, 1);
+
+ private final byte[] data;
+
+ private final int offset;
+
+ private final int length;
+
+ /**
+ * Constructs a changed path filter.
+ *
+ * @param data
+ * data (possibly read from a commit graph file)
+ * @param offset
+ * offset into data
+ * @param length
+ * length of data
+ */
+ private ChangedPathFilter(byte[] data, int offset, int length) {
+ this.data = data;
+ this.offset = offset;
+ this.length = length;
+ }
+
+ /**
+ * Returns a filter that matches all given paths.
+ * <p>
+ * Because of the nature of Bloom filters, this filter may also match paths
+ * not in the given set.
+ *
+ * @param paths
+ * the paths that the filter must match
+ * @return the corresponding filter
+ */
+ public static ChangedPathFilter fromPaths(Set<ByteBuffer> paths) {
+ if (paths.isEmpty()) {
+ return EMPTY;
+ }
+ byte[] bloom = new byte[-Math
+ .floorDiv(-paths.size() * ChangedPathFilter.BITS_PER_ENTRY, 8)];
+ for (ByteBuffer path : paths) {
+ add(bloom, path.array(), path.position(),
+ path.limit() - path.position());
+ }
+ return new ChangedPathFilter(bloom, 0, bloom.length);
+ }
+
+ /**
+ * Returns a filter read from a file.
+ *
+ * @param data
+ * data (read from a commit graph file)
+ * @param offset
+ * offset into data
+ * @param length
+ * length of data
+ *
+ * @return the corresponding filter
+ */
+ public static ChangedPathFilter fromFile(byte[] data, int offset,
+ int length) {
+ return new ChangedPathFilter(data, offset, length);
+ }
+
+ private static void add(byte[] changedPathFilterData, byte[] path,
+ int offset, int length) {
+
+ int hash0 = MurmurHash3.hash32x86(path, offset, length, SEED1);
+ int hash1 = MurmurHash3.hash32x86(path, offset, length, SEED2);
+ for (int i = 0; i < PATH_HASH_COUNT; i++) {
+ int pos = Integer.remainderUnsigned(hash0 + i * hash1,
+ changedPathFilterData.length * 8);
+ changedPathFilterData[pos / 8] |= (byte) (1 << (pos % 8));
+ }
+ }
+
+ /**
+ * Checks if this changed path filter could contain path.
+ *
+ * @param path
+ * path to check existence of
+ * @return true if the filter could contain path, false if the filter
+ * definitely does not contain path
+ */
+ public boolean maybeContains(byte[] path) {
+ int hash0 = MurmurHash3.hash32x86(path, 0, path.length, SEED1);
+ int hash1 = MurmurHash3.hash32x86(path, 0, path.length, SEED2);
+ int bloomFilterBits = length * 8;
+ for (int i = 0; i < PATH_HASH_COUNT; i++) {
+ int pos = Integer.remainderUnsigned(hash0 + i * hash1,
+ bloomFilterBits);
+ if ((data[offset + (pos / 8)] & (byte) (1 << (pos % 8))) == 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Writes this filter to the given stream.
+ *
+ * @param s
+ * stream to write to
+ */
+ public void writeTo(ByteArrayOutputStream s) {
+ s.write(data, offset, length);
+ }
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraph.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraph.java
index 0796293f52..d1178c2850 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraph.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraph.java
@@ -32,25 +32,26 @@ public interface CommitGraph {
/** Empty {@link CommitGraph} with no results. */
CommitGraph EMPTY = new CommitGraph() {
- /** {@inheritDoc} */
@Override
public int findGraphPosition(AnyObjectId commit) {
return -1;
}
- /** {@inheritDoc} */
@Override
public CommitData getCommitData(int graphPos) {
return null;
}
- /** {@inheritDoc} */
@Override
public ObjectId getObjectId(int graphPos) {
return null;
}
- /** {@inheritDoc} */
+ @Override
+ public ChangedPathFilter getChangedPathFilter(int graphPos) {
+ return null;
+ }
+
@Override
public long getCommitCnt() {
return 0;
@@ -97,6 +98,15 @@ public interface CommitGraph {
ObjectId getObjectId(int graphPos);
/**
+ * Get the changed path filter of the object at the commit-graph position.
+ *
+ * @param graphPos
+ * the position in the commit-graph of the object.
+ * @return the bloom filter or null if it's not found.
+ */
+ ChangedPathFilter getChangedPathFilter(int graphPos);
+
+ /**
* Obtain the total number of commits described by this commit-graph.
*
* @return number of commits in this commit-graph.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphBuilder.java
index a6af3bc592..8f02770745 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphBuilder.java
@@ -10,6 +10,8 @@
package org.eclipse.jgit.internal.storage.commitgraph;
+import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_DATA;
+import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_INDEX;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_COMMIT_DATA;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_EXTRA_EDGE_LIST;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_OID_FANOUT;
@@ -35,6 +37,10 @@ class CommitGraphBuilder {
private byte[] extraList;
+ private byte[] bloomFilterIndex;
+
+ private byte[] bloomFilterData;
+
/** @return A builder of {@link CommitGraph}. */
static CommitGraphBuilder builder() {
return new CommitGraphBuilder(OBJECT_ID_LENGTH);
@@ -72,6 +78,20 @@ class CommitGraphBuilder {
return this;
}
+ CommitGraphBuilder addBloomFilterIndex(byte[] buffer)
+ throws CommitGraphFormatException {
+ assertChunkNotSeenYet(bloomFilterIndex, CHUNK_ID_BLOOM_FILTER_INDEX);
+ bloomFilterIndex = buffer;
+ return this;
+ }
+
+ CommitGraphBuilder addBloomFilterData(byte[] buffer)
+ throws CommitGraphFormatException {
+ assertChunkNotSeenYet(bloomFilterData, CHUNK_ID_BLOOM_FILTER_DATA);
+ bloomFilterData = buffer;
+ return this;
+ }
+
CommitGraph build() throws CommitGraphFormatException {
assertChunkNotNull(oidFanout, CHUNK_ID_OID_FANOUT);
assertChunkNotNull(oidLookup, CHUNK_ID_OID_LOOKUP);
@@ -81,7 +101,9 @@ class CommitGraphBuilder {
oidLookup);
GraphCommitData commitDataChunk = new GraphCommitData(hashLength,
commitData, extraList);
- return new CommitGraphV1(index, commitDataChunk);
+ GraphChangedPathFilterData cpfData = new GraphChangedPathFilterData(
+ bloomFilterIndex, bloomFilterData);
+ return new CommitGraphV1(index, commitDataChunk, cpfData);
}
private void assertChunkNotNull(Object object, int chunkId)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphConstants.java
index a074833fa5..8d2789cf52 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphConstants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphConstants.java
@@ -25,6 +25,10 @@ class CommitGraphConstants {
static final int CHUNK_ID_EXTRA_EDGE_LIST = 0x45444745; /* "EDGE" */
+ static final int CHUNK_ID_BLOOM_FILTER_INDEX = 0x42494458; /* "BIDX" */
+
+ static final int CHUNK_ID_BLOOM_FILTER_DATA = 0x42444154; /* "BDAT" */
+
/**
* First 4 bytes describe the chunk id. Value 0 is a terminating label.
* Other 8 bytes provide the byte-offset in current file for chunk to start.
@@ -41,15 +45,15 @@ class CommitGraphConstants {
/** Mask to make the last edgeValue into position */
static final int GRAPH_EDGE_LAST_MASK = 0x7fffffff;
- /** EdgeValue & GRAPH_LAST_EDGE != 0 means it is the last edgeValue */
+ /** EdgeValue &amp; GRAPH_LAST_EDGE != 0 means it is the last edgeValue */
static final int GRAPH_LAST_EDGE = 0x80000000;
/** EdgeValue == GRAPH_NO_PARENT means it has no parents */
static final int GRAPH_NO_PARENT = 0x70000000;
/**
- * EdgeValue & GRAPH_EXTRA_EDGES_NEEDED != 0 means its other parents are in
- * Chunk Extra Edge List
+ * EdgeValue &amp; GRAPH_EXTRA_EDGES_NEEDED != 0 means its other parents are
+ * in Chunk Extra Edge List
*/
static final int GRAPH_EXTRA_EDGES_NEEDED = 0x80000000;
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphLoader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphLoader.java
index 571f5f4ebe..867d522e08 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphLoader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphLoader.java
@@ -10,6 +10,8 @@
package org.eclipse.jgit.internal.storage.commitgraph;
+import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_DATA;
+import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_INDEX;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_COMMIT_DATA;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_EXTRA_EDGE_LIST;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_OID_FANOUT;
@@ -25,9 +27,12 @@ import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.util.IO;
import org.eclipse.jgit.util.NB;
+import org.eclipse.jgit.util.SystemReader;
import org.eclipse.jgit.util.io.SilentFileInputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -137,6 +142,17 @@ public class CommitGraphLoader {
chunks.add(new ChunkSegment(id, offset));
}
+ boolean readChangedPathFilters;
+ try {
+ readChangedPathFilters = SystemReader.getInstance()
+ .getJGitConfig()
+ .getBoolean(ConfigConstants.CONFIG_COMMIT_GRAPH_SECTION,
+ ConfigConstants.CONFIG_KEY_READ_CHANGED_PATHS, false);
+ } catch (ConfigInvalidException e) {
+ // Use the default value if, for some reason, the config couldn't be read.
+ readChangedPathFilters = false;
+ }
+
CommitGraphBuilder builder = CommitGraphBuilder.builder();
for (int i = 0; i < numberOfChunks; i++) {
long chunkOffset = chunks.get(i).offset;
@@ -164,6 +180,16 @@ public class CommitGraphLoader {
case CHUNK_ID_EXTRA_EDGE_LIST:
builder.addExtraList(buffer);
break;
+ case CHUNK_ID_BLOOM_FILTER_INDEX:
+ if (readChangedPathFilters) {
+ builder.addBloomFilterIndex(buffer);
+ }
+ break;
+ case CHUNK_ID_BLOOM_FILTER_DATA:
+ if (readChangedPathFilters) {
+ builder.addBloomFilterData(buffer);
+ }
+ break;
default:
LOG.warn(MessageFormat.format(
JGitText.get().commitGraphChunkUnknown,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphV1.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphV1.java
index da172192e4..b0a9c83848 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphV1.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphV1.java
@@ -24,18 +24,20 @@ class CommitGraphV1 implements CommitGraph {
private final GraphCommitData commitData;
- CommitGraphV1(GraphObjectIndex index, GraphCommitData commitData) {
+ private final GraphChangedPathFilterData cpfData;
+
+ CommitGraphV1(GraphObjectIndex index, GraphCommitData commitData,
+ GraphChangedPathFilterData cpfData) {
this.idx = index;
this.commitData = commitData;
+ this.cpfData = cpfData;
}
- /** {@inheritDoc} */
@Override
public int findGraphPosition(AnyObjectId commit) {
return idx.findGraphPosition(commit);
}
- /** {@inheritDoc} */
@Override
public CommitData getCommitData(int graphPos) {
if (graphPos < 0 || graphPos >= getCommitCnt()) {
@@ -44,13 +46,16 @@ class CommitGraphV1 implements CommitGraph {
return commitData.getCommitData(graphPos);
}
- /** {@inheritDoc} */
@Override
public ObjectId getObjectId(int graphPos) {
return idx.getObjectId(graphPos);
}
- /** {@inheritDoc} */
+ @Override
+ public ChangedPathFilter getChangedPathFilter(int graphPos) {
+ return cpfData.getChangedPathFilter(graphPos);
+ }
+
@Override
public long getCommitCnt() {
return idx.getCommitCnt();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
index a58a9eb632..bab262231f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
@@ -10,6 +10,8 @@
package org.eclipse.jgit.internal.storage.commitgraph;
+import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_DATA;
+import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_BLOOM_FILTER_INDEX;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_COMMIT_DATA;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_EXTRA_EDGE_LIST;
import static org.eclipse.jgit.internal.storage.commitgraph.CommitGraphConstants.CHUNK_ID_OID_FANOUT;
@@ -24,21 +26,31 @@ import static org.eclipse.jgit.lib.Constants.COMMIT_GENERATION_NOT_COMPUTED;
import static org.eclipse.jgit.lib.Constants.COMMIT_GENERATION_UNKNOWN;
import static org.eclipse.jgit.lib.Constants.OBJECT_ID_LENGTH;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.OutputStream;
+import java.nio.ByteBuffer;
import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Stack;
import org.eclipse.jgit.annotations.NonNull;
+import org.eclipse.jgit.errors.CorruptObjectException;
+import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.internal.storage.io.CancellableDigestOutputStream;
import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.lib.ProgressMonitor;
import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.treewalk.EmptyTreeIterator;
+import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.util.NB;
/**
@@ -56,10 +68,14 @@ public class CommitGraphWriter {
private static final int GENERATION_NUMBER_MAX = 0x3FFFFFFF;
+ private static final int MAX_CHANGED_PATHS = 512;
+
private final int hashsz;
private final GraphCommits graphCommits;
+ private final boolean generateChangedPathFilters;
+
/**
* Create commit-graph writer for these commits.
*
@@ -67,8 +83,22 @@ public class CommitGraphWriter {
* the commits which will be writen to the commit-graph.
*/
public CommitGraphWriter(@NonNull GraphCommits graphCommits) {
+ this(graphCommits, false);
+ }
+
+ /**
+ * Create commit-graph writer for these commits.
+ *
+ * @param graphCommits
+ * the commits which will be writen to the commit-graph.
+ * @param generateChangedPathFilters
+ * whether changed path filters are generated
+ */
+ public CommitGraphWriter(@NonNull GraphCommits graphCommits,
+ boolean generateChangedPathFilters) {
this.graphCommits = graphCommits;
this.hashsz = OBJECT_ID_LENGTH;
+ this.generateChangedPathFilters = generateChangedPathFilters;
}
/**
@@ -80,15 +110,18 @@ public class CommitGraphWriter {
* output stream of commit-graph data. The stream should be
* buffered by the caller. The caller is responsible for closing
* the stream.
+ * @return statistics gathered during the run
* @throws IOException
+ * if an error occurred
*/
- public void write(@NonNull ProgressMonitor monitor,
+ public Stats write(@NonNull ProgressMonitor monitor,
@NonNull OutputStream commitGraphStream) throws IOException {
+ Stats stats = new Stats();
if (graphCommits.size() == 0) {
- return;
+ return stats;
}
- List<ChunkHeader> chunks = createChunks();
+ List<ChunkHeader> chunks = createChunks(stats);
long writeCount = 256 + 2 * graphCommits.size()
+ graphCommits.getExtraEdgeCnt();
monitor.beginTask(
@@ -108,9 +141,12 @@ public class CommitGraphWriter {
} finally {
monitor.endTask();
}
+ return stats;
}
- private List<ChunkHeader> createChunks() {
+ private List<ChunkHeader> createChunks(Stats stats)
+ throws MissingObjectException,
+ IncorrectObjectTypeException, CorruptObjectException, IOException {
List<ChunkHeader> chunks = new ArrayList<>();
chunks.add(new ChunkHeader(CHUNK_ID_OID_FANOUT, GRAPH_FANOUT_SIZE));
chunks.add(new ChunkHeader(CHUNK_ID_OID_LOOKUP,
@@ -121,6 +157,14 @@ public class CommitGraphWriter {
chunks.add(new ChunkHeader(CHUNK_ID_EXTRA_EDGE_LIST,
graphCommits.getExtraEdgeCnt() * 4));
}
+ if (generateChangedPathFilters) {
+ BloomFilterChunks bloomFilterChunks = computeBloomFilterChunks(
+ stats);
+ chunks.add(new ChunkHeader(CHUNK_ID_BLOOM_FILTER_INDEX,
+ bloomFilterChunks.index));
+ chunks.add(new ChunkHeader(CHUNK_ID_BLOOM_FILTER_DATA,
+ bloomFilterChunks.data));
+ }
return chunks;
}
@@ -170,6 +214,17 @@ public class CommitGraphWriter {
case CHUNK_ID_EXTRA_EDGE_LIST:
writeExtraEdges(out);
break;
+ case CHUNK_ID_BLOOM_FILTER_INDEX:
+ case CHUNK_ID_BLOOM_FILTER_DATA:
+ if (!chunk.data.isPresent()) {
+ throw new IllegalStateException(
+ "data for this chunk must be precomputed"); //$NON-NLS-1$
+ }
+ chunk.data.get().writeTo(out);
+ break;
+ default:
+ throw new IllegalStateException(
+ "Don't know how to write chunk " + chunkId); //$NON-NLS-1$
}
}
}
@@ -304,6 +359,79 @@ public class CommitGraphWriter {
return generations;
}
+ private static Optional<HashSet<ByteBuffer>> computeBloomFilterPaths(
+ ObjectReader or, RevCommit cmit) throws MissingObjectException,
+ IncorrectObjectTypeException, CorruptObjectException, IOException {
+ HashSet<ByteBuffer> paths = new HashSet<>();
+ try (TreeWalk walk = new TreeWalk(null, or)) {
+ walk.setRecursive(true);
+ if (cmit.getParentCount() == 0) {
+ walk.addTree(new EmptyTreeIterator());
+ } else {
+ walk.addTree(cmit.getParent(0).getTree());
+ }
+ walk.addTree(cmit.getTree());
+ while (walk.next()) {
+ if (walk.idEqual(0, 1)) {
+ continue;
+ }
+ byte[] rawPath = walk.getRawPath();
+ paths.add(ByteBuffer.wrap(rawPath));
+ for (int i = 0; i < rawPath.length; i++) {
+ if (rawPath[i] == '/') {
+ paths.add(ByteBuffer.wrap(rawPath, 0, i));
+ }
+ if (paths.size() > MAX_CHANGED_PATHS) {
+ return Optional.empty();
+ }
+ }
+ }
+ }
+ return Optional.of(paths);
+ }
+
+ private BloomFilterChunks computeBloomFilterChunks(Stats stats)
+ throws MissingObjectException, IncorrectObjectTypeException,
+ CorruptObjectException, IOException {
+
+ ByteArrayOutputStream index = new ByteArrayOutputStream();
+ ByteArrayOutputStream data = new ByteArrayOutputStream();
+
+ // Allocate scratch buffer for converting integers into
+ // big-endian bytes.
+ byte[] scratch = new byte[4];
+
+ NB.encodeInt32(scratch, 0, 1); // version 1
+ data.write(scratch);
+ NB.encodeInt32(scratch, 0, ChangedPathFilter.PATH_HASH_COUNT);
+ data.write(scratch);
+ NB.encodeInt32(scratch, 0, ChangedPathFilter.BITS_PER_ENTRY);
+ data.write(scratch);
+ int dataHeaderSize = data.size();
+
+ try (RevWalk rw = new RevWalk(graphCommits.getObjectReader())) {
+ for (RevCommit cmit : graphCommits) {
+ ChangedPathFilter cpf = cmit.getChangedPathFilter(rw);
+ if (cpf != null) {
+ stats.changedPathFiltersReused++;
+ } else {
+ stats.changedPathFiltersComputed++;
+ Optional<HashSet<ByteBuffer>> paths = computeBloomFilterPaths(
+ graphCommits.getObjectReader(), cmit);
+ if (paths.isEmpty()) {
+ cpf = ChangedPathFilter.FULL;
+ } else {
+ cpf = ChangedPathFilter.fromPaths(paths.get());
+ }
+ }
+ cpf.writeTo(data);
+ NB.encodeInt32(scratch, 0, data.size() - dataHeaderSize);
+ index.write(scratch);
+ }
+ return new BloomFilterChunks(index, data);
+ }
+ }
+
private void writeExtraEdges(CancellableDigestOutputStream out)
throws IOException {
byte[] tmp = new byte[4];
@@ -330,9 +458,60 @@ public class CommitGraphWriter {
final long size;
+ final Optional<ByteArrayOutputStream> data;
+
public ChunkHeader(int id, long size) {
this.id = id;
this.size = size;
+ this.data = Optional.empty();
+ }
+
+ ChunkHeader(int id, ByteArrayOutputStream data) {
+ this.id = id;
+ this.size = data.size();
+ this.data = Optional.of(data);
+ }
+ }
+
+ private static class BloomFilterChunks {
+ final ByteArrayOutputStream index;
+
+ final ByteArrayOutputStream data;
+
+ BloomFilterChunks(ByteArrayOutputStream index,
+ ByteArrayOutputStream data) {
+ this.index = index;
+ this.data = data;
+ }
+ }
+
+ /**
+ * Statistics collected during a single commit graph write.
+ */
+ public static class Stats {
+
+ private long changedPathFiltersReused = 0;
+
+ private long changedPathFiltersComputed = 0;
+
+ /**
+ * Returns the number of existing changed path filters that were reused
+ * when writing, for statistical purposes.
+ *
+ * @return count of changed path filters
+ */
+ public long getChangedPathFiltersReused() {
+ return changedPathFiltersReused;
+ }
+
+ /**
+ * Returns the number of changed path filters that were computed from
+ * scratch, for statistical purposes.
+ *
+ * @return count of changed path filters
+ */
+ public long getChangedPathFiltersComputed() {
+ return changedPathFiltersComputed;
}
}
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphChangedPathFilterData.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphChangedPathFilterData.java
new file mode 100644
index 0000000000..738a42a01d
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphChangedPathFilterData.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2023, Google LLC.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.internal.storage.commitgraph;
+
+import org.eclipse.jgit.util.NB;
+
+/**
+ * Represents the BIDX and BDAT data found in a commit graph file.
+ */
+class GraphChangedPathFilterData {
+
+ private static final int BIDX_BYTES_PER_ENTRY = 4;
+
+ private static final int BDAT_HEADER_BYTES = 12;
+
+ private final byte[] bloomFilterIndex;
+
+ private final byte[] bloomFilterData;
+
+ /**
+ * Initialize the GraphChangedPathFilterData.
+ *
+ * @param bloomFilterIndex
+ * content of BIDX chunk, if it exists
+ * @param bloomFilterData
+ * content of BDAT chunk, if it exists
+ */
+ GraphChangedPathFilterData(byte[] bloomFilterIndex,
+ byte[] bloomFilterData) {
+
+ if ((bloomFilterIndex == null) != (bloomFilterData == null)) {
+ bloomFilterIndex = null;
+ bloomFilterData = null;
+ }
+ if (bloomFilterData != null
+ && (NB.decodeUInt32(bloomFilterData,
+ 4) != ChangedPathFilter.PATH_HASH_COUNT
+ || NB.decodeUInt32(bloomFilterData,
+ 8) != ChangedPathFilter.BITS_PER_ENTRY)) {
+ bloomFilterIndex = null;
+ bloomFilterData = null;
+ }
+
+ this.bloomFilterIndex = bloomFilterIndex;
+ this.bloomFilterData = bloomFilterData;
+ }
+
+ ChangedPathFilter getChangedPathFilter(int graphPos) {
+ if (bloomFilterIndex == null) {
+ return null;
+ }
+ int priorCumul = graphPos == 0 ? 0
+ : NB.decodeInt32(bloomFilterIndex,
+ graphPos * BIDX_BYTES_PER_ENTRY - BIDX_BYTES_PER_ENTRY);
+ int cumul = NB.decodeInt32(bloomFilterIndex, graphPos * BIDX_BYTES_PER_ENTRY);
+ return ChangedPathFilter.fromFile(bloomFilterData,
+ priorCumul + BDAT_HEADER_BYTES,
+ cumul - priorCumul);
+ }
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphCommits.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphCommits.java
index ccf6d0e66a..c77d950377 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphCommits.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphCommits.java
@@ -23,6 +23,7 @@ import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectIdOwnerMap;
+import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.lib.ProgressMonitor;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevObject;
@@ -56,6 +57,7 @@ public class GraphCommits implements Iterable<RevCommit> {
* @return the commits' collection which are used by the commit-graph
* writer. Never null.
* @throws IOException
+ * if an error occurred
*/
public static GraphCommits fromWalk(ProgressMonitor pm,
@NonNull Set<? extends ObjectId> wants, @NonNull RevWalk walk)
@@ -78,7 +80,7 @@ public class GraphCommits implements Iterable<RevCommit> {
commits.add(c);
}
pm.endTask();
- return new GraphCommits(commits);
+ return new GraphCommits(commits, walk.getObjectReader());
}
private final List<RevCommit> sortedCommits;
@@ -87,13 +89,17 @@ public class GraphCommits implements Iterable<RevCommit> {
private final int extraEdgeCnt;
+ private final ObjectReader objectReader;
+
/**
* Initialize the GraphCommits.
*
* @param commits
* list of commits with their headers already parsed.
+ * @param objectReader
+ * object reader
*/
- private GraphCommits(List<RevCommit> commits) {
+ private GraphCommits(List<RevCommit> commits, ObjectReader objectReader) {
Collections.sort(commits); // sorted by name
sortedCommits = commits;
commitPosMap = new ObjectIdOwnerMap<>();
@@ -106,6 +112,7 @@ public class GraphCommits implements Iterable<RevCommit> {
commitPosMap.add(new CommitWithPosition(c, i));
}
this.extraEdgeCnt = cnt;
+ this.objectReader = objectReader;
}
int getOidPosition(RevCommit c) throws MissingObjectException {
@@ -124,7 +131,10 @@ public class GraphCommits implements Iterable<RevCommit> {
return sortedCommits.size();
}
- /** {@inheritDoc} */
+ ObjectReader getObjectReader() {
+ return objectReader;
+ }
+
@Override
public Iterator<RevCommit> iterator() {
return sortedCommits.iterator();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphObjectIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphObjectIndex.java
index 22b4011f9f..a15602a168 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphObjectIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/GraphObjectIndex.java
@@ -56,7 +56,7 @@ class GraphObjectIndex {
long uint32;
for (int k = 0; k < table.length; k++) {
uint32 = NB.decodeUInt32(oidFanout, k * 4);
- if (table[k] > Integer.MAX_VALUE) {
+ if (uint32 > Integer.MAX_VALUE) {
throw new CommitGraphFormatException(
JGitText.get().commitGraphFileIsTooLargeForJgit);
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BeforeDfsPackIndexLoadedEvent.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BeforeDfsPackIndexLoadedEvent.java
index cdfd3e9592..68fc296d3e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BeforeDfsPackIndexLoadedEvent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BeforeDfsPackIndexLoadedEvent.java
@@ -41,13 +41,11 @@ public class BeforeDfsPackIndexLoadedEvent
return pack;
}
- /** {@inheritDoc} */
@Override
public Class<BeforeDfsPackIndexLoadedListener> getListenerType() {
return BeforeDfsPackIndexLoadedListener.class;
}
- /** {@inheritDoc} */
@Override
public void dispatch(BeforeDfsPackIndexLoadedListener listener) {
listener.onBeforeDfsPackIndexLoaded(this);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BlockBasedFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BlockBasedFile.java
index b1b09baf20..ab07475663 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BlockBasedFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/BlockBasedFile.java
@@ -100,7 +100,9 @@ abstract class BlockBasedFile {
DfsBlock getOrLoadBlock(long pos, DfsReader ctx) throws IOException {
try (LazyChannel c = new LazyChannel(ctx, desc, ext)) {
- return cache.getOrLoad(this, pos, ctx, c);
+ DfsBlock block = cache.getOrLoad(this, pos, ctx, c);
+ ctx.emitBlockLoad(this, pos, block);
+ return block;
}
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java
index 0a02180d7d..99b9d556ad 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java
@@ -847,6 +847,7 @@ public final class DfsBlockCache {
/**
* @return ReadableChannel
* @throws IOException
+ * if an IO error occurred
*/
ReadableChannel get() throws IOException;
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsCachedPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsCachedPack.java
index 22959e9f6b..d6d3fbfd30 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsCachedPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsCachedPack.java
@@ -43,19 +43,16 @@ public class DfsCachedPack extends CachedPack {
return pack.getPackDescription();
}
- /** {@inheritDoc} */
@Override
public long getObjectCount() throws IOException {
return getPackDescription().getObjectCount();
}
- /** {@inheritDoc} */
@Override
public long getDeltaCount() throws IOException {
return getPackDescription().getDeltaCount();
}
- /** {@inheritDoc} */
@Override
public boolean hasObject(ObjectToPack obj, StoredObjectRepresentation rep) {
return ((DfsObjectRepresentation) rep).pack == pack;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsConfig.java
index 2ee23f8627..4f0e4a55d4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsConfig.java
@@ -22,13 +22,11 @@ import org.eclipse.jgit.lib.StoredConfig;
* simply clears the config, and saving does nothing.
*/
public final class DfsConfig extends StoredConfig {
- /** {@inheritDoc} */
@Override
public void load() throws IOException, ConfigInvalidException {
clear();
}
- /** {@inheritDoc} */
@Override
public void save() throws IOException {
// TODO actually store this configuration.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollector.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollector.java
index 92e23b8b40..62b55d4734 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollector.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollector.java
@@ -20,6 +20,7 @@ import static org.eclipse.jgit.internal.storage.dfs.DfsPackCompactor.configureRe
import static org.eclipse.jgit.internal.storage.pack.PackExt.BITMAP_INDEX;
import static org.eclipse.jgit.internal.storage.pack.PackExt.COMMIT_GRAPH;
import static org.eclipse.jgit.internal.storage.pack.PackExt.INDEX;
+import static org.eclipse.jgit.internal.storage.pack.PackExt.OBJECT_SIZE_INDEX;
import static org.eclipse.jgit.internal.storage.pack.PackExt.PACK;
import static org.eclipse.jgit.internal.storage.pack.PackExt.REFTABLE;
import static org.eclipse.jgit.internal.storage.pack.PackWriter.NONE;
@@ -35,7 +36,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.internal.storage.commitgraph.CommitGraphWriter;
@@ -80,6 +80,8 @@ public class DfsGarbageCollector {
private ReftableConfig reftableConfig;
private boolean convertToReftable = true;
private boolean writeCommitGraph;
+
+ private boolean writeBloomFilter;
private boolean includeDeletes;
private long reftableInitialMinUpdateIndex = 1;
private long reftableInitialMaxUpdateIndex = 1;
@@ -298,6 +300,20 @@ public class DfsGarbageCollector {
}
/**
+ * Toggle bloom filter generation.
+ * <p>
+ * False by default.
+ *
+ * @param enable
+ * Whether bloom filter generation is enabled
+ * @return {@code this}
+ */
+ public DfsGarbageCollector setWriteBloomFilter(boolean enable) {
+ writeBloomFilter = enable;
+ return this;
+ }
+
+ /**
* Create a single new pack file containing all of the live objects.
* <p>
* This method safely decides which packs can be expired after the new pack
@@ -681,6 +697,17 @@ public class DfsGarbageCollector {
pack.setIndexVersion(pw.getIndexVersion());
}
+ if (source != UNREACHABLE_GARBAGE && packConfig.getMinBytesForObjSizeIndex() >= 0) {
+ try (DfsOutputStream out = objdb.writeFile(pack,
+ OBJECT_SIZE_INDEX)) {
+ CountingOutputStream cnt = new CountingOutputStream(out);
+ pw.writeObjectSizeIndex(cnt);
+ pack.addFileExt(OBJECT_SIZE_INDEX);
+ pack.setFileSize(OBJECT_SIZE_INDEX, cnt.getCount());
+ pack.setBlockSize(OBJECT_SIZE_INDEX, out.blockSize());
+ }
+ }
+
if (pw.prepareBitmapIndex(pm)) {
try (DfsOutputStream out = objdb.writeFile(pack, BITMAP_INDEX)) {
CountingOutputStream cnt = new CountingOutputStream(out);
@@ -755,18 +782,17 @@ public class DfsGarbageCollector {
return;
}
- Set<ObjectId> allTips = refsBefore.stream().map(Ref::getObjectId)
- .collect(Collectors.toUnmodifiableSet());
-
try (DfsOutputStream out = objdb.writeFile(pack, COMMIT_GRAPH);
RevWalk pool = new RevWalk(ctx)) {
- GraphCommits gcs = GraphCommits.fromWalk(pm, allTips, pool);
+ GraphCommits gcs = GraphCommits.fromWalk(pm, allHeadsAndTags, pool);
CountingOutputStream cnt = new CountingOutputStream(out);
- CommitGraphWriter writer = new CommitGraphWriter(gcs);
- writer.write(pm, cnt);
+ CommitGraphWriter writer = new CommitGraphWriter(gcs,
+ writeBloomFilter);
+ CommitGraphWriter.Stats stats = writer.write(pm, cnt);
pack.addFileExt(COMMIT_GRAPH);
pack.setFileSize(COMMIT_GRAPH, cnt.getCount());
pack.setBlockSize(COMMIT_GRAPH, out.blockSize());
+ pack.setCommitGraphStats(stats);
}
}
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
index a2fb67ff0b..2f8d964e0a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
@@ -11,6 +11,7 @@
package org.eclipse.jgit.internal.storage.dfs;
import static org.eclipse.jgit.internal.storage.pack.PackExt.INDEX;
+import static org.eclipse.jgit.internal.storage.pack.PackExt.OBJECT_SIZE_INDEX;
import static org.eclipse.jgit.internal.storage.pack.PackExt.PACK;
import static org.eclipse.jgit.lib.Constants.OBJ_OFS_DELTA;
import static org.eclipse.jgit.lib.Constants.OBJ_REF_DELTA;
@@ -42,6 +43,7 @@ import org.eclipse.jgit.errors.LargeObjectException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.internal.storage.file.PackIndex;
import org.eclipse.jgit.internal.storage.file.PackIndexWriter;
+import org.eclipse.jgit.internal.storage.file.PackObjectSizeIndexWriter;
import org.eclipse.jgit.internal.storage.pack.PackExt;
import org.eclipse.jgit.lib.AbbreviatedObjectId;
import org.eclipse.jgit.lib.AnyObjectId;
@@ -52,6 +54,7 @@ import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.ObjectLoader;
import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.lib.ObjectStream;
+import org.eclipse.jgit.storage.pack.PackConfig;
import org.eclipse.jgit.transport.PackedObjectInfo;
import org.eclipse.jgit.util.BlockList;
import org.eclipse.jgit.util.IO;
@@ -106,19 +109,16 @@ public class DfsInserter extends ObjectInserter {
this.compression = compression;
}
- /** {@inheritDoc} */
@Override
public DfsPackParser newPackParser(InputStream in) throws IOException {
return new DfsPackParser(db, this, in);
}
- /** {@inheritDoc} */
@Override
public ObjectReader newReader() {
return new Reader();
}
- /** {@inheritDoc} */
@Override
public ObjectId insert(int type, byte[] data, int off, int len)
throws IOException {
@@ -132,10 +132,9 @@ public class DfsInserter extends ObjectInserter {
long offset = beginObject(type, len);
packOut.compress.write(data, off, len);
packOut.compress.finish();
- return endObject(id, offset);
+ return endObject(id, offset, len, type);
}
- /** {@inheritDoc} */
@Override
public ObjectId insert(int type, long len, InputStream in)
throws IOException {
@@ -152,16 +151,17 @@ public class DfsInserter extends ObjectInserter {
md.update(Constants.encodeASCII(len));
md.update((byte) 0);
- while (0 < len) {
- int n = in.read(buf, 0, (int) Math.min(buf.length, len));
+ long inLength = len;
+ while (0 < inLength) {
+ int n = in.read(buf, 0, (int) Math.min(buf.length, inLength));
if (n <= 0)
throw new EOFException();
md.update(buf, 0, n);
packOut.compress.write(buf, 0, n);
- len -= n;
+ inLength -= n;
}
packOut.compress.finish();
- return endObject(md.toObjectId(), offset);
+ return endObject(md.toObjectId(), offset, len, type);
}
private byte[] insertBuffer(long len) {
@@ -178,7 +178,6 @@ public class DfsInserter extends ObjectInserter {
return buf;
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
if (packDsc == null)
@@ -196,6 +195,11 @@ public class DfsInserter extends ObjectInserter {
sortObjectsById();
PackIndex index = writePackIndex(packDsc, packHash, objectList);
+ PackConfig pConfig = new PackConfig(db.getRepository().getConfig());
+ if (pConfig.isWriteObjSizeIndex()) {
+ writeObjectSizeIndex(packDsc, objectList,
+ pConfig.getMinBytesForObjSizeIndex());
+ }
db.commitPack(Collections.singletonList(packDsc), null);
rollback = false;
@@ -206,7 +210,6 @@ public class DfsInserter extends ObjectInserter {
clear();
}
- /** {@inheritDoc} */
@Override
public void close() {
if (packOut != null) {
@@ -244,10 +247,12 @@ public class DfsInserter extends ObjectInserter {
return offset;
}
- private ObjectId endObject(ObjectId id, long offset) {
+ private ObjectId endObject(ObjectId id, long offset, long inflatedSize, int type) {
PackedObjectInfo obj = new PackedObjectInfo(id);
+ obj.setType(type);
obj.setOffset(offset);
obj.setCRC((int) packOut.crc32.getValue());
+ obj.setFullSize(inflatedSize);
objectList.add(obj);
objectMap.addIfAbsent(obj);
return id;
@@ -317,6 +322,18 @@ public class DfsInserter extends ObjectInserter {
PackIndexWriter.createVersion(out, INDEX_VERSION).write(list, packHash);
}
+ void writeObjectSizeIndex(DfsPackDescription pack,
+ List<PackedObjectInfo> packedObjs, int minSize) throws IOException {
+ try (DfsOutputStream os = db.writeFile(pack, PackExt.OBJECT_SIZE_INDEX);
+ CountingOutputStream cnt = new CountingOutputStream(os)) {
+ PackObjectSizeIndexWriter.createWriter(os, minSize)
+ .write(packedObjs);
+ pack.addFileExt(OBJECT_SIZE_INDEX);
+ pack.setBlockSize(OBJECT_SIZE_INDEX, os.blockSize());
+ pack.setFileSize(OBJECT_SIZE_INDEX, cnt.getCount());
+ }
+ }
+
private class PackStream extends OutputStream {
private final DfsOutputStream out;
private final MessageDigest md;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
index 46ec87df54..faeafceec0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
@@ -241,13 +241,11 @@ public abstract class DfsObjDatabase extends ObjectDatabase {
this.packComparator = packComparator;
}
- /** {@inheritDoc} */
@Override
public DfsReader newReader() {
return new DfsReader(this);
}
- /** {@inheritDoc} */
@Override
public ObjectInserter newInserter() {
return new DfsInserter(this);
@@ -657,7 +655,6 @@ public abstract class DfsObjDatabase extends ObjectDatabase {
packList.set(NO_PACKS);
}
- /** {@inheritDoc} */
@Override
public void close() {
packList.set(NO_PACKS);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectRepresentation.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectRepresentation.java
index 8e124e3c20..885582fae2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectRepresentation.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectRepresentation.java
@@ -24,25 +24,21 @@ class DfsObjectRepresentation extends StoredObjectRepresentation {
this.pack = pack;
}
- /** {@inheritDoc} */
@Override
public int getFormat() {
return format;
}
- /** {@inheritDoc} */
@Override
public int getWeight() {
return (int) Math.min(length, Integer.MAX_VALUE);
}
- /** {@inheritDoc} */
@Override
public ObjectId getDeltaBase() {
return baseId;
}
- /** {@inheritDoc} */
@Override
public boolean wasDeltaAttempted() {
switch (pack.getPackDescription().getPackSource()) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectToPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectToPack.java
index 10fa2365bd..c2feab8cd3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectToPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjectToPack.java
@@ -39,14 +39,12 @@ class DfsObjectToPack extends ObjectToPack {
setExtendedFlag(FLAG_FOUND);
}
- /** {@inheritDoc} */
@Override
protected void clearReuseAsIs() {
super.clearReuseAsIs();
pack = null;
}
- /** {@inheritDoc} */
@Override
public void select(StoredObjectRepresentation ref) {
DfsObjectRepresentation ptr = (DfsObjectRepresentation) ref;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsOutputStream.java
index 7cf91a4882..c74a1e1d7d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsOutputStream.java
@@ -39,13 +39,11 @@ public abstract class DfsOutputStream extends OutputStream {
return 0;
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
write(new byte[] { (byte) b });
}
- /** {@inheritDoc} */
@Override
public abstract void write(byte[] buf, int off, int len) throws IOException;
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 4f418ab4db..663190a233 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
@@ -17,6 +17,7 @@ import java.util.Arrays;
import java.util.Comparator;
import org.eclipse.jgit.annotations.NonNull;
+import org.eclipse.jgit.internal.storage.commitgraph.CommitGraphWriter;
import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
import org.eclipse.jgit.internal.storage.pack.PackExt;
import org.eclipse.jgit.internal.storage.reftable.ReftableWriter;
@@ -144,6 +145,7 @@ public class DfsPackDescription {
private PackStatistics packStats;
private ReftableWriter.Stats refStats;
+ private CommitGraphWriter.Stats commitGraphStats;
private int extensions;
private int indexVersion;
private long estimatedPackSize;
@@ -481,6 +483,19 @@ public class DfsPackDescription {
}
/**
+ * Get stats from the sibling commit graph, if created.
+ *
+ * @return stats from the sibling commit graph, if created.
+ */
+ public CommitGraphWriter.Stats getCommitGraphStats() {
+ return commitGraphStats;
+ }
+
+ void setCommitGraphStats(CommitGraphWriter.Stats stats) {
+ this.commitGraphStats = stats;
+ }
+
+ /**
* Discard the pack statistics, if it was populated.
*
* @return {@code this}
@@ -512,13 +527,11 @@ public class DfsPackDescription {
return this;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return packName.hashCode();
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object b) {
if (b instanceof DfsPackDescription) {
@@ -539,7 +552,6 @@ public class DfsPackDescription {
}
}
- /** {@inheritDoc} */
@Override
public String toString() {
return getFileName(PackExt.PACK);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
index c745b8e6ee..ecbfa74e66 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
@@ -16,6 +16,7 @@ import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.UN
import static org.eclipse.jgit.internal.storage.pack.PackExt.BITMAP_INDEX;
import static org.eclipse.jgit.internal.storage.pack.PackExt.COMMIT_GRAPH;
import static org.eclipse.jgit.internal.storage.pack.PackExt.INDEX;
+import static org.eclipse.jgit.internal.storage.pack.PackExt.OBJECT_SIZE_INDEX;
import static org.eclipse.jgit.internal.storage.pack.PackExt.PACK;
import static org.eclipse.jgit.internal.storage.pack.PackExt.REVERSE_INDEX;
@@ -42,7 +43,10 @@ import org.eclipse.jgit.internal.storage.commitgraph.CommitGraph;
import org.eclipse.jgit.internal.storage.commitgraph.CommitGraphLoader;
import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
import org.eclipse.jgit.internal.storage.file.PackIndex;
+import org.eclipse.jgit.internal.storage.file.PackObjectSizeIndex;
+import org.eclipse.jgit.internal.storage.file.PackObjectSizeIndexLoader;
import org.eclipse.jgit.internal.storage.file.PackReverseIndex;
+import org.eclipse.jgit.internal.storage.file.PackReverseIndexFactory;
import org.eclipse.jgit.internal.storage.pack.BinaryDelta;
import org.eclipse.jgit.internal.storage.pack.PackOutputStream;
import org.eclipse.jgit.internal.storage.pack.StoredObjectRepresentation;
@@ -75,6 +79,11 @@ public final class DfsPackFile extends BlockBasedFile {
/** Index of compressed commit graph mapping entire object graph. */
private volatile CommitGraph commitGraph;
+ /** Index by size */
+ private boolean objectSizeIndexLoadAttempted;
+
+ private volatile PackObjectSizeIndex objectSizeIndex;
+
/**
* Objects we have tried to read, and discovered to be corrupt.
* <p>
@@ -147,6 +156,7 @@ public final class DfsPackFile extends BlockBasedFile {
return idx(ctx);
}
+ @SuppressWarnings("boxing")
private PackIndex idx(DfsReader ctx) throws IOException {
if (index != null) {
return index;
@@ -172,6 +182,7 @@ public final class DfsPackFile extends BlockBasedFile {
PackIndex idx = idxref.get();
if (index == null && idx != null) {
index = idx;
+ ctx.emitIndexLoad(desc, INDEX, System.identityHashCode(idx));
}
return index;
} catch (IOException e) {
@@ -195,6 +206,7 @@ public final class DfsPackFile extends BlockBasedFile {
* @throws java.io.IOException
* the bitmap index is not available, or is corrupt.
*/
+ @SuppressWarnings("boxing")
public PackBitmapIndex getBitmapIndex(DfsReader ctx) throws IOException {
if (invalid || isGarbage() || !desc.hasFileExt(BITMAP_INDEX)) {
return null;
@@ -217,6 +229,7 @@ public final class DfsPackFile extends BlockBasedFile {
PackBitmapIndex bmidx = idxref.get();
if (bitmapIndex == null && bmidx != null) {
bitmapIndex = bmidx;
+ ctx.emitIndexLoad(desc, BITMAP_INDEX, System.identityHashCode(bmidx));
}
return bitmapIndex;
}
@@ -232,6 +245,7 @@ public final class DfsPackFile extends BlockBasedFile {
* @throws java.io.IOException
* the Commit Graph is not available, or is corrupt.
*/
+ @SuppressWarnings("boxing")
public CommitGraph getCommitGraph(DfsReader ctx) throws IOException {
if (invalid || isGarbage() || !desc.hasFileExt(COMMIT_GRAPH)) {
return null;
@@ -254,11 +268,23 @@ public final class DfsPackFile extends BlockBasedFile {
CommitGraph cg = cgref.get();
if (commitGraph == null && cg != null) {
commitGraph = cg;
+ ctx.emitIndexLoad(desc, COMMIT_GRAPH, System.identityHashCode(cg));
}
return commitGraph;
}
- PackReverseIndex getReverseIdx(DfsReader ctx) throws IOException {
+ /**
+ * Get the PackReverseIndex for this PackFile.
+ *
+ * @param ctx
+ * reader context to support reading from the backing store if
+ * the index is not already loaded in memory
+ * @return the PackReverseIndex
+ * @throws java.io.IOException
+ * the pack index is not available, or is corrupt
+ */
+ @SuppressWarnings("boxing")
+ public PackReverseIndex getReverseIdx(DfsReader ctx) throws IOException {
if (reverseIndex != null) {
return reverseIndex;
}
@@ -277,10 +303,46 @@ public final class DfsPackFile extends BlockBasedFile {
PackReverseIndex revidx = revref.get();
if (reverseIndex == null && revidx != null) {
reverseIndex = revidx;
+ ctx.emitIndexLoad(desc, REVERSE_INDEX, System.identityHashCode(revidx));
}
return reverseIndex;
}
+ @SuppressWarnings("boxing")
+ private PackObjectSizeIndex getObjectSizeIndex(DfsReader ctx)
+ throws IOException {
+ if (objectSizeIndex != null) {
+ return objectSizeIndex;
+ }
+
+ if (objectSizeIndexLoadAttempted) {
+ // Pack doesn't have object size index
+ return null;
+ }
+
+ DfsStreamKey objSizeKey = desc.getStreamKey(OBJECT_SIZE_INDEX);
+ AtomicBoolean cacheHit = new AtomicBoolean(true);
+ try {
+ DfsBlockCache.Ref<PackObjectSizeIndex> sizeIdxRef = cache
+ .getOrLoadRef(objSizeKey, REF_POSITION, () -> {
+ cacheHit.set(false);
+ return loadObjectSizeIndex(ctx, objSizeKey);
+ });
+ if (cacheHit.get()) {
+ ctx.stats.objectSizeIndexCacheHit++;
+ }
+ PackObjectSizeIndex sizeIdx = sizeIdxRef.get();
+ if (objectSizeIndex == null && sizeIdx != null) {
+ objectSizeIndex = sizeIdx;
+ ctx.emitIndexLoad(desc, OBJECT_SIZE_INDEX, System.identityHashCode(sizeIdx));
+ }
+ } finally {
+ objectSizeIndexLoadAttempted = true;
+ }
+
+ return objectSizeIndex;
+ }
+
/**
* Check if an object is stored within this pack.
*
@@ -374,6 +436,7 @@ public final class DfsPackFile extends BlockBasedFile {
if (sz > 0) {
rc.setReadAheadBytes(sz);
}
+ //TODO(ifrade): report ctx.emitBlockLoaded for this copy
if (cache.shouldCopyThroughCache(length)) {
copyPackThroughCache(out, ctx, rc);
} else {
@@ -957,6 +1020,81 @@ public final class DfsPackFile extends BlockBasedFile {
}
}
+ /**
+ * Return if this packfile has an object size index attached.
+ *
+ * This loads the index if it is not already in memory.
+ *
+ * @param ctx
+ * reader context to support reading from the backing store if
+ * the object size index is not already loaded in memory.
+ * @return true if the packfile has an object size index.
+ * @throws IOException
+ * a problem accessing storage while looking for the index
+ */
+ boolean hasObjectSizeIndex(DfsReader ctx) throws IOException {
+ return getObjectSizeIndex(ctx) != null;
+ }
+
+ /**
+ * Return minimum size for an object to be included in the object size
+ * index.
+ *
+ * Caller must make sure the pack has an object size index with
+ * {@link #hasObjectSizeIndex} before calling this method.
+ *
+ * @param ctx
+ * reader context to support reading from the backing store if
+ * the object size index is not already loaded in memory.
+ * @return minimum size for indexing in bytes
+ * @throws IOException
+ * no object size index or a problem loading it.
+ */
+ int getObjectSizeIndexThreshold(DfsReader ctx) throws IOException {
+ PackObjectSizeIndex idx = getObjectSizeIndex(ctx);
+ if (idx == null) {
+ throw new IOException("Asking threshold of non-existing obj-size"); //$NON-NLS-1$
+ }
+ return idx.getThreshold();
+ }
+
+ /**
+ * Return the size of the object from the object-size index. The object
+ * should be a blob. Any other type is not indexed and returns -1.
+ *
+ * Caller MUST be sure that the object is in the pack (e.g. with
+ * {@link #hasObject(DfsReader, AnyObjectId)}) and the pack has object size
+ * index (e.g. with {@link #hasObjectSizeIndex(DfsReader)}) before asking
+ * the indexed size.
+ *
+ * @param ctx
+ * reader context to support reading from the backing store if
+ * the object size index is not already loaded in memory.
+ * @param id
+ * object id of an object in the pack
+ * @return size of the object from the index. Negative if object is not in
+ * the index (below threshold or not a blob)
+ * @throws IOException
+ * could not read the object size index. IO problem or the pack
+ * doesn't have it.
+ */
+ long getIndexedObjectSize(DfsReader ctx, AnyObjectId id)
+ throws IOException {
+ int idxPosition = idx(ctx).findPosition(id);
+ if (idxPosition < 0) {
+ throw new IllegalArgumentException(
+ "Cannot get size from index since object is not in pack"); //$NON-NLS-1$
+ }
+
+ PackObjectSizeIndex sizeIdx = getObjectSizeIndex(ctx);
+ if (sizeIdx == null) {
+ throw new IllegalStateException(
+ "Asking indexed size from a pack without object size index"); //$NON-NLS-1$
+ }
+
+ return sizeIdx.getSize(idxPosition);
+ }
+
void representation(DfsObjectRepresentation r, final long pos,
DfsReader ctx, PackReverseIndex rev)
throws IOException {
@@ -1036,6 +1174,7 @@ public final class DfsPackFile extends BlockBasedFile {
}
}
+ @SuppressWarnings("boxing")
private DfsBlockCache.Ref<PackIndex> loadPackIndex(
DfsReader ctx, DfsStreamKey idxKey) throws IOException {
try {
@@ -1044,6 +1183,7 @@ public final class DfsPackFile extends BlockBasedFile {
try (ReadableChannel rc = ctx.db.openFile(desc, INDEX)) {
PackIndex idx = PackIndex.read(alignTo8kBlocks(rc));
ctx.stats.readIdxBytes += rc.position();
+ ctx.emitIndexLoad(desc, INDEX, System.identityHashCode(idx));
index = idx;
return new DfsBlockCache.Ref<>(
idxKey,
@@ -1064,12 +1204,14 @@ public final class DfsPackFile extends BlockBasedFile {
}
}
+ @SuppressWarnings("boxing")
private DfsBlockCache.Ref<PackReverseIndex> loadReverseIdx(
DfsReader ctx, DfsStreamKey revKey, PackIndex idx) {
ctx.stats.readReverseIdx++;
long start = System.nanoTime();
- PackReverseIndex revidx = new PackReverseIndex(idx);
+ PackReverseIndex revidx = PackReverseIndexFactory.computeFromIndex(idx);
reverseIndex = revidx;
+ ctx.emitIndexLoad(desc, REVERSE_INDEX, System.identityHashCode(revidx));
ctx.stats.readReverseIdxMicros += elapsedMicros(start);
return new DfsBlockCache.Ref<>(
revKey,
@@ -1078,6 +1220,41 @@ public final class DfsPackFile extends BlockBasedFile {
revidx);
}
+ @SuppressWarnings("boxing")
+ private DfsBlockCache.Ref<PackObjectSizeIndex> loadObjectSizeIndex(
+ DfsReader ctx, DfsStreamKey objectSizeIndexKey) throws IOException {
+ ctx.stats.readObjectSizeIndex++;
+ long start = System.nanoTime();
+ long size = 0;
+ Exception parsingError = null;
+ try (ReadableChannel rc = ctx.db.openFile(desc, OBJECT_SIZE_INDEX)) {
+ try {
+ objectSizeIndex = PackObjectSizeIndexLoader
+ .load(Channels.newInputStream(rc));
+ size = rc.position();
+ ctx.emitIndexLoad(desc, OBJECT_SIZE_INDEX, System.identityHashCode(objectSizeIndex));
+ } catch (IOException e) {
+ parsingError = e;
+ }
+ } catch (IOException e) {
+ // No object size index in this pack
+ return new DfsBlockCache.Ref<>(objectSizeIndexKey, REF_POSITION, 0,
+ null);
+ }
+
+ if (parsingError != null) {
+ throw new IOException(
+ MessageFormat.format(DfsText.get().shortReadOfIndex,
+ desc.getFileName(OBJECT_SIZE_INDEX)),
+ parsingError);
+ }
+
+ ctx.stats.readObjectSizeIndexBytes += size;
+ ctx.stats.readObjectSizeIndexMicros += elapsedMicros(start);
+ return new DfsBlockCache.Ref<>(objectSizeIndexKey, REF_POSITION, size,
+ objectSizeIndex);
+ }
+
private DfsBlockCache.Ref<PackBitmapIndex> loadBitmapIndex(DfsReader ctx,
DfsStreamKey bitmapKey) throws IOException {
ctx.stats.readBitmap++;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java
index d8e191c4e0..8c7b0ec708 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java
@@ -26,6 +26,7 @@ import org.eclipse.jgit.internal.storage.file.PackIndex;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ProgressMonitor;
+import org.eclipse.jgit.storage.pack.PackConfig;
import org.eclipse.jgit.transport.PackLock;
import org.eclipse.jgit.transport.PackParser;
import org.eclipse.jgit.transport.PackedObjectInfo;
@@ -101,7 +102,6 @@ public class DfsPackParser extends PackParser {
this.packDigest = Constants.newMessageDigest();
}
- /** {@inheritDoc} */
@Override
public PackLock parse(ProgressMonitor receiving, ProgressMonitor resolving)
throws IOException {
@@ -123,6 +123,11 @@ public class DfsPackParser extends PackParser {
packDsc.setBlockSize(PACK, blockSize);
writePackIndex();
+ PackConfig pConfig = new PackConfig(objdb.getRepository().getConfig());
+ if (pConfig.isWriteObjSizeIndex()) {
+ objins.writeObjectSizeIndex(packDsc, getSortedObjectList(null),
+ pConfig.getMinBytesForObjSizeIndex());
+ }
objdb.commitPack(Collections.singletonList(packDsc), null);
rollback = false;
@@ -172,7 +177,6 @@ public class DfsPackParser extends PackParser {
return packDsc;
}
- /** {@inheritDoc} */
@Override
protected void onPackHeader(long objectCount) throws IOException {
if (objectCount == 0) {
@@ -194,34 +198,29 @@ public class DfsPackParser extends PackParser {
currBuf = new byte[blockSize];
}
- /** {@inheritDoc} */
@Override
protected void onBeginWholeObject(long streamPosition, int type,
long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected void onEndWholeObject(PackedObjectInfo info) throws IOException {
info.setCRC((int) crc.getValue());
}
- /** {@inheritDoc} */
@Override
protected void onBeginOfsDelta(long streamPosition,
long baseStreamPosition, long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected void onBeginRefDelta(long streamPosition, AnyObjectId baseId,
long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected UnresolvedDelta onEndDelta() throws IOException {
UnresolvedDelta delta = new UnresolvedDelta();
@@ -229,28 +228,24 @@ public class DfsPackParser extends PackParser {
return delta;
}
- /** {@inheritDoc} */
@Override
protected void onInflatedObjectData(PackedObjectInfo obj, int typeCode,
byte[] data) throws IOException {
// DfsPackParser ignores this event.
}
- /** {@inheritDoc} */
@Override
protected void onObjectHeader(Source src, byte[] raw, int pos, int len)
throws IOException {
crc.update(raw, pos, len);
}
- /** {@inheritDoc} */
@Override
protected void onObjectData(Source src, byte[] raw, int pos, int len)
throws IOException {
crc.update(raw, pos, len);
}
- /** {@inheritDoc} */
@Override
protected void onStoreStream(byte[] raw, int pos, int len)
throws IOException {
@@ -297,7 +292,6 @@ public class DfsPackParser extends PackParser {
return v;
}
- /** {@inheritDoc} */
@Override
protected void onPackFooter(byte[] hash) throws IOException {
// The base class will validate the original hash matches
@@ -307,7 +301,6 @@ public class DfsPackParser extends PackParser {
packHash = hash;
}
- /** {@inheritDoc} */
@Override
protected ObjectTypeAndSize seekDatabase(PackedObjectInfo obj,
ObjectTypeAndSize info) throws IOException {
@@ -316,7 +309,6 @@ public class DfsPackParser extends PackParser {
return readObjectHeader(info);
}
- /** {@inheritDoc} */
@Override
protected ObjectTypeAndSize seekDatabase(UnresolvedDelta delta,
ObjectTypeAndSize info) throws IOException {
@@ -325,7 +317,6 @@ public class DfsPackParser extends PackParser {
return readObjectHeader(info);
}
- /** {@inheritDoc} */
@Override
protected int readDatabase(byte[] dst, int pos, int cnt) throws IOException {
if (cnt == 0)
@@ -381,13 +372,11 @@ public class DfsPackParser extends PackParser {
return (pos / blockSize) * blockSize;
}
- /** {@inheritDoc} */
@Override
protected boolean checkCRC(int oldCRC) {
return oldCRC == (int) crc.getValue();
}
- /** {@inheritDoc} */
@Override
protected boolean onAppendBase(final int typeCode, final byte[] data,
final PackedObjectInfo info) throws IOException {
@@ -427,7 +416,6 @@ public class DfsPackParser extends PackParser {
return true;
}
- /** {@inheritDoc} */
@Override
protected void onEndThinPack() throws IOException {
// Normally when a thin pack is closed the pack header gets
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPacksChangedEvent.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPacksChangedEvent.java
index 750c118268..f4e863d02d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPacksChangedEvent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPacksChangedEvent.java
@@ -18,13 +18,11 @@ import org.eclipse.jgit.events.RepositoryEvent;
*/
public class DfsPacksChangedEvent
extends RepositoryEvent<DfsPacksChangedListener> {
- /** {@inheritDoc} */
@Override
public Class<DfsPacksChangedListener> getListenerType() {
return DfsPacksChangedListener.class;
}
- /** {@inheritDoc} */
@Override
public void dispatch(DfsPacksChangedListener listener) {
listener.onPacksChanged(this);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
index 8d8a766b0f..3f0adcba1a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
@@ -34,6 +34,8 @@ import org.eclipse.jgit.errors.StoredObjectRepresentationNotAvailableException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.internal.storage.commitgraph.CommitGraph;
import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackList;
+import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
+import org.eclipse.jgit.internal.storage.dfs.DfsReader.PackLoadListener.DfsBlockData;
import org.eclipse.jgit.internal.storage.file.BitmapIndexImpl;
import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
import org.eclipse.jgit.internal.storage.file.PackIndex;
@@ -41,6 +43,7 @@ import org.eclipse.jgit.internal.storage.file.PackReverseIndex;
import org.eclipse.jgit.internal.storage.pack.CachedPack;
import org.eclipse.jgit.internal.storage.pack.ObjectReuseAsIs;
import org.eclipse.jgit.internal.storage.pack.ObjectToPack;
+import org.eclipse.jgit.internal.storage.pack.PackExt;
import org.eclipse.jgit.internal.storage.pack.PackOutputStream;
import org.eclipse.jgit.internal.storage.pack.PackWriter;
import org.eclipse.jgit.lib.AbbreviatedObjectId;
@@ -49,6 +52,7 @@ import org.eclipse.jgit.lib.AsyncObjectLoaderQueue;
import org.eclipse.jgit.lib.AsyncObjectSizeQueue;
import org.eclipse.jgit.lib.BitmapIndex;
import org.eclipse.jgit.lib.BitmapIndex.BitmapBuilder;
+import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.InflaterCache;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectLoader;
@@ -78,6 +82,7 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
private DeltaBaseCache baseCache;
private DfsPackFile last;
private boolean avoidUnreachable;
+ private List<PackLoadListener> packLoadListeners = new ArrayList<>();
/**
* Initialize a new DfsReader
@@ -100,19 +105,16 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return baseCache;
}
- /** {@inheritDoc} */
@Override
public ObjectReader newReader() {
return db.newReader();
}
- /** {@inheritDoc} */
@Override
public void setAvoidUnreachableObjects(boolean avoid) {
avoidUnreachable = avoid;
}
- /** {@inheritDoc} */
@Override
public BitmapIndex getBitmapIndex() throws IOException {
for (DfsPackFile pack : db.getPacks()) {
@@ -123,7 +125,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return null;
}
- /** {@inheritDoc} */
@Override
public Optional<CommitGraph> getCommitGraph() throws IOException {
for (DfsPackFile pack : db.getPacks()) {
@@ -135,7 +136,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return Optional.empty();
}
- /** {@inheritDoc} */
@Override
public Collection<CachedPack> getCachedPacksAndUpdate(
BitmapBuilder needBitmap) throws IOException {
@@ -148,7 +148,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return Collections.emptyList();
}
- /** {@inheritDoc} */
@Override
public Collection<ObjectId> resolve(AbbreviatedObjectId id)
throws IOException {
@@ -177,7 +176,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
}
}
- /** {@inheritDoc} */
@Override
public boolean has(AnyObjectId objectId) throws IOException {
if (last != null
@@ -207,7 +205,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return false;
}
- /** {@inheritDoc} */
@Override
public ObjectLoader open(AnyObjectId objectId, int typeHint)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -262,7 +259,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return null;
}
- /** {@inheritDoc} */
@Override
public Set<ObjectId> getShallowCommits() {
return Collections.emptySet();
@@ -370,7 +366,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return avoidUnreachable && pack.isGarbage();
}
- /** {@inheritDoc} */
@Override
public <T extends ObjectId> AsyncObjectLoaderQueue<T> open(
Iterable<T> objectIds, final boolean reportMissing) {
@@ -430,7 +425,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
};
}
- /** {@inheritDoc} */
@Override
public <T extends ObjectId> AsyncObjectSizeQueue<T> getObjectSize(
Iterable<T> objectIds, final boolean reportMissing) {
@@ -492,7 +486,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
};
}
- /** {@inheritDoc} */
@Override
public long getObjectSize(AnyObjectId objectId, int typeHint)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -523,6 +516,59 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
throw new MissingObjectException(objectId.copy(), typeHint);
}
+
+ @Override
+ public boolean isNotLargerThan(AnyObjectId objectId, int typeHint,
+ long limit) throws MissingObjectException,
+ IncorrectObjectTypeException, IOException {
+ DfsPackFile pack = findPackWithObject(objectId);
+ if (pack == null) {
+ if (typeHint == OBJ_ANY) {
+ throw new MissingObjectException(objectId.copy(),
+ JGitText.get().unknownObjectType2);
+ }
+ throw new MissingObjectException(objectId.copy(), typeHint);
+ }
+
+ stats.isNotLargerThanCallCount += 1;
+ if (typeHint != Constants.OBJ_BLOB || !pack.hasObjectSizeIndex(this)) {
+ return pack.getObjectSize(this, objectId) <= limit;
+ }
+
+ long sz = pack.getIndexedObjectSize(this, objectId);
+ if (sz < 0) {
+ stats.objectSizeIndexMiss += 1;
+ } else {
+ stats.objectSizeIndexHit += 1;
+ }
+
+ // Got size from index or we didn't but we are sure it should be there.
+ if (sz >= 0 || pack.getObjectSizeIndexThreshold(this) <= limit) {
+ return sz <= limit;
+ }
+
+ return pack.getObjectSize(this, objectId) <= limit;
+ }
+
+ private DfsPackFile findPackWithObject(AnyObjectId objectId)
+ throws IOException {
+ if (last != null && !skipGarbagePack(last)
+ && last.hasObject(this, objectId)) {
+ return last;
+ }
+ PackList packList = db.getPackList();
+ // hasImpl doesn't check "last", but leaves "last" pointing to the pack
+ // with the object
+ if (hasImpl(packList, objectId)) {
+ return last;
+ } else if (packList.dirty()) {
+ if (hasImpl(db.getPackList(), objectId)) {
+ return last;
+ }
+ }
+ return null;
+ }
+
private long getObjectSizeImpl(PackList packList, AnyObjectId objectId)
throws IOException {
for (DfsPackFile pack : packList.packs) {
@@ -538,7 +584,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return -1;
}
- /** {@inheritDoc} */
@Override
public DfsObjectToPack newObjectToPack(AnyObjectId objectId, int type) {
return new DfsObjectToPack(objectId, type);
@@ -642,7 +687,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return tmp;
}
- /** {@inheritDoc} */
@Override
public void copyObjectAsIs(PackOutputStream out, ObjectToPack otp,
boolean validate) throws IOException,
@@ -651,7 +695,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
src.pack.copyAsIs(out, src, validate, this);
}
- /** {@inheritDoc} */
@Override
public void writeObjects(PackOutputStream out, List<ObjectToPack> list)
throws IOException {
@@ -659,7 +702,6 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
out.writeObject(otp);
}
- /** {@inheritDoc} */
@Override
public void copyPackAsIs(PackOutputStream out, CachedPack pack)
throws IOException {
@@ -796,6 +838,100 @@ public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
return new DfsReaderIoStats(stats);
}
+ /** Announces when data is loaded by reader */
+ protected interface PackLoadListener {
+ /**
+ * Immutable copy of a DFS block metadata
+ */
+ class DfsBlockData {
+ private final int identityHash;
+ private final int size;
+
+ static DfsBlockData of(DfsBlock src) {
+ return new DfsBlockData(src);
+ }
+
+ private DfsBlockData(DfsBlock src) {
+ this.identityHash = System.identityHashCode(src);
+ this.size = src.size();
+ }
+
+ public int getIdentityHash() {
+ return identityHash;
+ }
+
+ public int getSize() {
+ return size;
+ }
+ }
+
+ /**
+ * This is called when an index reference (e.g. primary index, reverse
+ * index, ...) is set in the reader, regarless if loaded from scratch or
+ * copied from cache.
+ *
+ * During the lifetime of the reader, the reference for an index should
+ * be set only once.
+ *
+ * @param packName
+ * Name of the pack
+ * @param src
+ * Source of the pack (e.g. GC, COMPACT, ...)
+ * @param ext
+ * Extension in the pack (e.g. IDX, RIDX, ...)
+ * @param size
+ * Size of the data loaded (usually as bytes in disk)
+ * @param loadedIdx
+ * reference to the loaded index
+ */
+ void onIndexLoad(String packName, PackSource src, PackExt ext, long size,
+ Object loadedIdx);
+
+ /**
+ * This is called when a dfs block is loaded into the reader.
+ *
+ * The reader keeps only one block at a time in memory, so during a
+ * request the same block could be loaded multiple times.
+ *
+ * @param packName
+ * Name of the pack this block belongs to
+ * @param src
+ * Source of the pack (e.g. GC, COMPACT, ...)
+ * @param ext
+ * Extension in the pack (e.g. PACK or REFTABLE)
+ * @param position
+ * Offset in the file requested by caller
+ * @param dfsBlockData
+ * Metadata of the block
+ */
+ void onBlockLoad(String packName, PackSource src, PackExt ext,
+ long position, DfsBlockData dfsBlockData);
+ }
+
+ void emitIndexLoad(DfsPackDescription packDescription, PackExt ext,
+ Object loadedIdx) {
+ packLoadListeners.forEach(
+ listener -> listener.onIndexLoad(packDescription.getFileName(ext),
+ packDescription.getPackSource(), ext,
+ packDescription.getFileSize(ext), loadedIdx));
+ }
+
+ void emitBlockLoad(BlockBasedFile file, long position, DfsBlock dfsBlock) {
+ packLoadListeners
+ .forEach(listener -> listener.onBlockLoad(file.getFileName(),
+ file.desc.getPackSource(), file.ext, position,
+ DfsBlockData.of(dfsBlock)));
+ }
+
+ /**
+ * Add listener to record loads by this reader
+ *
+ * @param listener a listener
+ */
+ protected void addPackLoadListener(PackLoadListener listener) {
+ packLoadListeners.add(listener);
+ }
+
/**
* {@inheritDoc}
* <p>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReaderIoStats.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReaderIoStats.java
index 5ac7985e97..adb4673ae4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReaderIoStats.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReaderIoStats.java
@@ -10,12 +10,15 @@
package org.eclipse.jgit.internal.storage.dfs;
+import org.eclipse.jgit.lib.AnyObjectId;
+
/**
* IO statistics for a {@link org.eclipse.jgit.internal.storage.dfs.DfsReader}.
*/
public class DfsReaderIoStats {
/** POJO to accumulate IO statistics. */
public static class Accumulator {
+
/** Number of times the reader explicitly called scanPacks. */
long scanPacks;
@@ -31,6 +34,9 @@ public class DfsReaderIoStats {
/** Total number of cache hits for commit graphs. */
long commitGraphCacheHit;
+ /** Total number of cache hits for object size indexes. */
+ long objectSizeIndexCacheHit;
+
/** Total number of complete pack indexes read into memory. */
long readIdx;
@@ -43,12 +49,18 @@ public class DfsReaderIoStats {
/** Total number of complete commit graphs read into memory. */
long readCommitGraph;
+ /** Total number of object size indexes added into memory. */
+ long readObjectSizeIndex;
+
/** Total number of bytes read from pack indexes. */
long readIdxBytes;
/** Total number of bytes read from commit graphs. */
long readCommitGraphBytes;
+ /** Total numer of bytes read from object size index */
+ long readObjectSizeIndexBytes;
+
/** Total microseconds spent reading pack indexes. */
long readIdxMicros;
@@ -58,6 +70,9 @@ public class DfsReaderIoStats {
/** Total microseconds spent creating commit graphs. */
long readCommitGraphMicros;
+ /** Total microseconds spent creating object size indexes */
+ long readObjectSizeIndexMicros;
+
/** Total number of bytes read from bitmap indexes. */
long readBitmapIdxBytes;
@@ -88,6 +103,15 @@ public class DfsReaderIoStats {
/** Total microseconds spent inflating compressed bytes. */
long inflationMicros;
+ /** Count of queries for the size of an object via #isNotLargerThan */
+ long isNotLargerThanCallCount;
+
+ /** Object was below threshold in the object size index */
+ long objectSizeIndexMiss;
+
+ /** Object size found in the object size index */
+ long objectSizeIndexHit;
+
Accumulator() {
}
}
@@ -144,6 +168,15 @@ public class DfsReaderIoStats {
}
/**
+ * Get total number of object size index cache hits.
+ *
+ * @return total number of object size index cache hits.
+ */
+ public long getObjectSizeIndexCacheHits() {
+ return stats.objectSizeIndexCacheHit;
+ }
+
+ /**
* Get total number of complete pack indexes read into memory.
*
* @return total number of complete pack indexes read into memory.
@@ -180,6 +213,15 @@ public class DfsReaderIoStats {
}
/**
+ * Get total number of complete object size indexes read into memory.
+ *
+ * @return total number of complete object size indexes read into memory.
+ */
+ public long getReadObjectSizeIndexCount() {
+ return stats.readObjectSizeIndex;
+ }
+
+ /**
* Get total number of bytes read from pack indexes.
*
* @return total number of bytes read from pack indexes.
@@ -297,4 +339,41 @@ public class DfsReaderIoStats {
public long getInflationMicros() {
return stats.inflationMicros;
}
+
+ /**
+ * Get count of invocations to
+ * {@link DfsReader#isNotLargerThan(AnyObjectId, int, long)}
+ * <p>
+ * Each call could use the object-size index or not.
+ *
+ * @return how many times the size of an object was checked with
+ * {@link DfsReader#isNotLargerThan(AnyObjectId, int, long)}
+ */
+ public long getIsNotLargerThanCallCount() {
+ return stats.isNotLargerThanCallCount;
+ }
+
+ /**
+ * Get number of times the size of a blob was found in the object size
+ * index.
+ * <p>
+ * This counts only queries for blobs on packs with object size index.
+ *
+ * @return count of object size index hits
+ */
+ public long getObjectSizeIndexHits() {
+ return stats.objectSizeIndexHit;
+ }
+
+ /**
+ * Get number of times the size of an object was not found in the object
+ * size index. This usually means it was below the threshold.
+ * <p>
+ * This counts only queries for blobs on packs with object size index.
+ *
+ * @return count of object size index misses.
+ */
+ public long getObjectSizeIndexMisses() {
+ return stats.objectSizeIndexMiss;
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefDatabase.java
index ae656707ac..b52456225c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefDatabase.java
@@ -65,7 +65,6 @@ public abstract class DfsRefDatabase extends RefDatabase {
return 0 < read().size();
}
- /** {@inheritDoc} */
@Override
public Ref exactRef(String name) throws IOException {
RefCache curr = read();
@@ -73,13 +72,11 @@ public abstract class DfsRefDatabase extends RefDatabase {
return ref != null ? resolve(ref, 0, curr.ids) : null;
}
- /** {@inheritDoc} */
@Override
public List<Ref> getAdditionalRefs() {
return Collections.emptyList();
}
- /** {@inheritDoc} */
@Override
public Map<String, Ref> getRefs(String prefix) throws IOException {
RefCache curr = read();
@@ -126,7 +123,6 @@ public abstract class DfsRefDatabase extends RefDatabase {
return new SymbolicRef(ref.getName(), dst);
}
- /** {@inheritDoc} */
@Override
public Ref peel(Ref ref) throws IOException {
final Ref oldLeaf = ref.getLeaf();
@@ -176,7 +172,6 @@ public abstract class DfsRefDatabase extends RefDatabase {
return leaf;
}
- /** {@inheritDoc} */
@Override
public RefUpdate newUpdate(String refName, boolean detach)
throws IOException {
@@ -193,7 +188,6 @@ public abstract class DfsRefDatabase extends RefDatabase {
return update;
}
- /** {@inheritDoc} */
@Override
public RefRename newRename(String fromName, String toName)
throws IOException {
@@ -202,7 +196,6 @@ public abstract class DfsRefDatabase extends RefDatabase {
return new DfsRefRename(src, dst);
}
- /** {@inheritDoc} */
@Override
public boolean isNameConflicting(String refName) throws IOException {
RefList<Ref> all = read().ids;
@@ -224,19 +217,16 @@ public abstract class DfsRefDatabase extends RefDatabase {
return false;
}
- /** {@inheritDoc} */
@Override
public void create() {
// Nothing to do.
}
- /** {@inheritDoc} */
@Override
public void refresh() {
clearCache();
}
- /** {@inheritDoc} */
@Override
public void close() {
clearCache();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefRename.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefRename.java
index 569803575d..e76b0bc142 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefRename.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefRename.java
@@ -22,7 +22,6 @@ final class DfsRefRename extends RefRename {
super(src, dst);
}
- /** {@inheritDoc} */
@Override
protected Result doRename() throws IOException {
// TODO Correctly handle renaming foo/bar to foo.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefUpdate.java
index 28331a08e6..f327034123 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRefUpdate.java
@@ -33,19 +33,16 @@ final class DfsRefUpdate extends RefUpdate {
this.refdb = refdb;
}
- /** {@inheritDoc} */
@Override
protected DfsRefDatabase getRefDatabase() {
return refdb;
}
- /** {@inheritDoc} */
@Override
protected DfsRepository getRepository() {
return refdb.getRepository();
}
- /** {@inheritDoc} */
@Override
protected boolean tryLock(boolean deref) throws IOException {
dstRef = getRef();
@@ -60,13 +57,11 @@ final class DfsRefUpdate extends RefUpdate {
return true;
}
- /** {@inheritDoc} */
@Override
protected void unlock() {
// No state is held while "locked".
}
- /** {@inheritDoc} */
@Override
public Result update(RevWalk walk) throws IOException {
try {
@@ -77,7 +72,6 @@ final class DfsRefUpdate extends RefUpdate {
}
}
- /** {@inheritDoc} */
@Override
protected Result doUpdate(Result desiredResult) throws IOException {
ObjectIdRef newRef;
@@ -102,7 +96,6 @@ final class DfsRefUpdate extends RefUpdate {
return Result.LOCK_FAILURE;
}
- /** {@inheritDoc} */
@Override
protected Result doDelete(Result desiredResult) throws IOException {
if (getRefDatabase().compareAndRemove(dstRef)) {
@@ -112,7 +105,6 @@ final class DfsRefUpdate extends RefUpdate {
return Result.LOCK_FAILURE;
}
- /** {@inheritDoc} */
@Override
protected Result doLink(String target) throws IOException {
final SymbolicRef newRef = new SymbolicRef(
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java
index 6c3b056efd..3ba74b26fc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java
@@ -75,19 +75,16 @@ public class DfsReftableDatabase extends DfsRefDatabase {
stack = null;
}
- /** {@inheritDoc} */
@Override
public boolean hasVersioning() {
return true;
}
- /** {@inheritDoc} */
@Override
public boolean performsAtomicTransactions() {
return true;
}
- /** {@inheritDoc} */
@Override
public BatchRefUpdate newBatchUpdate() {
DfsObjDatabase odb = getRepository().getObjectDatabase();
@@ -151,13 +148,11 @@ public class DfsReftableDatabase extends DfsRefDatabase {
return reftableDatabase.isNameConflicting(refName, new TreeSet<>(), new HashSet<>());
}
- /** {@inheritDoc} */
@Override
public Ref exactRef(String name) throws IOException {
return reftableDatabase.exactRef(name);
}
- /** {@inheritDoc} */
@Override
public Map<String, Ref> getRefs(String prefix) throws IOException {
List<Ref> refs = reftableDatabase.getRefsByPrefix(prefix);
@@ -169,21 +164,18 @@ public class DfsReftableDatabase extends DfsRefDatabase {
RefList.emptyList());
}
- /** {@inheritDoc} */
@Override
public List<Ref> getRefsByPrefix(String prefix) throws IOException {
return reftableDatabase.getRefsByPrefix(prefix);
}
- /** {@inheritDoc} */
@Override
public List<Ref> getRefsByPrefixWithExclusions(String include, Set<String> excludes)
throws IOException {
return reftableDatabase.getRefsByPrefixWithExclusions(include, excludes);
}
- /** {@inheritDoc} */
@Override
public Set<Ref> getTipsWithSha1(ObjectId id) throws IOException {
if (!getReftableConfig().isIndexObjects()) {
@@ -192,13 +184,11 @@ public class DfsReftableDatabase extends DfsRefDatabase {
return reftableDatabase.getTipsWithSha1(id);
}
- /** {@inheritDoc} */
@Override
public boolean hasFastTipsWithSha1() throws IOException {
return reftableDatabase.hasFastTipsWithSha1();
}
- /** {@inheritDoc} */
@Override
public Ref peel(Ref ref) throws IOException {
Ref oldLeaf = ref.getLeaf();
@@ -233,7 +223,6 @@ public class DfsReftableDatabase extends DfsRefDatabase {
}
}
- /** {@inheritDoc} */
@Override
protected boolean compareAndPut(Ref oldRef, @Nullable Ref newRef)
throws IOException {
@@ -254,13 +243,11 @@ public class DfsReftableDatabase extends DfsRefDatabase {
}
}
- /** {@inheritDoc} */
@Override
protected boolean compareAndRemove(Ref oldRef) throws IOException {
return compareAndPut(oldRef, null);
}
- /** {@inheritDoc} */
@Override
protected RefCache scanAllRefs() throws IOException {
throw new UnsupportedOperationException();
@@ -276,7 +263,6 @@ public class DfsReftableDatabase extends DfsRefDatabase {
// Unnecessary; DfsReftableBatchRefUpdate calls clearCache().
}
- /** {@inheritDoc} */
@Override
protected void cachePeeledState(Ref oldLeaf, Ref newLeaf) {
// Do not cache peeled state in reftable.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableStack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableStack.java
index 27b03299e4..97ba4d52eb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableStack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableStack.java
@@ -80,7 +80,6 @@ public class DfsReftableStack implements AutoCloseable {
return Collections.unmodifiableList(tables);
}
- /** {@inheritDoc} */
@Override
public void close() {
for (ReftableReader t : tables) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java
index 32c0ccdf4f..218f1e9552 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java
@@ -45,7 +45,6 @@ public abstract class DfsRepository extends Repository {
this.description = builder.getRepositoryDescription();
}
- /** {@inheritDoc} */
@Override
public abstract DfsObjDatabase getObjectDatabase();
@@ -72,7 +71,6 @@ public abstract class DfsRepository extends Repository {
return true;
}
- /** {@inheritDoc} */
@Override
public void create(boolean bare) throws IOException {
if (exists())
@@ -85,39 +83,33 @@ public abstract class DfsRepository extends Repository {
throw new IOException(result.name());
}
- /** {@inheritDoc} */
@Override
public StoredConfig getConfig() {
return config;
}
- /** {@inheritDoc} */
@Override
public String getIdentifier() {
return getDescription().getRepositoryName();
}
- /** {@inheritDoc} */
@Override
public void scanForRepoChanges() throws IOException {
getRefDatabase().refresh();
getObjectDatabase().clearCache();
}
- /** {@inheritDoc} */
@Override
public void notifyIndexChanged(boolean internal) {
// Do not send notifications.
// There is no index, as there is no working tree.
}
- /** {@inheritDoc} */
@Override
public ReflogReader getReflogReader(String refName) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public AttributesNodeProvider createAttributesNodeProvider() {
// TODO Check if the implementation used in FileRepository can be used
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryBuilder.java
index 943d92684b..ab5f7fe75e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryBuilder.java
@@ -72,7 +72,6 @@ public abstract class DfsRepositoryBuilder<B extends DfsRepositoryBuilder, R ext
return self();
}
- /** {@inheritDoc} */
@Override
public B setup() throws IllegalArgumentException, IOException {
super.setup();
@@ -97,7 +96,6 @@ public abstract class DfsRepositoryBuilder<B extends DfsRepositoryBuilder, R ext
// We don't support local file IO and thus shouldn't permit these to set.
- /** {@inheritDoc} */
@Override
public B setGitDir(File gitDir) {
if (gitDir != null)
@@ -105,7 +103,6 @@ public abstract class DfsRepositoryBuilder<B extends DfsRepositoryBuilder, R ext
return self();
}
- /** {@inheritDoc} */
@Override
public B setObjectDirectory(File objectDirectory) {
if (objectDirectory != null)
@@ -113,14 +110,12 @@ public abstract class DfsRepositoryBuilder<B extends DfsRepositoryBuilder, R ext
return self();
}
- /** {@inheritDoc} */
@Override
public B addAlternateObjectDirectory(File other) {
throw new UnsupportedOperationException(
JGitText.get().unsupportedAlternates);
}
- /** {@inheritDoc} */
@Override
public B setWorkTree(File workTree) {
if (workTree != null)
@@ -128,7 +123,6 @@ public abstract class DfsRepositoryBuilder<B extends DfsRepositoryBuilder, R ext
return self();
}
- /** {@inheritDoc} */
@Override
public B setIndexFile(File indexFile) {
if (indexFile != null)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryDescription.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryDescription.java
index 069956b586..e949085819 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryDescription.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepositoryDescription.java
@@ -42,7 +42,6 @@ public class DfsRepositoryDescription {
return repositoryName;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
if (getRepositoryName() != null)
@@ -50,7 +49,6 @@ public class DfsRepositoryDescription {
return System.identityHashCode(this);
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object b) {
if (b instanceof DfsRepositoryDescription){
@@ -61,7 +59,6 @@ public class DfsRepositoryDescription {
return false;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsStreamKey.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsStreamKey.java
index f3f30914f6..8983c2d2eb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsStreamKey.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsStreamKey.java
@@ -56,17 +56,14 @@ public abstract class DfsStreamKey {
this.packExtPos = ext == null ? 0 : ext.getPosition();
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return hash;
}
- /** {@inheritDoc} */
@Override
public abstract boolean equals(Object o);
- /** {@inheritDoc} */
@SuppressWarnings("boxing")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
index 583b8b3f6b..734a5fca3d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
@@ -78,13 +78,11 @@ public class InMemoryRepository extends DfsRepository {
return new MemRefDatabase();
}
- /** {@inheritDoc} */
@Override
public MemObjDatabase getObjectDatabase() {
return objdb;
}
- /** {@inheritDoc} */
@Override
public RefDatabase getRefDatabase() {
return refdb;
@@ -102,14 +100,12 @@ public class InMemoryRepository extends DfsRepository {
refdb.performsAtomicTransactions = atomic;
}
- /** {@inheritDoc} */
@Override
@Nullable
public String getGitwebDescription() {
return gitwebDescription;
}
- /** {@inheritDoc} */
@Override
public void setGitwebDescription(@Nullable String d) {
gitwebDescription = d;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/LargePackedWholeObject.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/LargePackedWholeObject.java
index cd4f168d86..89a3afbd9b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/LargePackedWholeObject.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/LargePackedWholeObject.java
@@ -44,31 +44,26 @@ final class LargePackedWholeObject extends ObjectLoader {
this.db = db;
}
- /** {@inheritDoc} */
@Override
public int getType() {
return type;
}
- /** {@inheritDoc} */
@Override
public long getSize() {
return size;
}
- /** {@inheritDoc} */
@Override
public boolean isLarge() {
return true;
}
- /** {@inheritDoc} */
@Override
public byte[] getCachedBytes() throws LargeObjectException {
throw new LargeObjectException();
}
- /** {@inheritDoc} */
@Override
public ObjectStream openStream() throws MissingObjectException, IOException {
PackInputStream packIn;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/PackInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/PackInputStream.java
index 6ff81646cf..3d07660a60 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/PackInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/PackInputStream.java
@@ -31,7 +31,6 @@ final class PackInputStream extends InputStream {
ctx.pin(pack, pos);
}
- /** {@inheritDoc} */
@Override
public int read(byte[] b, int off, int len) throws IOException {
int n = ctx.copy(pack, pos, b, off, len);
@@ -39,7 +38,6 @@ final class PackInputStream extends InputStream {
return n;
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
byte[] buf = new byte[1];
@@ -47,7 +45,6 @@ final class PackInputStream extends InputStream {
return n == 1 ? buf[0] & 0xff : -1;
}
- /** {@inheritDoc} */
@Override
public void close() {
ctx.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java
index ec53818b4e..53e36956c8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java
@@ -25,7 +25,6 @@ abstract class BasePackBitmapIndex extends PackBitmapIndex {
this.bitmaps = bitmaps;
}
- /** {@inheritDoc} */
@Override
public EWAHCompressedBitmap getBitmap(AnyObjectId objectId) {
StoredBitmap sb = bitmaps.get(objectId);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java
index 9aa14171c7..55c05ef78d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java
@@ -54,7 +54,6 @@ public class BitmapIndexImpl implements BitmapIndex {
return packIndex;
}
- /** {@inheritDoc} */
@Override
public CompressedBitmap getBitmap(AnyObjectId objectId) {
EWAHCompressedBitmap compressed = packIndex.getBitmap(objectId);
@@ -63,7 +62,6 @@ public class BitmapIndexImpl implements BitmapIndex {
return new CompressedBitmap(compressed, this);
}
- /** {@inheritDoc} */
@Override
public CompressedBitmapBuilder newBitmapBuilder() {
return new CompressedBitmapBuilder(this);
@@ -291,7 +289,9 @@ public class BitmapIndexImpl implements BitmapIndex {
* Construct compressed bitmap for given bitmap and bitmap index
*
* @param bitmap
+ * the bitmap
* @param bitmapIndex
+ * the bitmap index
*/
public CompressedBitmap(EWAHCompressedBitmap bitmap, BitmapIndexImpl bitmapIndex) {
this.bitmap = bitmap;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteArrayWindow.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteArrayWindow.java
index 1036535423..ef1392e6e0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteArrayWindow.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteArrayWindow.java
@@ -30,7 +30,6 @@ final class ByteArrayWindow extends ByteWindow {
array = b;
}
- /** {@inheritDoc} */
@Override
protected int copy(int p, byte[] b, int o, int n) {
n = Math.min(array.length - p, n);
@@ -38,7 +37,6 @@ final class ByteArrayWindow extends ByteWindow {
return n;
}
- /** {@inheritDoc} */
@Override
protected int setInput(int pos, Inflater inf)
throws DataFormatException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteBufferWindow.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteBufferWindow.java
index b6877578c9..4094f130f6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteBufferWindow.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ByteBufferWindow.java
@@ -32,7 +32,6 @@ final class ByteBufferWindow extends ByteWindow {
buffer = b;
}
- /** {@inheritDoc} */
@Override
protected int copy(int p, byte[] b, int o, int n) {
final ByteBuffer s = buffer.slice();
@@ -57,7 +56,6 @@ final class ByteBufferWindow extends ByteWindow {
}
}
- /** {@inheritDoc} */
@Override
protected int setInput(int pos, Inflater inf)
throws DataFormatException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CachedObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CachedObjectDirectory.java
index 2e19580f5f..129d2e0894 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CachedObjectDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CachedObjectDirectory.java
@@ -86,13 +86,11 @@ class CachedObjectDirectory extends FileObjectDatabase {
return m;
}
- /** {@inheritDoc} */
@Override
public void close() {
// Don't close anything.
}
- /** {@inheritDoc} */
@Override
public ObjectDatabase newCachedDatabase() {
return this;
@@ -153,7 +151,6 @@ class CachedObjectDirectory extends FileObjectDatabase {
wrapped.resolve(matches, id);
}
- /** {@inheritDoc} */
@Override
public boolean has(AnyObjectId objectId) throws IOException {
return has(objectId, null);
@@ -261,7 +258,6 @@ class CachedObjectDirectory extends FileObjectDatabase {
return wrapped.getPacks();
}
- /** {@inheritDoc} */
@Override
public Optional<CommitGraph> getCommitGraph() {
return wrapped.getCommitGraph();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntryImpl.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntryImpl.java
index 2b8779f6df..d641da59e1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntryImpl.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntryImpl.java
@@ -32,13 +32,11 @@ public class CheckoutEntryImpl implements CheckoutEntry {
to = comment.substring(p2 + " to ".length(), p3); //$NON-NLS-1$
}
- /** {@inheritDoc} */
@Override
public String getFromBranch() {
return from;
}
- /** {@inheritDoc} */
@Override
public String getToBranch() {
return to;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileCommitGraph.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileCommitGraph.java
index 44429a7786..5172963e2e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileCommitGraph.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileCommitGraph.java
@@ -108,7 +108,8 @@ public class FileCommitGraph {
// commit-graph file was not modified
return this;
}
- return new GraphSnapshot(file, FileSnapshot.save(file), open(file));
+ return new GraphSnapshot(file, FileSnapshot.save(file),
+ open(file));
}
private static CommitGraph open(File file) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileObjectDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileObjectDatabase.java
index aa578d31ba..e8f532fe24 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileObjectDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileObjectDatabase.java
@@ -33,13 +33,11 @@ abstract class FileObjectDatabase extends ObjectDatabase {
INSERTED, EXISTS_PACKED, EXISTS_LOOSE, FAILURE;
}
- /** {@inheritDoc} */
@Override
public ObjectReader newReader() {
return new WindowCursor(this);
}
- /** {@inheritDoc} */
@Override
public ObjectDirectoryInserter newInserter() {
return new ObjectDirectoryInserter(this, getConfig());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
index e9e17c0ec5..3abd71aee6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
@@ -93,13 +93,13 @@ public class FileReftableDatabase extends RefDatabase {
/**
* @param repoDir
+ * the repository's metadata directory
* @return whether the given repo uses reftable for refdb storage.
*/
public static boolean isReftable(File repoDir) {
return new File(repoDir, Constants.REFTABLE).isDirectory();
}
- /** {@inheritDoc} */
@Override
public boolean hasFastTipsWithSha1() throws IOException {
return reftableDatabase.hasFastTipsWithSha1();
@@ -124,20 +124,17 @@ public class FileReftableDatabase extends RefDatabase {
return reftableDatabase.getLock();
}
- /** {@inheritDoc} */
@Override
public boolean performsAtomicTransactions() {
return true;
}
- /** {@inheritDoc} */
@NonNull
@Override
public BatchRefUpdate newBatchUpdate() {
return new FileReftableBatchRefUpdate(this, fileRepository);
}
- /** {@inheritDoc} */
@Override
public RefUpdate newUpdate(String refName, boolean detach)
throws IOException {
@@ -157,19 +154,16 @@ public class FileReftableDatabase extends RefDatabase {
return update;
}
- /** {@inheritDoc} */
@Override
public Ref exactRef(String name) throws IOException {
return reftableDatabase.exactRef(name);
}
- /** {@inheritDoc} */
@Override
public List<Ref> getRefs() throws IOException {
return super.getRefs();
}
- /** {@inheritDoc} */
@Override
public Map<String, Ref> getRefs(String prefix) throws IOException {
List<Ref> refs = reftableDatabase.getRefsByPrefix(prefix);
@@ -181,20 +175,17 @@ public class FileReftableDatabase extends RefDatabase {
RefList.emptyList());
}
- /** {@inheritDoc} */
@Override
public List<Ref> getRefsByPrefixWithExclusions(String include, Set<String> excludes)
throws IOException {
return reftableDatabase.getRefsByPrefixWithExclusions(include, excludes);
}
- /** {@inheritDoc} */
@Override
public List<Ref> getAdditionalRefs() throws IOException {
return Collections.emptyList();
}
- /** {@inheritDoc} */
@Override
public Ref peel(Ref ref) throws IOException {
Ref oldLeaf = ref.getLeaf();
@@ -303,7 +294,6 @@ public class FileReftableDatabase extends RefDatabase {
}
}
- /** {@inheritDoc} */
@Override
public RefRename newRename(String fromName, String toName)
throws IOException {
@@ -312,20 +302,17 @@ public class FileReftableDatabase extends RefDatabase {
return new FileRefRename(src, dst);
}
- /** {@inheritDoc} */
@Override
public boolean isNameConflicting(String name) throws IOException {
return reftableDatabase.isNameConflicting(name, new TreeSet<>(),
new HashSet<>());
}
- /** {@inheritDoc} */
@Override
public void close() {
reftableStack.close();
}
- /** {@inheritDoc} */
@Override
public void create() throws IOException {
FileUtils.mkdir(
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java
index 5152367d23..c74a298429 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableStack.java
@@ -264,6 +264,7 @@ public class FileReftableStack implements AutoCloseable {
* @param w
* writer to use
* @throws IOException
+ * if an IO error occurred
*/
void call(ReftableWriter w) throws IOException;
}
@@ -559,6 +560,7 @@ public class FileReftableStack implements AutoCloseable {
* Calculate an approximate log2.
*
* @param sz
+ * the number to compute an approximate log2 for
* @return log2
*/
static int log(long sz) {
@@ -688,6 +690,7 @@ public class FileReftableStack implements AutoCloseable {
* shape.
*
* @throws IOException
+ * if an IO error occurred
*/
private void autoCompact() throws IOException {
Optional<Segment> cand = autoCompactCandidate(tableSizes());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
index 3e92cddacd..e5a00d3925 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
@@ -321,19 +321,16 @@ public class FileRepository extends Repository {
return objectDatabase.getDirectory();
}
- /** {@inheritDoc} */
@Override
public ObjectDirectory getObjectDatabase() {
return objectDatabase;
}
- /** {@inheritDoc} */
@Override
public RefDatabase getRefDatabase() {
return refs;
}
- /** {@inheritDoc} */
@Override
public String getIdentifier() {
File directory = getDirectory();
@@ -343,7 +340,6 @@ public class FileRepository extends Repository {
throw new IllegalStateException();
}
- /** {@inheritDoc} */
@Override
public FileBasedConfig getConfig() {
try {
@@ -357,7 +353,6 @@ public class FileRepository extends Repository {
return repoConfig;
}
- /** {@inheritDoc} */
@Override
@Nullable
public String getGitwebDescription() throws IOException {
@@ -376,7 +371,6 @@ public class FileRepository extends Repository {
return d;
}
- /** {@inheritDoc} */
@Override
public void setGitwebDescription(@Nullable String description)
throws IOException {
@@ -423,6 +417,7 @@ public class FileRepository extends Repository {
* client trying to push changes avoid pushing more than it needs to.
*
* @throws IOException
+ * if an IO error occurred
*/
@Override
public Set<ObjectId> getAdditionalHaves() throws IOException {
@@ -478,7 +473,6 @@ public class FileRepository extends Repository {
objectDatabase.openPack(pack);
}
- /** {@inheritDoc} */
@Override
public void scanForRepoChanges() throws IOException {
getRefDatabase().getRefs(); // This will look for changes to refs
@@ -504,7 +498,6 @@ public class FileRepository extends Repository {
notifyIndexChanged(false);
}
- /** {@inheritDoc} */
@Override
public void notifyIndexChanged(boolean internal) {
synchronized (snapshotLock) {
@@ -513,7 +506,6 @@ public class FileRepository extends Repository {
fireEvent(new IndexChangedEvent(internal));
}
- /** {@inheritDoc} */
@Override
public ReflogReader getReflogReader(String refName) throws IOException {
if (refs instanceof FileReftableDatabase) {
@@ -537,7 +529,6 @@ public class FileRepository extends Repository {
return new ReflogReaderImpl(this, ref.getName());
}
- /** {@inheritDoc} */
@Override
public AttributesNodeProvider createAttributesNodeProvider() {
return new AttributesNodeProviderImpl(this);
@@ -600,7 +591,6 @@ public class FileRepository extends Repository {
ConfigConstants.CONFIG_KEY_AUTODETACH, true);
}
- /** {@inheritDoc} */
@SuppressWarnings("FutureReturnValueIgnored")
@Override
public void autoGC(ProgressMonitor monitor) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileSnapshot.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileSnapshot.java
index 6088c152a1..9a85752062 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileSnapshot.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileSnapshot.java
@@ -404,7 +404,6 @@ public class FileSnapshot {
&& Objects.equals(fileKey, other.fileKey);
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object obj) {
if (this == obj) {
@@ -420,7 +419,6 @@ public class FileSnapshot {
return equals(other);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return Objects.hash(lastModified, Long.valueOf(size), fileKey);
@@ -474,7 +472,6 @@ public class FileSnapshot {
return racyThreshold;
}
- /** {@inheritDoc} */
@SuppressWarnings({ "nls", "ReferenceEquality" })
@Override
public String toString() {
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 8d624bca23..40323aa26f 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
@@ -135,6 +135,8 @@ public class GC {
private static final int DEFAULT_AUTOLIMIT = 6700;
+ private static final boolean DEFAULT_WRITE_BLOOM_FILTER = false;
+
private static final boolean DEFAULT_WRITE_COMMIT_GRAPH = false;
private static volatile ExecutorService executor;
@@ -224,9 +226,10 @@ public class GC {
* gc.log.
*
* @return the collection of
- * {@link org.eclipse.jgit.internal.storage.file.Pack}'s which
- * are newly created
+ * {@link org.eclipse.jgit.internal.storage.file.Pack}'s which are
+ * newly created
* @throws java.io.IOException
+ * if an IO error occurred
* @throws java.text.ParseException
* If the configuration parameter "gc.pruneexpire" couldn't be
* parsed
@@ -300,10 +303,15 @@ public class GC {
* pack files.
*
* @param inserter
+ * used to insert objects
* @param reader
+ * used to read objects
* @param pack
+ * the pack file to loosen objects for
* @param existing
+ * existing objects
* @throws IOException
+ * if an IO error occurred
*/
private void loosen(ObjectDirectoryInserter inserter, ObjectReader reader, Pack pack, HashSet<ObjectId> existing)
throws IOException {
@@ -329,13 +337,17 @@ public class GC {
* directory. If an expirationDate is set then pack files which are younger
* than the expirationDate will not be deleted nor preserved.
* <p>
- * If we're not immediately expiring loose objects, loosen any objects
- * in the old pack files which aren't in the new pack files.
+ * If we're not immediately expiring loose objects, loosen any objects in
+ * the old pack files which aren't in the new pack files.
*
* @param oldPacks
+ * old pack files
* @param newPacks
+ * new pack files
* @throws ParseException
+ * if an error occurred during parsing
* @throws IOException
+ * if an IO error occurred
*/
private void deleteOldPacks(Collection<Pack> oldPacks,
Collection<Pack> newPacks) throws ParseException, IOException {
@@ -382,12 +394,15 @@ public class GC {
}
/**
- * Deletes old pack file, unless 'preserve-oldpacks' is set, in which case it
- * moves the pack file to the preserved directory
+ * Deletes old pack file, unless 'preserve-oldpacks' is set, in which case
+ * it moves the pack file to the preserved directory
*
* @param packFile
+ * the packfile to delete
* @param deleteOptions
+ * delete option flags
* @throws IOException
+ * if an IO error occurred
*/
private void removeOldPack(PackFile packFile, int deleteOptions)
throws IOException {
@@ -426,6 +441,7 @@ public class GC {
* with a ".pack" file without a ".index" file.
*
* @param packFile
+ * the pack file to prune files for
*/
private void prunePack(PackFile packFile) {
try {
@@ -453,6 +469,7 @@ public class GC {
* because the filesystem delete operation fails) this is silently ignored.
*
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void prunePacked() throws IOException {
ObjectDirectory objdb = repo.getObjectDatabase();
@@ -511,6 +528,7 @@ public class GC {
* @param objectsToKeep
* a set of objects which should explicitly not be pruned
* @throws java.io.IOException
+ * if an IO error occurred
* @throws java.text.ParseException
* If the configuration parameter "gc.pruneexpire" couldn't be
* parsed
@@ -718,10 +736,15 @@ public class GC {
* by the given ObjectWalk
*
* @param id2File
+ * mapping objectIds to files
* @param w
+ * used to walk objects
* @throws MissingObjectException
+ * if an object is missing
* @throws IncorrectObjectTypeException
+ * if an object has an unexpected tyoe
* @throws IOException
+ * if an IO error occurred
*/
private void removeReferenced(Map<ObjectId, File> id2File,
ObjectWalk w) throws MissingObjectException,
@@ -762,6 +785,7 @@ public class GC {
* is compacted into a single table.
*
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void packRefs() throws IOException {
RefDatabase refDb = repo.getRefDatabase();
@@ -816,7 +840,6 @@ public class GC {
Set<ObjectId> allHeads = new HashSet<>();
Set<ObjectId> allTags = new HashSet<>();
Set<ObjectId> nonHeads = new HashSet<>();
- Set<ObjectId> txnHeads = new HashSet<>();
Set<ObjectId> tagTargets = new HashSet<>();
Set<ObjectId> indexObjects = listNonHEADIndexObjects();
@@ -881,12 +904,6 @@ public class GC {
if (rest != null)
ret.add(rest);
}
- if (!txnHeads.isEmpty()) {
- Pack txn = writePack(txnHeads, PackWriter.NONE, PackWriter.NONE,
- PackWriter.NONE, null, excluded, false);
- if (txn != null)
- ret.add(txn);
- }
try {
deleteOldPacks(toBeDeleted, ret);
} catch (ParseException e) {
@@ -932,6 +949,7 @@ public class GC {
* the list of wanted objects, writer walks commits starting at
* these. Must not be {@code null}.
* @throws IOException
+ * if an IO error occurred
*/
void writeCommitGraph(@NonNull Set<? extends ObjectId> wants)
throws IOException {
@@ -948,7 +966,8 @@ public class GC {
File tmpFile = null;
try (RevWalk walk = new RevWalk(repo)) {
CommitGraphWriter writer = new CommitGraphWriter(
- GraphCommits.fromWalk(pm, wants, walk));
+ GraphCommits.fromWalk(pm, wants, walk),
+ shouldWriteBloomFilter());
tmpFile = File.createTempFile("commit_", //$NON-NLS-1$
COMMIT_GRAPH.getTmpExtension(),
repo.getObjectDatabase().getInfoDirectory());
@@ -1000,7 +1019,7 @@ public class GC {
/**
* If {@code true}, will rewrite the commit-graph file when gc is run.
*
- * @return true if commit-graph should be writen. Default is {@code false}.
+ * @return true if commit-graph should be written. Default is {@code false}.
*/
boolean shouldWriteCommitGraphWhenGc() {
return repo.getConfig().getBoolean(ConfigConstants.CONFIG_GC_SECTION,
@@ -1008,6 +1027,17 @@ public class GC {
DEFAULT_WRITE_COMMIT_GRAPH);
}
+ /**
+ * If {@code true}, generates bloom filter in the commit-graph file.
+ *
+ * @return true if bloom filter should be written. Default is {@code false}.
+ */
+ boolean shouldWriteBloomFilter() {
+ return repo.getConfig().getBoolean(ConfigConstants.CONFIG_GC_SECTION,
+ ConfigConstants.CONFIG_KEY_WRITE_CHANGED_PATHS,
+ DEFAULT_WRITE_BLOOM_FILTER);
+ }
+
private static boolean isHead(Ref ref) {
return ref.getName().startsWith(Constants.R_HEADS);
}
@@ -1148,9 +1178,11 @@ public class GC {
/**
* @param ref
* the ref which log should be inspected
- * @param minTime only reflog entries not older then this time are processed
+ * @param minTime
+ * only reflog entries not older then this time are processed
* @return the {@link ObjectId}s contained in the reflog
* @throws IOException
+ * if an IO error occurred
*/
private Set<ObjectId> listRefLogObjects(Ref ref, long minTime) throws IOException {
ReflogReader reflogReader = repo.getReflogReader(ref);
@@ -1182,6 +1214,7 @@ public class GC {
*
* @return a collection of refs pointing to live objects.
* @throws IOException
+ * if an IO error occurred
*/
private Collection<Ref> getAllRefs() throws IOException {
RefDatabase refdb = repo.getRefDatabase();
@@ -1208,8 +1241,11 @@ public class GC {
*
* @return a set of ObjectIds of changed objects in the index
* @throws IOException
+ * if an IO error occurred
* @throws CorruptObjectException
+ * if an object is corrupt
* @throws NoWorkTreeException
+ * if the repository has no working directory
*/
private Set<ObjectId> listNonHEADIndexObjects()
throws CorruptObjectException, IOException {
@@ -1329,6 +1365,25 @@ public class GC {
idxChannel.force(true);
}
+ if (pw.isReverseIndexEnabled()) {
+ File tmpReverseIndexFile = new File(packdir,
+ tmpBase + REVERSE_INDEX.getTmpExtension());
+ tmpExts.put(REVERSE_INDEX, tmpReverseIndexFile);
+ if (!tmpReverseIndexFile.createNewFile()) {
+ throw new IOException(MessageFormat.format(
+ JGitText.get().cannotCreateIndexfile,
+ tmpReverseIndexFile.getPath()));
+ }
+ try (FileOutputStream fos = new FileOutputStream(
+ tmpReverseIndexFile);
+ FileChannel channel = fos.getChannel();
+ OutputStream stream = Channels
+ .newOutputStream(channel)) {
+ pw.writeReverseIndex(stream);
+ channel.force(true);
+ }
+ }
+
if (pw.prepareBitmapIndex(pm)) {
File tmpBitmapIdx = new File(packdir,
tmpBase + BITMAP_INDEX.getTmpExtension());
@@ -1503,6 +1558,7 @@ public class GC {
*
* @return information about objects and pack files for a FileRepository
* @throws java.io.IOException
+ * if an IO error occurred
*/
public RepoStatistics getStatistics() throws IOException {
RepoStatistics ret = new RepoStatistics();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GcLog.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GcLog.java
index 86994a9eeb..628bf5db0c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GcLog.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GcLog.java
@@ -132,6 +132,7 @@ class GcLog {
* @param content
* The content to write
* @throws IOException
+ * if an IO error occurred
*/
void write(String content) throws IOException {
if (content.length() > 0) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GlobalAttributesNode.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GlobalAttributesNode.java
index 254557c08f..bbb7476d65 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GlobalAttributesNode.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GlobalAttributesNode.java
@@ -39,6 +39,7 @@ public class GlobalAttributesNode extends AttributesNode {
*
* @return the attributes node
* @throws java.io.IOException
+ * if an IO error occurred
*/
public AttributesNode load() throws IOException {
AttributesNode r = new AttributesNode();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/InfoAttributesNode.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/InfoAttributesNode.java
index a22cd3ffeb..11d842b246 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/InfoAttributesNode.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/InfoAttributesNode.java
@@ -39,6 +39,7 @@ public class InfoAttributesNode extends AttributesNode {
*
* @return the attributes node
* @throws java.io.IOException
+ * if an IO error occurred
*/
public AttributesNode load() throws IOException {
AttributesNode r = new AttributesNode();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LargePackedWholeObject.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LargePackedWholeObject.java
index e2fbd7a0b4..15223ad437 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LargePackedWholeObject.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LargePackedWholeObject.java
@@ -44,25 +44,21 @@ class LargePackedWholeObject extends ObjectLoader {
this.db = db;
}
- /** {@inheritDoc} */
@Override
public int getType() {
return type;
}
- /** {@inheritDoc} */
@Override
public long getSize() {
return size;
}
- /** {@inheritDoc} */
@Override
public boolean isLarge() {
return true;
}
- /** {@inheritDoc} */
@Override
public byte[] getCachedBytes() throws LargeObjectException {
try {
@@ -72,7 +68,6 @@ class LargePackedWholeObject extends ObjectLoader {
}
}
- /** {@inheritDoc} */
@Override
public ObjectStream openStream() throws MissingObjectException, IOException {
WindowCursor wc = new WindowCursor(db);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LazyObjectIdSetFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LazyObjectIdSetFile.java
index 2d73f9bd10..d0d320bf02 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LazyObjectIdSetFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LazyObjectIdSetFile.java
@@ -41,7 +41,6 @@ public class LazyObjectIdSetFile implements ObjectIdSet {
this.src = src;
}
- /** {@inheritDoc} */
@Override
public boolean contains(AnyObjectId objectId) {
if (set == null) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalCachedPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalCachedPack.java
index f112947bae..22eef9468c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalCachedPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalCachedPack.java
@@ -39,7 +39,6 @@ class LocalCachedPack extends CachedPack {
this.packs = packs.toArray(new Pack[0]);
}
- /** {@inheritDoc} */
@Override
public long getObjectCount() throws IOException {
long cnt = 0;
@@ -54,7 +53,6 @@ class LocalCachedPack extends CachedPack {
pack.copyPackAsIs(out, wc);
}
- /** {@inheritDoc} */
@Override
public boolean hasObject(ObjectToPack obj, StoredObjectRepresentation rep) {
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java
index 559718af3a..3f3d78c734 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java
@@ -59,13 +59,11 @@ class LocalObjectRepresentation extends StoredObjectRepresentation {
private ObjectId baseId;
- /** {@inheritDoc} */
@Override
public int getWeight() {
return (int) Math.min(length, Integer.MAX_VALUE);
}
- /** {@inheritDoc} */
@Override
public ObjectId getDeltaBase() {
if (baseId == null && getFormat() == PACK_DELTA) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectToPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectToPack.java
index ac6cd212d5..ca25212e00 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectToPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectToPack.java
@@ -29,14 +29,12 @@ class LocalObjectToPack extends ObjectToPack {
super(src, type);
}
- /** {@inheritDoc} */
@Override
protected void clearReuseAsIs() {
super.clearReuseAsIs();
pack = null;
}
- /** {@inheritDoc} */
@Override
public void select(StoredObjectRepresentation ref) {
LocalObjectRepresentation ptr = (LocalObjectRepresentation) ref;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java
index d06b5a72d1..8ada0a90e1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java
@@ -79,6 +79,7 @@ public class LockFile {
* Get the lock file corresponding to the given file.
*
* @param file
+ * given file
* @return lock file
*/
static File getLockFile(File file) {
@@ -575,7 +576,6 @@ public class LockFile {
written = false;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java
index 326c5f6457..278c846ba8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java
@@ -90,7 +90,6 @@ class LooseObjects {
unpackedObjectCache().clear();
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "LooseObjects[" + directory + "]"; //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
index f27daad897..579f931795 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
@@ -145,7 +145,6 @@ public class ObjectDirectory extends FileObjectDatabase {
}
}
- /** {@inheritDoc} */
@Override
public final File getDirectory() {
return loose.getDirectory();
@@ -169,13 +168,11 @@ public class ObjectDirectory extends FileObjectDatabase {
return preserved.getDirectory();
}
- /** {@inheritDoc} */
@Override
public boolean exists() {
return fs.exists(objects);
}
- /** {@inheritDoc} */
@Override
public void create() throws IOException {
loose.create();
@@ -183,7 +180,6 @@ public class ObjectDirectory extends FileObjectDatabase {
packed.create();
}
- /** {@inheritDoc} */
@Override
public ObjectDirectoryInserter newInserter() {
return new ObjectDirectoryInserter(this, config);
@@ -199,7 +195,6 @@ public class ObjectDirectory extends FileObjectDatabase {
return new PackInserter(this);
}
- /** {@inheritDoc} */
@Override
public void close() {
loose.close();
@@ -214,13 +209,11 @@ public class ObjectDirectory extends FileObjectDatabase {
}
}
- /** {@inheritDoc} */
@Override
public Collection<Pack> getPacks() {
return packed.getPacks();
}
- /** {@inheritDoc} */
@Override
public long getApproximateObjectCount() {
long count = 0;
@@ -234,7 +227,6 @@ public class ObjectDirectory extends FileObjectDatabase {
return count;
}
- /** {@inheritDoc} */
@Override
public Optional<CommitGraph> getCommitGraph() {
if (config.get(CoreConfig.KEY).enableCommitGraph()) {
@@ -244,7 +236,6 @@ public class ObjectDirectory extends FileObjectDatabase {
}
/**
- * {@inheritDoc}
* <p>
* Add a single existing pack to the list of available pack files.
*/
@@ -268,18 +259,16 @@ public class ObjectDirectory extends FileObjectDatabase {
}
PackFile bitmapIdx = pf.create(BITMAP_INDEX);
- Pack res = new Pack(pack, bitmapIdx.exists() ? bitmapIdx : null);
+ Pack res = new Pack(config, pack, bitmapIdx.exists() ? bitmapIdx : null);
packed.insert(res);
return res;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "ObjectDirectory[" + getDirectory() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
}
- /** {@inheritDoc} */
@Override
public boolean has(AnyObjectId objectId) {
return loose.hasCached(objectId)
@@ -811,7 +800,6 @@ public class ObjectDirectory extends FileObjectDatabase {
}
}
- /** {@inheritDoc} */
@Override
public ObjectDatabase newCachedDatabase() {
return newCachedFileObjectDatabase();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
index e6b2cc12f4..2f30a9797f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
@@ -49,7 +49,6 @@ class ObjectDirectoryInserter extends ObjectInserter {
config = cfg.get(WriteConfig.KEY);
}
- /** {@inheritDoc} */
@Override
public ObjectId insert(int type, byte[] data, int off, int len)
throws IOException {
@@ -62,12 +61,19 @@ class ObjectDirectoryInserter extends ObjectInserter {
* ODB.
*
* @param type
+ * object type
* @param data
+ * object data
* @param off
+ * first position within @{code data}
* @param len
+ * length number of bytes to copy
* @param createDuplicate
- * @return ObjectId
+ * whether to insert a duplicate if an object with this id
+ * already exists
+ * @return ObjectId the name of the object
* @throws IOException
+ * if an IO error occurred
*/
private ObjectId insert(
int type, byte[] data, int off, int len, boolean createDuplicate)
@@ -80,7 +86,6 @@ class ObjectDirectoryInserter extends ObjectInserter {
return insertOneObject(tmp, id, createDuplicate);
}
- /** {@inheritDoc} */
@Override
public ObjectId insert(int type, long len, InputStream is)
throws IOException {
@@ -93,11 +98,17 @@ class ObjectDirectoryInserter extends ObjectInserter {
* ODB.
*
* @param type
+ * object type
* @param len
+ * number of bytes to copy
* @param is
+ * input stream
* @param createDuplicate
- * @return ObjectId
+ * whether to insert a duplicate if an object with this id
+ * already exists
+ * @return ObjectId the name of the object
* @throws IOException
+ * if an IO error occurred
*/
ObjectId insert(int type, long len, InputStream is, boolean createDuplicate)
throws IOException {
@@ -132,25 +143,21 @@ class ObjectDirectoryInserter extends ObjectInserter {
.format(JGitText.get().unableToCreateNewObject, dst));
}
- /** {@inheritDoc} */
@Override
public PackParser newPackParser(InputStream in) throws IOException {
return new ObjectDirectoryPackParser(db, in);
}
- /** {@inheritDoc} */
@Override
public ObjectReader newReader() {
return new WindowCursor(db, this);
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
// Do nothing. Loose objects are immediately visible.
}
- /** {@inheritDoc} */
@Override
public void close() {
if (deflate != null) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryPackParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryPackParser.java
index 55b2646c46..9f27f4bd6e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryPackParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryPackParser.java
@@ -142,7 +142,6 @@ public class ObjectDirectoryPackParser extends PackParser {
return newPack;
}
- /** {@inheritDoc} */
@Override
public long getPackSize() {
if (newPack == null)
@@ -158,7 +157,6 @@ public class ObjectDirectoryPackParser extends PackParser {
return size;
}
- /** {@inheritDoc} */
@Override
public PackLock parse(ProgressMonitor receiving, ProgressMonitor resolving)
throws IOException {
@@ -193,40 +191,34 @@ public class ObjectDirectoryPackParser extends PackParser {
}
}
- /** {@inheritDoc} */
@Override
protected void onPackHeader(long objectCount) throws IOException {
// Ignored, the count is not required.
}
- /** {@inheritDoc} */
@Override
protected void onBeginWholeObject(long streamPosition, int type,
long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected void onEndWholeObject(PackedObjectInfo info) throws IOException {
info.setCRC((int) crc.getValue());
}
- /** {@inheritDoc} */
@Override
protected void onBeginOfsDelta(long streamPosition,
long baseStreamPosition, long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected void onBeginRefDelta(long streamPosition, AnyObjectId baseId,
long inflatedSize) throws IOException {
crc.reset();
}
- /** {@inheritDoc} */
@Override
protected UnresolvedDelta onEndDelta() throws IOException {
UnresolvedDelta delta = new UnresolvedDelta();
@@ -234,35 +226,30 @@ public class ObjectDirectoryPackParser extends PackParser {
return delta;
}
- /** {@inheritDoc} */
@Override
protected void onInflatedObjectData(PackedObjectInfo obj, int typeCode,
byte[] data) throws IOException {
// ObjectDirectory ignores this event.
}
- /** {@inheritDoc} */
@Override
protected void onObjectHeader(Source src, byte[] raw, int pos, int len)
throws IOException {
crc.update(raw, pos, len);
}
- /** {@inheritDoc} */
@Override
protected void onObjectData(Source src, byte[] raw, int pos, int len)
throws IOException {
crc.update(raw, pos, len);
}
- /** {@inheritDoc} */
@Override
protected void onStoreStream(byte[] raw, int pos, int len)
throws IOException {
out.write(raw, pos, len);
}
- /** {@inheritDoc} */
@Override
protected void onPackFooter(byte[] hash) throws IOException {
packEnd = out.getFilePointer();
@@ -271,7 +258,6 @@ public class ObjectDirectoryPackParser extends PackParser {
packHash = hash;
}
- /** {@inheritDoc} */
@Override
protected ObjectTypeAndSize seekDatabase(UnresolvedDelta delta,
ObjectTypeAndSize info) throws IOException {
@@ -280,7 +266,6 @@ public class ObjectDirectoryPackParser extends PackParser {
return readObjectHeader(info);
}
- /** {@inheritDoc} */
@Override
protected ObjectTypeAndSize seekDatabase(PackedObjectInfo obj,
ObjectTypeAndSize info) throws IOException {
@@ -289,13 +274,11 @@ public class ObjectDirectoryPackParser extends PackParser {
return readObjectHeader(info);
}
- /** {@inheritDoc} */
@Override
protected int readDatabase(byte[] dst, int pos, int cnt) throws IOException {
return out.read(dst, pos, cnt);
}
- /** {@inheritDoc} */
@Override
protected boolean checkCRC(int oldCRC) {
return oldCRC == (int) crc.getValue();
@@ -313,7 +296,6 @@ public class ObjectDirectoryPackParser extends PackParser {
tmpPack.deleteOnExit();
}
- /** {@inheritDoc} */
@Override
protected boolean onAppendBase(final int typeCode, final byte[] data,
final PackedObjectInfo info) throws IOException {
@@ -356,7 +338,6 @@ public class ObjectDirectoryPackParser extends PackParser {
return true;
}
- /** {@inheritDoc} */
@Override
protected void onEndThinPack() throws IOException {
final byte[] buf = buffer();
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 7d39b1fbcc..333967c5e5 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
@@ -14,6 +14,9 @@ package org.eclipse.jgit.internal.storage.file;
import static org.eclipse.jgit.internal.storage.pack.PackExt.INDEX;
import static org.eclipse.jgit.internal.storage.pack.PackExt.KEEP;
+import static org.eclipse.jgit.internal.storage.pack.PackExt.REVERSE_INDEX;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_CORE_SECTION;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_INDEX_GIT_USE_STRONGREFS;
import java.io.EOFException;
import java.io.File;
@@ -31,6 +34,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
+import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.zip.CRC32;
@@ -50,12 +54,16 @@ import org.eclipse.jgit.errors.UnsupportedPackIndexVersionException;
import org.eclipse.jgit.errors.UnsupportedPackVersionException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.internal.storage.pack.BinaryDelta;
+import org.eclipse.jgit.internal.storage.pack.PackExt;
import org.eclipse.jgit.internal.storage.pack.PackOutputStream;
+import org.eclipse.jgit.internal.util.Optionally;
import org.eclipse.jgit.lib.AbbreviatedObjectId;
import org.eclipse.jgit.lib.AnyObjectId;
+import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectLoader;
+import org.eclipse.jgit.util.Hex;
import org.eclipse.jgit.util.FileUtils;
import org.eclipse.jgit.util.LongList;
import org.eclipse.jgit.util.NB;
@@ -77,6 +85,8 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
public static final Comparator<Pack> SORT = (a, b) -> b.packLastModified
.compareTo(a.packLastModified);
+ private boolean useStrongRefs;
+
private final PackFile packFile;
private PackFile keepFile;
@@ -109,11 +119,11 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
private byte[] packChecksum;
- private volatile PackIndex loadedIdx;
+ private volatile Optionally<PackIndex> loadedIdx = Optionally.empty();
- private PackReverseIndex reverseIdx;
+ private Optionally<PackReverseIndex> reverseIdx = Optionally.empty();
- private PackBitmapIndex bitmapIdx;
+ private Optionally<PackBitmapIndex> bitmapIdx = Optionally.empty();
/**
* Objects we have tried to read, and discovered to be corrupt.
@@ -127,12 +137,16 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
/**
* Construct a reader for an existing, pre-indexed packfile.
*
+ * @param cfg
+ * configuration this directory consults for write settings.
* @param packFile
* path of the <code>.pack</code> file holding the data.
* @param bitmapIdxFile
* existing bitmap index file with the same base as the pack
*/
- public Pack(File packFile, @Nullable PackFile bitmapIdxFile) {
+ public Pack(Config cfg, File packFile, @Nullable PackFile bitmapIdxFile) {
+ useStrongRefs = cfg.getBoolean(CONFIG_CORE_SECTION,
+ CONFIG_KEY_PACKED_INDEX_GIT_USE_STRONGREFS, WindowCache.getInstance().isPackedIndexGitUseStrongRefs());
this.packFile = new PackFile(packFile);
this.fileSnapshot = PackFileSnapshot.save(packFile);
this.packLastModified = fileSnapshot.lastModifiedInstant();
@@ -146,57 +160,58 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
}
private PackIndex idx() throws IOException {
- PackIndex idx = loadedIdx;
- if (idx == null) {
- synchronized (this) {
- idx = loadedIdx;
- if (idx == null) {
- if (invalid) {
- throw new PackInvalidException(packFile,
- invalidatingCause);
- }
- try {
- long start = System.currentTimeMillis();
- PackFile idxFile = packFile.create(INDEX);
- idx = PackIndex.open(idxFile);
- if (LOG.isDebugEnabled()) {
- LOG.debug(String.format(
- "Opening pack index %s, size %.3f MB took %d ms", //$NON-NLS-1$
- idxFile.getAbsolutePath(),
- Float.valueOf(idxFile.length()
- / (1024f * 1024)),
- Long.valueOf(System.currentTimeMillis()
- - start)));
- }
-
- if (packChecksum == null) {
- packChecksum = idx.packChecksum;
- fileSnapshot.setChecksum(
- ObjectId.fromRaw(packChecksum));
- } else if (!Arrays.equals(packChecksum,
- idx.packChecksum)) {
- throw new PackMismatchException(MessageFormat
- .format(JGitText.get().packChecksumMismatch,
- packFile.getPath(),
- ObjectId.fromRaw(packChecksum)
- .name(),
- ObjectId.fromRaw(idx.packChecksum)
- .name()));
- }
- loadedIdx = idx;
- } catch (InterruptedIOException e) {
- // don't invalidate the pack, we are interrupted from
- // another thread
- throw e;
- } catch (IOException e) {
- invalid = true;
- invalidatingCause = e;
- throw e;
- }
+ Optional<PackIndex> optional = loadedIdx.getOptional();
+ if (optional.isPresent()) {
+ return optional.get();
+ }
+ synchronized (this) {
+ optional = loadedIdx.getOptional();
+ if (optional.isPresent()) {
+ return optional.get();
+ }
+ if (invalid) {
+ throw new PackInvalidException(packFile, invalidatingCause);
+ }
+ try {
+ long start = System.currentTimeMillis();
+ PackFile idxFile = packFile.create(INDEX);
+ PackIndex idx = PackIndex.open(idxFile);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(String.format(
+ "Opening pack index %s, size %.3f MB took %d ms", //$NON-NLS-1$
+ idxFile.getAbsolutePath(),
+ Float.valueOf(idxFile.length()
+ / (1024f * 1024)),
+ Long.valueOf(System.currentTimeMillis()
+ - start)));
+ }
+
+ if (packChecksum == null) {
+ packChecksum = idx.packChecksum;
+ fileSnapshot.setChecksum(
+ ObjectId.fromRaw(packChecksum));
+ } else if (!Arrays.equals(packChecksum,
+ idx.packChecksum)) {
+ throw new PackMismatchException(MessageFormat
+ .format(JGitText.get().packChecksumMismatch,
+ packFile.getPath(),
+ PackExt.PACK.getExtension(),
+ Hex.toHexString(packChecksum),
+ PackExt.INDEX.getExtension(),
+ Hex.toHexString(idx.packChecksum)));
}
+ loadedIdx = optionally(idx);
+ return idx;
+ } catch (InterruptedIOException e) {
+ // don't invalidate the pack, we are interrupted from
+ // another thread
+ throw e;
+ } catch (IOException e) {
+ invalid = true;
+ invalidatingCause = e;
+ throw e;
}
}
- return idx;
}
/**
* Get the File object which locates this pack on disk.
@@ -212,6 +227,7 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
*
* @return the index for this pack file.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public PackIndex getIndex() throws IOException {
return idx();
@@ -285,8 +301,9 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
public void close() {
WindowCache.purge(this);
synchronized (this) {
- loadedIdx = null;
- reverseIdx = null;
+ loadedIdx.clear();
+ reverseIdx.clear();
+ bitmapIdx.clear();
}
}
@@ -770,11 +787,11 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
fd.seek(length - 20);
fd.readFully(buf, 0, 20);
if (!Arrays.equals(buf, packChecksum)) {
- throw new PackMismatchException(MessageFormat.format(
- JGitText.get().packChecksumMismatch,
- getPackFile(),
- ObjectId.fromRaw(buf).name(),
- ObjectId.fromRaw(idx.packChecksum).name()));
+ throw new PackMismatchException(
+ MessageFormat.format(JGitText.get().packChecksumMismatch,
+ getPackFile(), PackExt.PACK.getExtension(),
+ Hex.toHexString(buf), PackExt.INDEX.getExtension(),
+ Hex.toHexString(idx.packChecksum)));
}
}
@@ -1129,54 +1146,64 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
if (invalid || bitmapIdxFile == null) {
return null;
}
- if (bitmapIdx == null) {
- final PackBitmapIndex idx;
- try {
- idx = PackBitmapIndex.open(bitmapIdxFile, idx(),
- getReverseIdx());
- } catch (FileNotFoundException e) {
- // Once upon a time the bitmap or index files existed. Now one
- // of them has been removed. Most likely an external gc has
- // removed index, packfile or the bitmap
- bitmapIdxFile = null;
- return null;
- } catch (IOException e) {
- if (!FileUtils.isStaleFileHandleInCausalChain(e)) {
- throw e;
- }
- // Ignore NFS stale handle exception the same way as
- // FileNotFoundException above.
- bitmapIdxFile = null;
- return null;
- }
-
+ Optional<PackBitmapIndex> optional = bitmapIdx.getOptional();
+ if (optional.isPresent()) {
+ return optional.get();
+ }
+ try {
+ PackBitmapIndex idx = PackBitmapIndex.open(bitmapIdxFile, idx(),
+ getReverseIdx());
// At this point, idx() will have set packChecksum.
if (Arrays.equals(packChecksum, idx.packChecksum)) {
- bitmapIdx = idx;
- } else {
- bitmapIdxFile = null;
+ bitmapIdx = optionally(idx);
+ return idx;
+ }
+ } catch (FileNotFoundException e) {
+ // Once upon a time the bitmap or index files existed. Now one
+ // of them has been removed. Most likely an external gc has
+ // removed index, packfile or the bitmap
+ bitmapIdxFile = null;
+ return null;
+ } catch (IOException e) {
+ if (!FileUtils.isStaleFileHandleInCausalChain(e)) {
+ throw e;
}
+ // Ignore NFS stale handle exception the same way as
+ // FileNotFoundException above.
+ bitmapIdxFile = null;
+ return null;
}
- return bitmapIdx;
+ bitmapIdxFile = null;
+ return null;
}
synchronized void refreshBitmapIndex(PackFile bitmapIndexFile) {
- this.bitmapIdx = null;
+ this.bitmapIdx = Optionally.empty();
this.invalid = false;
this.bitmapIdxFile = bitmapIndexFile;
try {
getBitmapIndex();
} catch (IOException e) {
LOG.warn(JGitText.get().bitmapFailedToGet, bitmapIdxFile, e);
- this.bitmapIdx = null;
+ this.bitmapIdx = Optionally.empty();
this.bitmapIdxFile = null;
}
}
private synchronized PackReverseIndex getReverseIdx() throws IOException {
- if (reverseIdx == null)
- reverseIdx = new PackReverseIndex(idx());
- return reverseIdx;
+ if (invalid) {
+ throw new PackInvalidException(packFile, invalidatingCause);
+ }
+ Optional<PackReverseIndex> optional = reverseIdx.getOptional();
+ if (optional.isPresent()) {
+ return optional.get();
+ }
+ PackFile reverseIndexFile = packFile.create(REVERSE_INDEX);
+ PackReverseIndex revIdx = PackReverseIndexFactory.openOrCompute(reverseIndexFile,
+ getObjectCount(), () -> getIndex());
+ revIdx.verifyPackChecksum(getPackFile().getPath());
+ reverseIdx = optionally(revIdx);
+ return revIdx;
}
private boolean isCorrupt(long offset) {
@@ -1211,4 +1238,8 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
+ packFile.length() + ", packChecksum="
+ ObjectId.fromRaw(packChecksum).name() + "]";
}
+
+ private <T> Optionally<T> optionally(T element) {
+ return useStrongRefs ? new Optionally.Hard<>(element) : new Optionally.Soft<>(element);
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java
index 8fb17fcf21..0c3e724ed8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java
@@ -205,6 +205,7 @@ public abstract class PackBitmapIndex {
/**
* @return result
* @throws IOException
+ * if an IO error occurred
*/
T get() throws IOException;
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexBuilder.java
index 5666b57609..1d1ad983a8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexBuilder.java
@@ -58,7 +58,7 @@ public class PackBitmapIndexBuilder extends BasePackBitmapIndex {
* ObjectId (name); it will be resorted in place.
*/
public PackBitmapIndexBuilder(List<ObjectToPack> objects) {
- super(new ObjectIdOwnerMap<StoredBitmap>());
+ super(new ObjectIdOwnerMap<>());
byOffset = new BlockList<>(objects.size());
sortByOffsetAndIndex(byOffset, positionEntries, objects);
@@ -214,7 +214,6 @@ public class PackBitmapIndexBuilder extends BasePackBitmapIndex {
getBitmaps().add(result);
}
- /** {@inheritDoc} */
@Override
public EWAHCompressedBitmap ofObjectType(
EWAHCompressedBitmap bitmap, int type) {
@@ -231,7 +230,6 @@ public class PackBitmapIndexBuilder extends BasePackBitmapIndex {
throw new IllegalArgumentException();
}
- /** {@inheritDoc} */
@Override
public int findPosition(AnyObjectId objectId) {
PositionEntry entry = positionEntries.get(objectId);
@@ -240,7 +238,6 @@ public class PackBitmapIndexBuilder extends BasePackBitmapIndex {
return entry.offsetPosition;
}
- /** {@inheritDoc} */
@Override
public ObjectId getObject(int position) throws IllegalArgumentException {
ObjectId objectId = byOffset.get(position);
@@ -294,7 +291,6 @@ public class PackBitmapIndexBuilder extends BasePackBitmapIndex {
return PackBitmapIndexV1.OPT_FULL;
}
- /** {@inheritDoc} */
@Override
public int getBitmapCount() {
return bitmapsToWriteXorBuffer.size() + bitmapsToWrite.size();
@@ -311,7 +307,6 @@ public class PackBitmapIndexBuilder extends BasePackBitmapIndex {
bitmapsToWrite = new ArrayList<>(size);
}
- /** {@inheritDoc} */
@Override
public int getObjectCount() {
return byOffset.size();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java
index e1b6f780c7..c97d9f07ef 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java
@@ -79,32 +79,27 @@ public class PackBitmapIndexRemapper extends PackBitmapIndex
oldPackIndex.getObject(pos));
}
- /** {@inheritDoc} */
@Override
public int findPosition(AnyObjectId objectId) {
return newPackIndex.findPosition(objectId);
}
- /** {@inheritDoc} */
@Override
public ObjectId getObject(int position) throws IllegalArgumentException {
return newPackIndex.getObject(position);
}
- /** {@inheritDoc} */
@Override
public int getObjectCount() {
return newPackIndex.getObjectCount();
}
- /** {@inheritDoc} */
@Override
public EWAHCompressedBitmap ofObjectType(
EWAHCompressedBitmap bitmap, int type) {
return newPackIndex.ofObjectType(bitmap, type);
}
- /** {@inheritDoc} */
@Override
public Iterator<Entry> iterator() {
if (oldPackIndex == null)
@@ -141,7 +136,6 @@ public class PackBitmapIndexRemapper extends PackBitmapIndex
};
}
- /** {@inheritDoc} */
@Override
public EWAHCompressedBitmap getBitmap(AnyObjectId objectId) {
EWAHCompressedBitmap bitmap = newPackIndex.getBitmap(objectId);
@@ -179,7 +173,6 @@ public class PackBitmapIndexRemapper extends PackBitmapIndex
}
}
- /** {@inheritDoc} */
@Override
public int getBitmapCount() {
// The count is only useful for the end index, not the remapper.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexV1.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexV1.java
index 988dc6c4ff..f2f24b39cb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexV1.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexV1.java
@@ -84,7 +84,7 @@ class PackBitmapIndexV1 extends BasePackBitmapIndex {
throws IOException {
// An entry is object id, xor offset, flag byte, and a length encoded
// bitmap. The object id is an int32 of the nth position sorted by name.
- super(new ObjectIdOwnerMap<StoredBitmap>());
+ super(new ObjectIdOwnerMap<>());
this.bitmaps = getBitmaps();
// Optionally start loading reverse index in parallel to loading bitmap
@@ -214,7 +214,6 @@ class PackBitmapIndexV1 extends BasePackBitmapIndex {
this.reverseIndex = computedReverseIndex;
}
- /** {@inheritDoc} */
@Override
public int findPosition(AnyObjectId objectId) {
long offset = packIndex.findOffset(objectId);
@@ -223,7 +222,6 @@ class PackBitmapIndexV1 extends BasePackBitmapIndex {
return reverseIndex.findPosition(offset);
}
- /** {@inheritDoc} */
@Override
public ObjectId getObject(int position) throws IllegalArgumentException {
ObjectId objectId = reverseIndex.findObjectByPosition(position);
@@ -232,13 +230,11 @@ class PackBitmapIndexV1 extends BasePackBitmapIndex {
return objectId;
}
- /** {@inheritDoc} */
@Override
public int getObjectCount() {
return (int) packIndex.getObjectCount();
}
- /** {@inheritDoc} */
@Override
public EWAHCompressedBitmap ofObjectType(
EWAHCompressedBitmap bitmap, int type) {
@@ -255,13 +251,11 @@ class PackBitmapIndexV1 extends BasePackBitmapIndex {
throw new IllegalArgumentException();
}
- /** {@inheritDoc} */
@Override
public int getBitmapCount() {
return bitmaps.size();
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
// TODO(cranger): compare the pack checksum?
@@ -270,7 +264,6 @@ class PackBitmapIndexV1 extends BasePackBitmapIndex {
return false;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return getPackIndex().hashCode();
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 1676d8bc18..c34229dedc 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
@@ -65,6 +65,8 @@ class PackDirectory {
private static final PackList NO_PACKS = new PackList(FileSnapshot.DIRTY,
new Pack[0]);
+ private final Config config;
+
private final File directory;
private final AtomicReference<PackList> packList;
@@ -80,6 +82,7 @@ class PackDirectory {
* the location of the {@code pack} directory.
*/
PackDirectory(Config config, File directory) {
+ this.config = config;
this.directory = directory;
packList = new AtomicReference<>(NO_PACKS);
@@ -126,7 +129,6 @@ class PackDirectory {
return Collections.unmodifiableCollection(Arrays.asList(packs));
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "PackDirectory[" + getDirectory() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
@@ -353,7 +355,7 @@ class PackDirectory {
/**
* @param n
* count of consecutive failures
- * @return @{code true} if i is a power of 2
+ * @return {@code true} if i is a power of 2
*/
private boolean doLogExponentialBackoff(int n) {
return (n & (n - 1)) == 0;
@@ -468,7 +470,7 @@ class PackDirectory {
continue;
}
- list.add(new Pack(packFile, packFilesByExt.get(BITMAP_INDEX)));
+ list.add(new Pack(config, packFile, packFilesByExt.get(BITMAP_INDEX)));
foundNew = true;
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFileSnapshot.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFileSnapshot.java
index a784af8c3f..dbf7d8ae5d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFileSnapshot.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFileSnapshot.java
@@ -48,7 +48,6 @@ class PackFileSnapshot extends FileSnapshot {
this.checksum = checksum;
}
- /** {@inheritDoc} */
@Override
public boolean isModified(File packFile) {
if (!super.isModified(packFile)) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndex.java
index c0689dc634..d432a0349a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndex.java
@@ -130,7 +130,6 @@ public abstract class PackIndex
return findOffset(id) != -1;
}
- /** {@inheritDoc} */
@Override
public boolean contains(AnyObjectId id) {
return findOffset(id) != -1;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV1.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV1.java
index fff410b4ce..860ebaefc2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV1.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV1.java
@@ -72,13 +72,11 @@ class PackIndexV1 extends PackIndex {
IO.readFully(fd, packChecksum, 0, packChecksum.length);
}
- /** {@inheritDoc} */
@Override
public long getObjectCount() {
return objectCnt;
}
- /** {@inheritDoc} */
@Override
public long getOffset64Count() {
long n64 = 0;
@@ -111,7 +109,6 @@ class PackIndexV1 extends PackIndex {
return (int) (nthPosition - base);
}
- /** {@inheritDoc} */
@Override
public ObjectId getObjectId(long nthPosition) {
final int levelOne = findLevelOne(nthPosition);
@@ -128,7 +125,6 @@ class PackIndexV1 extends PackIndex {
return NB.decodeUInt32(idxdata[levelOne], p);
}
- /** {@inheritDoc} */
@Override
public long findOffset(AnyObjectId objId) {
final int levelOne = objId.getFirstByte();
@@ -145,7 +141,6 @@ class PackIndexV1 extends PackIndex {
return (((long) b0) << 24) | (b1 << 16) | (b2 << 8) | (b3);
}
- /** {@inheritDoc} */
@Override
public int findPosition(AnyObjectId objId) {
int levelOne = objId.getFirstByte();
@@ -193,25 +188,21 @@ class PackIndexV1 extends PackIndex {
return -1;
}
- /** {@inheritDoc} */
@Override
public long findCRC32(AnyObjectId objId) {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public boolean hasCRC32Support() {
return false;
}
- /** {@inheritDoc} */
@Override
public Iterator<MutableEntry> iterator() {
return new IndexV1Iterator();
}
- /** {@inheritDoc} */
@Override
public void resolve(Set<ObjectId> matches, AbbreviatedObjectId id,
int matchLimit) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV2.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV2.java
index 7a390060c7..751b62dc40 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV2.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexV2.java
@@ -131,13 +131,11 @@ class PackIndexV2 extends PackIndex {
IO.readFully(fd, packChecksum, 0, packChecksum.length);
}
- /** {@inheritDoc} */
@Override
public long getObjectCount() {
return objectCnt;
}
- /** {@inheritDoc} */
@Override
public long getOffset64Count() {
return offset64.length / 8;
@@ -165,7 +163,6 @@ class PackIndexV2 extends PackIndex {
return (int) (nthPosition - base);
}
- /** {@inheritDoc} */
@Override
public ObjectId getObjectId(long nthPosition) {
final int levelOne = findLevelOne(nthPosition);
@@ -174,7 +171,6 @@ class PackIndexV2 extends PackIndex {
return ObjectId.fromRaw(names[levelOne], p4 + p); // p * 5
}
- /** {@inheritDoc} */
@Override
public long getOffset(long nthPosition) {
final int levelOne = findLevelOne(nthPosition);
@@ -182,7 +178,6 @@ class PackIndexV2 extends PackIndex {
return getOffset(levelOne, levelTwo);
}
- /** {@inheritDoc} */
@Override
public long findOffset(AnyObjectId objId) {
final int levelOne = objId.getFirstByte();
@@ -192,7 +187,6 @@ class PackIndexV2 extends PackIndex {
return getOffset(levelOne, levelTwo);
}
- /** {@inheritDoc} */
@Override
public int findPosition(AnyObjectId objId) {
int levelOne = objId.getFirstByte();
@@ -211,7 +205,6 @@ class PackIndexV2 extends PackIndex {
return p;
}
- /** {@inheritDoc} */
@Override
public long findCRC32(AnyObjectId objId) throws MissingObjectException {
final int levelOne = objId.getFirstByte();
@@ -221,19 +214,16 @@ class PackIndexV2 extends PackIndex {
return NB.decodeUInt32(crc32[levelOne], levelTwo << 2);
}
- /** {@inheritDoc} */
@Override
public boolean hasCRC32Support() {
return true;
}
- /** {@inheritDoc} */
@Override
public Iterator<MutableEntry> iterator() {
return new EntriesIteratorV2();
}
- /** {@inheritDoc} */
@Override
public void resolve(Set<ObjectId> matches, AbbreviatedObjectId id,
int matchLimit) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV1.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV1.java
index e1612bb579..7e28b5eb2b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV1.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV1.java
@@ -35,7 +35,6 @@ class PackIndexWriterV1 extends PackIndexWriter {
super(dst);
}
- /** {@inheritDoc} */
@Override
protected void writeImpl() throws IOException {
writeFanOutTable();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV2.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV2.java
index 7adabad708..fc5ef61912 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV2.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackIndexWriterV2.java
@@ -30,7 +30,6 @@ class PackIndexWriterV2 extends PackIndexWriter {
super(dst);
}
- /** {@inheritDoc} */
@Override
protected void writeImpl() throws IOException {
writeTOC(2);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInputStream.java
index 0bceca72ea..fdc2f80075 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInputStream.java
@@ -31,7 +31,6 @@ class PackInputStream extends InputStream {
wc.pin(pack, pos);
}
- /** {@inheritDoc} */
@Override
public int read(byte[] b, int off, int len) throws IOException {
int n = wc.copy(pack, pos, b, off, len);
@@ -39,7 +38,6 @@ class PackInputStream extends InputStream {
return n;
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
byte[] buf = new byte[1];
@@ -47,7 +45,6 @@ class PackInputStream extends InputStream {
return n == 1 ? buf[0] & 0xff : -1;
}
- /** {@inheritDoc} */
@Override
public void close() {
wc.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInserter.java
index d6209c4a79..1b092a3332 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackInserter.java
@@ -150,7 +150,6 @@ public class PackInserter extends ObjectInserter {
return buffer().length;
}
- /** {@inheritDoc} */
@Override
public ObjectId insert(int type, byte[] data, int off, int len)
throws IOException {
@@ -169,7 +168,6 @@ public class PackInserter extends ObjectInserter {
return endObject(id, offset);
}
- /** {@inheritDoc} */
@Override
public ObjectId insert(int type, long len, InputStream in)
throws IOException {
@@ -243,19 +241,16 @@ public class PackInserter extends ObjectInserter {
return 12;
}
- /** {@inheritDoc} */
@Override
public PackParser newPackParser(InputStream in) {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public ObjectReader newReader() {
return new Reader();
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
if (tmpPack == null) {
@@ -340,7 +335,6 @@ public class PackInserter extends ObjectInserter {
return ObjectId.fromRaw(md.digest());
}
- /** {@inheritDoc} */
@Override
public void close() {
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexWriter.java
index 65a065dd55..328643688d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexWriter.java
@@ -72,11 +72,13 @@ public abstract class PackObjectSizeIndexWriter {
*
* Store position (in the main index) to size as parallel arrays.
*
- * <p>Positions in the main index fit well in unsigned 24 bits (16M) for most
+ * <p>
+ * Positions in the main index fit well in unsigned 24 bits (16M) for most
* repositories, but some outliers have even more objects, so we need to
* store also 32 bits positions.
*
- * <p>Sizes are stored as a first array parallel to positions. If a size
+ * <p>
+ * Sizes are stored as a first array parallel to positions. If a size
* doesn't fit in an element of that array, then we encode there a position
* on the next-size array. This "overflow" array doesn't have entries for
* all positions.
@@ -85,30 +87,36 @@ public abstract class PackObjectSizeIndexWriter {
*
* positions [10, 500, 1000, 1001]
* sizes (32bits) [15MB, -1, 6MB, -2]
- * ___/ ______/
+ * ___/ ______/
* / /
* sizes (64 bits) [3GB, 6GB]
* </pre>
*
- * <p>For sizes we use 32 bits as the first level and 64 for the rare objects
+ * <p>
+ * For sizes we use 32 bits as the first level and 64 for the rare objects
* over 2GB.
*
- * <p>A 24/32/64 bits hierarchy of arrays saves space if we have a lot of small
- * objects, but wastes space if we have only big ones. The min size to index is
- * controlled by conf and in principle we want to index only rather
- * big objects (e.g. > 10MB). We could support more dynamics read/write of sizes
+ * <p>
+ * A 24/32/64 bits hierarchy of arrays saves space if we have a lot of small
+ * objects, but wastes space if we have only big ones. The min size to index
+ * is controlled by conf and in principle we want to index only rather big
+ * objects (e.g. > 10MB). We could support more dynamics read/write of sizes
* (e.g. 24 only if the threshold will include many of those objects) but it
- * complicates a lot code and spec. If needed it could go for a v2 of the protocol.
- *
- * <p>Format:
+ * complicates a lot code and spec. If needed it could go for a v2 of the
+ * protocol.
*
+ * <p>
+ * Format:
+ * <ul>
* <li>A header with the magic number (4 bytes)
* <li>The index version (1 byte)
* <li>The minimum object size (4 bytes)
* <li>Total count of objects indexed (C, 4 bytes)
+ * </ul>
* (if count == 0, stop here)
- *
+ * <p>
* Blocks of
+ * <ul>
* <li>Size per entry in bits (1 byte, either 24 (0x18) or 32 (0x20))
* <li>Count of entries (4 bytes) (c, as a signed int)
* <li>positions encoded in s bytes each (i.e s*c bytes)
@@ -120,6 +128,7 @@ public abstract class PackObjectSizeIndexWriter {
* <li>Count of 64 bit sizes (s64) (or 0 if no more indirections)
* <li>64 bit sizes (s64 * 8 bytes)
* <li>0 (end)
+ * </ul>
*/
static class PackObjectSizeWriterV1 extends PackObjectSizeIndexWriter {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndex.java
index 1a5adb4a16..ef9753cd79 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndex.java
@@ -10,11 +10,8 @@
package org.eclipse.jgit.internal.storage.file;
-import java.text.MessageFormat;
-
import org.eclipse.jgit.errors.CorruptObjectException;
-import org.eclipse.jgit.internal.JGitText;
-import org.eclipse.jgit.internal.storage.file.PackIndex.MutableEntry;
+import org.eclipse.jgit.errors.PackMismatchException;
import org.eclipse.jgit.lib.ObjectId;
/**
@@ -27,92 +24,27 @@ import org.eclipse.jgit.lib.ObjectId;
* @see PackIndex
* @see Pack
*/
-public class PackReverseIndex {
- /** Index we were created from, and that has our ObjectId data. */
- private final PackIndex index;
-
- /** The number of bytes per entry in the offsetIndex. */
- private final long bucketSize;
-
+public interface PackReverseIndex {
/**
- * An index into the nth mapping, where the value is the position after the
- * the last index that contains the values of the bucket. For example given
- * offset o (and bucket = o / bucketSize), the offset will be contained in
- * the range nth[offsetIndex[bucket - 1]] inclusive to
- * nth[offsetIndex[bucket]] exclusive.
- *
- * See {@link #binarySearch}
+ * Magic bytes that uniquely identify git reverse index files.
*/
- private final int[] offsetIndex;
+ byte[] MAGIC = { 'R', 'I', 'D', 'X' };
- /** Mapping from indices in offset order to indices in SHA-1 order. */
- private final int[] nth;
+ /**
+ * The first reverse index file version.
+ */
+ int VERSION_1 = 1;
/**
- * Create reverse index from straight/forward pack index, by indexing all
- * its entries.
+ * Verify that the pack checksum found in the reverse index matches that
+ * from the pack file.
*
- * @param packIndex
- * forward index - entries to (reverse) index.
+ * @param packFilePath
+ * the path to display in event of a mismatch
+ * @throws PackMismatchException
+ * if the checksums do not match
*/
- public PackReverseIndex(PackIndex packIndex) {
- index = packIndex;
-
- final long cnt = index.getObjectCount();
- if (cnt + 1 > Integer.MAX_VALUE)
- throw new IllegalArgumentException(
- JGitText.get().hugeIndexesAreNotSupportedByJgitYet);
-
- if (cnt == 0) {
- bucketSize = Long.MAX_VALUE;
- offsetIndex = new int[1];
- nth = new int[0];
- return;
- }
-
- final long[] offsetsBySha1 = new long[(int) cnt];
-
- long maxOffset = 0;
- int ith = 0;
- for (MutableEntry me : index) {
- final long o = me.getOffset();
- offsetsBySha1[ith++] = o;
- if (o > maxOffset)
- maxOffset = o;
- }
-
- bucketSize = maxOffset / cnt + 1;
- int[] bucketIndex = new int[(int) cnt];
- int[] bucketValues = new int[(int) cnt + 1];
- for (int oi = 0; oi < offsetsBySha1.length; oi++) {
- final long o = offsetsBySha1[oi];
- final int bucket = (int) (o / bucketSize);
- final int bucketValuesPos = oi + 1;
- final int current = bucketIndex[bucket];
- bucketIndex[bucket] = bucketValuesPos;
- bucketValues[bucketValuesPos] = current;
- }
-
- int nthByOffset = 0;
- nth = new int[offsetsBySha1.length];
- offsetIndex = bucketIndex; // Reuse the allocation
- for (int bi = 0; bi < bucketIndex.length; bi++) {
- final int start = nthByOffset;
- // Insertion sort of the values in the bucket.
- for (int vi = bucketIndex[bi]; vi > 0; vi = bucketValues[vi]) {
- final int nthBySha1 = vi - 1;
- final long o = offsetsBySha1[nthBySha1];
- int insertion = nthByOffset++;
- for (; start < insertion; insertion--) {
- if (o > offsetsBySha1[nth[insertion - 1]])
- break;
- nth[insertion] = nth[insertion - 1];
- }
- nth[insertion] = nthBySha1;
- }
- offsetIndex[bi] = nthByOffset;
- }
- }
+ void verifyPackChecksum(String packFilePath) throws PackMismatchException;
/**
* Search for object id with the specified start offset in this pack
@@ -122,12 +54,7 @@ public class PackReverseIndex {
* start offset of object to find.
* @return object id for this offset, or null if no object was found.
*/
- public ObjectId findObject(long offset) {
- final int ith = binarySearch(offset);
- if (ith < 0)
- return null;
- return index.getObjectId(nth[ith]);
- }
+ ObjectId findObject(long offset);
/**
* Search for the next offset to the specified offset in this pack (reverse)
@@ -144,42 +71,25 @@ public class PackReverseIndex {
* @throws org.eclipse.jgit.errors.CorruptObjectException
* when there is no object with the provided offset.
*/
- public long findNextOffset(long offset, long maxOffset)
- throws CorruptObjectException {
- final int ith = binarySearch(offset);
- if (ith < 0)
- throw new CorruptObjectException(
- MessageFormat.format(
- JGitText.get().cantFindObjectInReversePackIndexForTheSpecifiedOffset,
- Long.valueOf(offset)));
-
- if (ith + 1 == nth.length)
- return maxOffset;
- return index.getOffset(nth[ith + 1]);
- }
-
- int findPosition(long offset) {
- return binarySearch(offset);
- }
+ long findNextOffset(long offset, long maxOffset)
+ throws CorruptObjectException;
- private int binarySearch(long offset) {
- int bucket = (int) (offset / bucketSize);
- int low = bucket == 0 ? 0 : offsetIndex[bucket - 1];
- int high = offsetIndex[bucket];
- while (low < high) {
- final int mid = (low + high) >>> 1;
- final long o = index.getOffset(nth[mid]);
- if (offset < o)
- high = mid;
- else if (offset == o)
- return mid;
- else
- low = mid + 1;
- }
- return -1;
- }
+ /**
+ * Find the position in the primary index of the object at the given pack
+ * offset.
+ *
+ * @param offset
+ * the pack offset of the object
+ * @return the position in the primary index of the object
+ */
+ int findPosition(long offset);
- ObjectId findObjectByPosition(int nthPosition) {
- return index.getObjectId(nth[nthPosition]);
- }
+ /**
+ * Find the object that is in the given position in the primary index.
+ *
+ * @param nthPosition
+ * the position of the object in the primary index
+ * @return the object in that position
+ */
+ ObjectId findObjectByPosition(int nthPosition);
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexComputed.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexComputed.java
new file mode 100644
index 0000000000..0b487a2819
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexComputed.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2023, Google LLC and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.storage.file;
+
+import java.text.MessageFormat;
+
+import org.eclipse.jgit.errors.CorruptObjectException;
+import org.eclipse.jgit.errors.PackMismatchException;
+import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.internal.storage.file.PackIndex.MutableEntry;
+import org.eclipse.jgit.lib.ObjectId;
+
+/**
+ * Reverse index for forward pack index which is computed from the forward pack
+ * index.
+ * <p>
+ * Creating an instance uses an insertion sort of the entries in the forward
+ * index, so it runs in quadratic time on average.
+ */
+final class PackReverseIndexComputed implements PackReverseIndex {
+ /**
+ * Index we were created from, and that has our ObjectId data.
+ */
+ private final PackIndex index;
+
+ /**
+ * The difference in offset between the start of an offset bucket and the
+ * start of its succeeding bucket.
+ */
+ private final long bucketSize;
+
+ /**
+ * The indexes into indexPosInOffsetOrder at which the next bucket starts.
+ * <p>
+ * For example, given offset o (and therefore bucket = o / bucketSize), the
+ * indexPos corresponding to o will be contained in the range
+ * indexPosInOffsetOrder[nextBucketStart[bucket - 1]] inclusive to
+ * indexPosInOffsetOrder[nextBucketStart[bucket]] exclusive.
+ * <p>
+ * This range information can speed up #binarySearch by identifying the
+ * relevant bucket and only searching within its range.
+ * <p>
+ * See {@link #binarySearch}
+ */
+ private final int[] nextBucketStart;
+
+ /**
+ * Mapping from indices in offset order to indices in SHA-1 order.
+ */
+ private final int[] indexPosInOffsetOrder;
+
+ /**
+ * Create reverse index from straight/forward pack index, by indexing all
+ * its entries.
+ *
+ * @param packIndex
+ * forward index - entries to (reverse) index.
+ */
+ PackReverseIndexComputed(PackIndex packIndex) {
+ index = packIndex;
+
+ long rawCnt = index.getObjectCount();
+ if (rawCnt + 1 > Integer.MAX_VALUE) {
+ throw new IllegalArgumentException(
+ JGitText.get().hugeIndexesAreNotSupportedByJgitYet);
+ }
+ int cnt = (int) rawCnt;
+
+ if (cnt == 0) {
+ bucketSize = Long.MAX_VALUE;
+ nextBucketStart = new int[1];
+ indexPosInOffsetOrder = new int[0];
+ return;
+ }
+
+ // Sort the index positions according to the corresponding pack offsets.
+ // Use bucket sort since the offsets are somewhat uniformly distributed
+ // over the range (0, pack size).
+ long[] offsetsInIndexOrder = new long[cnt];
+ long maxOffset = 0;
+ int i = 0;
+ for (MutableEntry entry : index) {
+ long offset = entry.getOffset();
+ offsetsInIndexOrder[i++] = offset;
+ if (offset > maxOffset) {
+ maxOffset = offset;
+ }
+ }
+
+ bucketSize = maxOffset / cnt + 1;
+ // The values in each bucket, stored as a linked list. Given a bucket,
+ // headValues[bucket] contains the first value,
+ // furtherValues[headValues[bucket]] contains the second,
+ // furtherValues[furtherValues[headValues[bucket]]] the third, and so
+ // on. The linked list stops when a value is 0. The values themselves
+ // are shifted index positions. There won't be any
+ // collisions because every index position is unique.
+ int[] headValues = new int[cnt];
+ int[] furtherValues = new int[cnt + 1];
+ for (int indexPos = 0; indexPos < cnt; indexPos++) {
+ // The offset determines which bucket this index position falls
+ // into, since the goal is sort into offset order.
+ long offset = offsetsInIndexOrder[indexPos];
+ int bucket = (int) (offset / bucketSize);
+ // Store the index positions as 1-indexed so that default
+ // initialized value 0 can be interpreted as the end of the bucket
+ // values.
+ int asBucketValue = indexPos + 1;
+ // If there is an existing value in this bucket, push the value to
+ // the front of the linked list.
+ int current = headValues[bucket];
+ headValues[bucket] = asBucketValue;
+ furtherValues[asBucketValue] = current;
+ }
+
+ int nthByOffset = 0;
+ indexPosInOffsetOrder = new int[cnt];
+ nextBucketStart = headValues; // Reuse the allocation
+ for (int bi = 0; bi < headValues.length; bi++) {
+ // Insertion sort of the values in the bucket.
+ int start = nthByOffset;
+ for (int vi = headValues[bi]; vi > 0; vi = furtherValues[vi]) {
+ int nthBySha1 = vi - 1;
+ long o = offsetsInIndexOrder[nthBySha1];
+ int insertion = nthByOffset++;
+ for (; start < insertion; insertion--) {
+ if (o > offsetsInIndexOrder[indexPosInOffsetOrder[insertion
+ - 1]]) {
+ break;
+ }
+ indexPosInOffsetOrder[insertion] = indexPosInOffsetOrder[insertion
+ - 1];
+ }
+ indexPosInOffsetOrder[insertion] = nthBySha1;
+ }
+ nextBucketStart[bi] = nthByOffset;
+ }
+ }
+
+ @Override
+ public void verifyPackChecksum(String packFilePath)
+ throws PackMismatchException {
+ // There is no file with a checksum.
+ }
+
+ @Override
+ public ObjectId findObject(long offset) {
+ final int ith = binarySearch(offset);
+ if (ith < 0) {
+ return null;
+ }
+ return index.getObjectId(indexPosInOffsetOrder[ith]);
+ }
+
+ @Override
+ public long findNextOffset(long offset, long maxOffset)
+ throws CorruptObjectException {
+ final int ith = binarySearch(offset);
+ if (ith < 0) {
+ throw new CorruptObjectException(MessageFormat.format(JGitText
+ .get().cantFindObjectInReversePackIndexForTheSpecifiedOffset,
+ Long.valueOf(offset)));
+ }
+
+ if (ith + 1 == indexPosInOffsetOrder.length) {
+ return maxOffset;
+ }
+ return index.getOffset(indexPosInOffsetOrder[ith + 1]);
+ }
+
+ @Override
+ public int findPosition(long offset) {
+ return binarySearch(offset);
+ }
+
+ private int binarySearch(long offset) {
+ int bucket = (int) (offset / bucketSize);
+ int low = bucket == 0 ? 0 : nextBucketStart[bucket - 1];
+ int high = nextBucketStart[bucket];
+ while (low < high) {
+ final int mid = (low + high) >>> 1;
+ final long o = index.getOffset(indexPosInOffsetOrder[mid]);
+ if (offset < o) {
+ high = mid;
+ } else if (offset == o) {
+ return mid;
+ } else {
+ low = mid + 1;
+ }
+ }
+ return -1;
+ }
+
+ @Override
+ public ObjectId findObjectByPosition(int nthPosition) {
+ return index.getObjectId(indexPosInOffsetOrder[nthPosition]);
+ }
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexFactory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexFactory.java
new file mode 100644
index 0000000000..32830c3cf0
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexFactory.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2023, Google LLC and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.internal.storage.file;
+
+import static org.eclipse.jgit.internal.storage.file.PackReverseIndex.MAGIC;
+import static org.eclipse.jgit.internal.storage.file.PackReverseIndex.VERSION_1;
+
+import java.io.DataInput;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.DigestInputStream;
+import java.text.MessageFormat;
+import java.util.Arrays;
+
+import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.util.IO;
+import org.eclipse.jgit.util.io.SilentFileInputStream;
+
+/**
+ * Factory for creating instances of {@link PackReverseIndex}.
+ */
+public final class PackReverseIndexFactory {
+ /**
+ * Create an in-memory pack reverse index by reading it from the given file
+ * if the file exists, or computing it from the given pack index if the file
+ * doesn't exist.
+ *
+ * @param idxFile
+ * the file to read the pack file from, if it exists
+ * @param objectCount
+ * the number of objects in the corresponding pack
+ * @param packIndexSupplier
+ * a function to lazily get the corresponding forward index
+ * @return the reverse index instance
+ * @throws IOException
+ * if reading from the file fails
+ */
+ static PackReverseIndex openOrCompute(File idxFile, long objectCount,
+ PackBitmapIndex.SupplierWithIOException<PackIndex> packIndexSupplier)
+ throws IOException {
+ try (SilentFileInputStream fd = new SilentFileInputStream(idxFile)) {
+ return readFromFile(fd, objectCount, packIndexSupplier);
+ } catch (FileNotFoundException e) {
+ return computeFromIndex(packIndexSupplier.get());
+ } catch (IOException e) {
+ throw new IOException(
+ MessageFormat.format(JGitText.get().unreadablePackIndex,
+ idxFile.getAbsolutePath()),
+ e);
+ }
+ }
+
+ /**
+ * Compute an in-memory pack reverse index from the in-memory pack forward
+ * index. This computation uses insertion sort, which has a quadratic
+ * runtime on average.
+ *
+ * @param packIndex
+ * the forward index to compute from
+ * @return the reverse index instance
+ */
+ public static PackReverseIndex computeFromIndex(PackIndex packIndex) {
+ return new PackReverseIndexComputed(packIndex);
+ }
+
+ /**
+ * Read an in-memory pack reverse index from the given input stream. This
+ * has a linear runtime.
+ *
+ * @param src
+ * the input stream to read the contents from
+ * @param objectCount
+ * the number of objects in the corresponding pack
+ * @param packIndexSupplier
+ * a function to lazily get the corresponding forward index
+ * @return the reverse index instance
+ * @throws IOException
+ * if reading from the input stream fails
+ */
+ static PackReverseIndex readFromFile(InputStream src, long objectCount,
+ PackBitmapIndex.SupplierWithIOException<PackIndex> packIndexSupplier)
+ throws IOException {
+ final DigestInputStream digestIn = new DigestInputStream(src,
+ Constants.newMessageDigest());
+
+ final byte[] magic = new byte[MAGIC.length];
+ IO.readFully(digestIn, magic);
+ if (!Arrays.equals(magic, MAGIC)) {
+ throw new IOException(
+ MessageFormat.format(JGitText.get().expectedGot,
+ Arrays.toString(MAGIC), Arrays.toString(magic)));
+ }
+
+ DataInput dataIn = new SimpleDataInput(digestIn);
+ int version = dataIn.readInt();
+ switch (version) {
+ case VERSION_1:
+ return new PackReverseIndexV1(digestIn, objectCount,
+ packIndexSupplier);
+ default:
+ throw new IOException(MessageFormat.format(
+ JGitText.get().unsupportedPackReverseIndexVersion,
+ String.valueOf(version)));
+ }
+ }
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1.java
new file mode 100644
index 0000000000..c77a8eb761
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexV1.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2022, Google LLC and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.storage.file;
+
+import static org.eclipse.jgit.lib.Constants.OBJECT_ID_LENGTH;
+
+import java.io.DataInput;
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.security.DigestInputStream;
+import java.text.MessageFormat;
+import java.util.Arrays;
+
+import org.eclipse.jgit.errors.CorruptObjectException;
+import org.eclipse.jgit.errors.PackMismatchException;
+import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.internal.storage.pack.PackExt;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.util.Hex;
+import org.eclipse.jgit.util.IO;
+
+/**
+ * Reverse index for forward pack index which is parsed from a version 1 file.
+ * <p>
+ * The file format is specified at
+ * https://git-scm.com/docs/pack-format#_pack_rev_files_have_the_format.
+ */
+final class PackReverseIndexV1 implements PackReverseIndex {
+ static final int OID_VERSION_SHA1 = 1;
+
+ static final int OID_VERSION_SHA256 = 2;
+
+ private static final int SHA1_BYTES = OBJECT_ID_LENGTH;
+
+ private final DigestInputStream inputStream;
+
+ private final DataInput dataIn;
+
+ /**
+ * A lazy supplier for the corresponding PackIndex. The PackIndex is not
+ * needed during instantiation and parsing, only later when querying the
+ * reverse index. Allow lazy loading so that the parsing of the forward and
+ * reverse indices could happen in parallel.
+ */
+ private final PackBitmapIndex.SupplierWithIOException<PackIndex> packIndexSupplier;
+
+ private int objectCount;
+
+ private byte[] packChecksum;
+
+ private int[] indexPositionsSortedByOffset;
+
+ private PackIndex packIndex;
+
+ PackReverseIndexV1(DigestInputStream inputStream, long objectCount,
+ PackBitmapIndex.SupplierWithIOException<PackIndex> packIndexSupplier)
+ throws IOException {
+ try {
+ this.objectCount = Math.toIntExact(objectCount);
+ } catch (ArithmeticException e) {
+ throw new IllegalArgumentException(
+ JGitText.get().hugeIndexesAreNotSupportedByJgitYet);
+ }
+
+ this.inputStream = inputStream;
+ dataIn = new SimpleDataInput(inputStream);
+
+ int oid_version = dataIn.readInt();
+ switch (oid_version) {
+ case OID_VERSION_SHA1:
+ // JGit Pack only supports AnyObjectId, which represents SHA1.
+ break;
+ case OID_VERSION_SHA256:
+ throw new IOException(MessageFormat.format(
+ JGitText.get().unsupportedObjectIdVersion, "SHA256")); //$NON-NLS-1$
+ default:
+ throw new IOException(MessageFormat.format(
+ JGitText.get().unsupportedObjectIdVersion,
+ String.valueOf(oid_version)));
+ }
+
+ indexPositionsSortedByOffset = new int[this.objectCount];
+ this.packIndexSupplier = packIndexSupplier;
+
+ parseBody();
+ parseChecksums();
+ }
+
+ @Override
+ public void verifyPackChecksum(String packFilePath)
+ throws PackMismatchException {
+ if (!Arrays.equals(packChecksum, getPackIndex().getChecksum())) {
+ throw new PackMismatchException(
+ MessageFormat.format(JGitText.get().packChecksumMismatch,
+ packFilePath, PackExt.INDEX.getExtension(),
+ Hex.toHexString(getPackIndex().getChecksum()),
+ PackExt.REVERSE_INDEX.getExtension(),
+ Hex.toHexString(packChecksum)));
+ }
+ }
+
+ private void parseBody() throws IOException {
+ for (int i = 0; i < objectCount; i++) {
+ indexPositionsSortedByOffset[i] = dataIn.readInt();
+ }
+ }
+
+ private void parseChecksums() throws IOException {
+ packChecksum = new byte[SHA1_BYTES];
+ IO.readFully(inputStream, packChecksum);
+
+ // Take digest before reading the self checksum changes it.
+ byte[] observedSelfChecksum = inputStream.getMessageDigest().digest();
+
+ byte[] readSelfChecksum = new byte[SHA1_BYTES];
+ IO.readFully(inputStream, readSelfChecksum);
+
+ if (!Arrays.equals(readSelfChecksum, observedSelfChecksum)) {
+ throw new CorruptObjectException(MessageFormat.format(
+ JGitText.get().corruptReverseIndexChecksumIncorrect,
+ Hex.toHexString(readSelfChecksum),
+ Hex.toHexString(observedSelfChecksum)));
+ }
+ }
+
+ @Override
+ public ObjectId findObject(long offset) {
+ int reversePosition = findPosition(offset);
+ if (reversePosition < 0) {
+ return null;
+ }
+ int forwardPosition = findForwardPositionByReversePosition(
+ reversePosition);
+ return getPackIndex().getObjectId(forwardPosition);
+ }
+
+ @Override
+ public long findNextOffset(long offset, long maxOffset)
+ throws CorruptObjectException {
+ int position = findPosition(offset);
+ if (position < 0) {
+ throw new CorruptObjectException(MessageFormat.format(JGitText
+ .get().cantFindObjectInReversePackIndexForTheSpecifiedOffset,
+ Long.valueOf(offset)));
+ }
+ if (position + 1 == objectCount) {
+ return maxOffset;
+ }
+ return findOffsetByReversePosition(position + 1);
+ }
+
+ @Override
+ public int findPosition(long offset) {
+ return binarySearchByOffset(offset);
+ }
+
+ @Override
+ public ObjectId findObjectByPosition(int position) {
+ return getPackIndex()
+ .getObjectId(findForwardPositionByReversePosition(position));
+ }
+
+ private long findOffsetByReversePosition(int position) {
+ return getPackIndex()
+ .getOffset(findForwardPositionByReversePosition(position));
+ }
+
+ private int findForwardPositionByReversePosition(int reversePosition) {
+ assert (reversePosition >= 0);
+ assert (reversePosition < indexPositionsSortedByOffset.length);
+ return indexPositionsSortedByOffset[reversePosition];
+ }
+
+ private int binarySearchByOffset(long wantedOffset) {
+ int low = 0;
+ int high = objectCount - 1;
+ while (low <= high) {
+ int mid = (low + high) >>> 1;
+ long offsetAtMid = findOffsetByReversePosition(mid);
+ if (offsetAtMid == wantedOffset) {
+ return mid;
+ } else if (offsetAtMid > wantedOffset) {
+ high = mid - 1;
+ } else {
+ low = mid + 1;
+ }
+ }
+ return -1;
+ }
+
+ private PackIndex getPackIndex() {
+ if (packIndex == null) {
+ try {
+ packIndex = packIndexSupplier.get();
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+ return packIndex;
+ }
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriter.java
index 4c8417b115..94a4e9c129 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriter.java
@@ -9,6 +9,8 @@
*/
package org.eclipse.jgit.internal.storage.file;
+import static org.eclipse.jgit.internal.storage.file.PackReverseIndex.VERSION_1;
+
import java.io.BufferedOutputStream;
import java.io.DataOutput;
import java.io.IOException;
@@ -29,16 +31,6 @@ import org.eclipse.jgit.transport.PackedObjectInfo;
*/
public abstract class PackReverseIndexWriter {
/**
- * Magic bytes that uniquely identify git reverse index files.
- */
- protected static byte[] MAGIC = { 'R', 'I', 'D', 'X' };
-
- /**
- * The first reverse index file version.
- */
- protected static final int VERSION_1 = 1;
-
- /**
* Stream to write contents to while maintaining a checksum.
*/
protected final DigestOutputStream out;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriterV1.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriterV1.java
index 7630724d09..ff1809f446 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriterV1.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackReverseIndexWriterV1.java
@@ -9,6 +9,10 @@
*/
package org.eclipse.jgit.internal.storage.file;
+import static org.eclipse.jgit.internal.storage.file.PackReverseIndex.MAGIC;
+import static org.eclipse.jgit.internal.storage.file.PackReverseIndex.VERSION_1;
+import static org.eclipse.jgit.internal.storage.file.PackReverseIndexV1.OID_VERSION_SHA1;
+
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
@@ -24,8 +28,6 @@ import org.eclipse.jgit.util.IntList.IntComparator;
* https://git-scm.com/docs/pack-format#_pack_rev_files_have_the_format.
*/
final class PackReverseIndexWriterV1 extends PackReverseIndexWriter {
- private static final int OID_VERSION_SHA1 = 1;
-
private static final int DEFAULT_OID_VERSION = OID_VERSION_SHA1;
PackReverseIndexWriterV1(final OutputStream dst) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java
index 106313db63..5584f13db1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java
@@ -98,7 +98,6 @@ class PackedBatchRefUpdate extends BatchRefUpdate {
this.shouldLockLooseRefs = shouldLockLooseRefs;
}
- /** {@inheritDoc} */
@Override
public void execute(RevWalk walk, ProgressMonitor monitor,
List<String> options) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
index 695721ec42..4bc4568cc1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
@@ -247,7 +247,6 @@ public class RefDirectory extends RefDatabase {
return new SnapshottingRefDirectory(this);
}
- /** {@inheritDoc} */
@Override
public void create() throws IOException {
FileUtils.mkdir(refsDir);
@@ -256,7 +255,6 @@ public class RefDirectory extends RefDatabase {
newLogWriter(false).create();
}
- /** {@inheritDoc} */
@Override
public void close() {
clearReferences();
@@ -267,14 +265,12 @@ public class RefDirectory extends RefDatabase {
packedRefs.set(NO_PACKED_REFS);
}
- /** {@inheritDoc} */
@Override
public void refresh() {
super.refresh();
clearReferences();
}
- /** {@inheritDoc} */
@Override
public boolean isNameConflicting(String name) throws IOException {
// Cannot be nested within an existing reference.
@@ -312,7 +308,6 @@ public class RefDirectory extends RefDatabase {
}
}
- /** {@inheritDoc} */
@Override
public Ref exactRef(String name) throws IOException {
try {
@@ -322,7 +317,6 @@ public class RefDirectory extends RefDatabase {
}
}
- /** {@inheritDoc} */
@Override
@NonNull
public Map<String, Ref> exactRef(String... refs) throws IOException {
@@ -341,7 +335,6 @@ public class RefDirectory extends RefDatabase {
}
}
- /** {@inheritDoc} */
@Override
@Nullable
public Ref firstExactRef(String... refs) throws IOException {
@@ -359,7 +352,6 @@ public class RefDirectory extends RefDatabase {
}
}
- /** {@inheritDoc} */
@Override
public Map<String, Ref> getRefs(String prefix) throws IOException {
final RefList<LooseRef> oldLoose = looseRefs.get();
@@ -399,7 +391,6 @@ public class RefDirectory extends RefDatabase {
return new RefMap(prefix, packed, upcast(loose), symbolic.toRefList());
}
- /** {@inheritDoc} */
@Override
public List<Ref> getAdditionalRefs() throws IOException {
List<Ref> ret = new LinkedList<>();
@@ -534,7 +525,6 @@ public class RefDirectory extends RefDatabase {
}
}
- /** {@inheritDoc} */
@Override
public Ref peel(Ref ref) throws IOException {
final Ref leaf = ref.getLeaf();
@@ -585,7 +575,6 @@ public class RefDirectory extends RefDatabase {
fireRefsChanged();
}
- /** {@inheritDoc} */
@Override
public RefDirectoryUpdate newUpdate(String name, boolean detach)
throws IOException {
@@ -609,7 +598,6 @@ public class RefDirectory extends RefDatabase {
return new RefDirectoryUpdate(this, ref);
}
- /** {@inheritDoc} */
@Override
public RefDirectoryRename newRename(String fromName, String toName)
throws IOException {
@@ -622,7 +610,6 @@ public class RefDirectory extends RefDatabase {
return new RefDirectoryRename(from, to);
}
- /** {@inheritDoc} */
@Override
public PackedBatchRefUpdate newBatchUpdate() {
return new PackedBatchRefUpdate(this);
@@ -643,7 +630,6 @@ public class RefDirectory extends RefDatabase {
return new PackedBatchRefUpdate(this, shouldLockLooseRefs);
}
- /** {@inheritDoc} */
@Override
public boolean performsAtomicTransactions() {
return true;
@@ -723,6 +709,7 @@ public class RefDirectory extends RefDatabase {
* @param refs
* the refs to be added. Must be fully qualified.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void pack(List<String> refs) throws IOException {
pack(refs, Collections.emptyMap());
@@ -867,26 +854,29 @@ public class RefDirectory extends RefDatabase {
* has this attributes simply return it. Otherwise create a new peeled
* {@link ObjectIdRef} where Storage is set to PACKED.
*
- * @param f
+ * @param ref
+ * given ref
* @return a ref for Storage PACKED having the same name, id, peeledId as f
* @throws MissingObjectException
+ * if an object is missing
* @throws IOException
+ * if an IO error occurred
*/
- private Ref peeledPackedRef(Ref f)
+ private Ref peeledPackedRef(Ref ref)
throws MissingObjectException, IOException {
- if (f.getStorage().isPacked() && f.isPeeled()) {
- return f;
+ if (ref.getStorage().isPacked() && ref.isPeeled()) {
+ return ref;
}
- if (!f.isPeeled()) {
- f = peel(f);
+ if (!ref.isPeeled()) {
+ ref = peel(ref);
}
- ObjectId peeledObjectId = f.getPeeledObjectId();
+ ObjectId peeledObjectId = ref.getPeeledObjectId();
if (peeledObjectId != null) {
- return new ObjectIdRef.PeeledTag(PACKED, f.getName(),
- f.getObjectId(), peeledObjectId);
+ return new ObjectIdRef.PeeledTag(PACKED, ref.getName(),
+ ref.getObjectId(), peeledObjectId);
}
- return new ObjectIdRef.PeeledNonTag(PACKED, f.getName(),
- f.getObjectId());
+ return new ObjectIdRef.PeeledNonTag(PACKED, ref.getName(),
+ ref.getObjectId());
}
void log(boolean force, RefUpdate update, String msg, boolean deref)
@@ -1235,6 +1225,7 @@ public class RefDirectory extends RefDatabase {
*
* @return {@code true} if we are currently cloning a repository
* @throws IOException
+ * if an IO error occurred
*/
boolean isInClone() throws IOException {
return hasDanglingHead() && !packedRefsFile.exists() && !hasLooseRef();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryRename.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryRename.java
index d07299e45a..1c5c48a296 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryRename.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryRename.java
@@ -68,7 +68,6 @@ class RefDirectoryRename extends RefRename {
return refdb;
}
- /** {@inheritDoc} */
@Override
protected Result doRename() throws IOException {
if (source.getRef().isSymbolic())
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java
index 62373a0a7b..436957bb24 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java
@@ -32,19 +32,16 @@ class RefDirectoryUpdate extends RefUpdate {
database = r;
}
- /** {@inheritDoc} */
@Override
protected RefDirectory getRefDatabase() {
return database;
}
- /** {@inheritDoc} */
@Override
protected Repository getRepository() {
return database.getRepository();
}
- /** {@inheritDoc} */
@Override
protected boolean tryLock(boolean deref) throws IOException {
shouldDeref = deref;
@@ -62,7 +59,6 @@ class RefDirectoryUpdate extends RefUpdate {
return false;
}
- /** {@inheritDoc} */
@Override
protected void unlock() {
if (lock != null) {
@@ -71,7 +67,6 @@ class RefDirectoryUpdate extends RefUpdate {
}
}
- /** {@inheritDoc} */
@Override
protected Result doUpdate(Result status) throws IOException {
WriteConfig wc = database.getRepository().getConfig()
@@ -113,7 +108,6 @@ class RefDirectoryUpdate extends RefUpdate {
}
}
- /** {@inheritDoc} */
@Override
protected Result doDelete(Result status) throws IOException {
if (getRef().getStorage() != Ref.Storage.NEW)
@@ -121,7 +115,6 @@ class RefDirectoryUpdate extends RefUpdate {
return status;
}
- /** {@inheritDoc} */
@Override
protected Result doLink(String target) throws IOException {
WriteConfig wc = database.getRepository().getConfig()
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntryImpl.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntryImpl.java
index cb80043b7e..6870d7686e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntryImpl.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntryImpl.java
@@ -60,7 +60,6 @@ public class ReflogEntryImpl implements Serializable, ReflogEntry {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogEntry#getOldId()
*/
- /** {@inheritDoc} */
@Override
public ObjectId getOldId() {
return oldId;
@@ -69,7 +68,6 @@ public class ReflogEntryImpl implements Serializable, ReflogEntry {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogEntry#getNewId()
*/
- /** {@inheritDoc} */
@Override
public ObjectId getNewId() {
return newId;
@@ -78,7 +76,6 @@ public class ReflogEntryImpl implements Serializable, ReflogEntry {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogEntry#getWho()
*/
- /** {@inheritDoc} */
@Override
public PersonIdent getWho() {
return who;
@@ -87,13 +84,11 @@ public class ReflogEntryImpl implements Serializable, ReflogEntry {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogEntry#getComment()
*/
- /** {@inheritDoc} */
@Override
public String getComment() {
return comment;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
@@ -104,7 +99,6 @@ public class ReflogEntryImpl implements Serializable, ReflogEntry {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogEntry#parseCheckout()
*/
- /** {@inheritDoc} */
@Override
public CheckoutEntry parseCheckout() {
if (getComment().startsWith(CheckoutEntryImpl.CHECKOUT_MOVING_FROM)) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReaderImpl.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReaderImpl.java
index 99a9e0938e..21b5a54eb7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReaderImpl.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReaderImpl.java
@@ -32,7 +32,9 @@ class ReflogReaderImpl implements ReflogReader {
/**
* @param db
+ * repository to read reflogs from
* @param refname
+ * {@code Ref} name
*/
ReflogReaderImpl(Repository db, String refname) {
logName = new File(db.getDirectory(), Constants.LOGS + '/' + refname);
@@ -41,7 +43,6 @@ class ReflogReaderImpl implements ReflogReader {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogReaader#getLastEntry()
*/
- /** {@inheritDoc} */
@Override
public ReflogEntry getLastEntry() throws IOException {
return getReverseEntry(0);
@@ -50,7 +51,6 @@ class ReflogReaderImpl implements ReflogReader {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogReaader#getReverseEntries()
*/
- /** {@inheritDoc} */
@Override
public List<ReflogEntry> getReverseEntries() throws IOException {
return getReverseEntries(Integer.MAX_VALUE);
@@ -59,7 +59,6 @@ class ReflogReaderImpl implements ReflogReader {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogReaader#getReverseEntry(int)
*/
- /** {@inheritDoc} */
@Override
public ReflogEntry getReverseEntry(int number) throws IOException {
if (number < 0)
@@ -89,7 +88,6 @@ class ReflogReaderImpl implements ReflogReader {
/* (non-Javadoc)
* @see org.eclipse.jgit.internal.storage.file.ReflogReaader#getReverseEntries(int)
*/
- /** {@inheritDoc} */
@Override
public List<ReflogEntry> getReverseEntries(int max) throws IOException {
final byte[] log;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java
index 7032083a4d..b1ceb14809 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java
@@ -91,6 +91,7 @@ public class ReflogWriter {
* Create the log directories.
*
* @throws java.io.IOException
+ * if an IO error occurred
* @return this writer.
*/
public ReflogWriter create() throws IOException {
@@ -110,6 +111,7 @@ public class ReflogWriter {
* a {@link org.eclipse.jgit.lib.ReflogEntry} object.
* @return this writer
* @throws java.io.IOException
+ * if an IO error occurred
*/
public ReflogWriter log(String refName, ReflogEntry entry)
throws IOException {
@@ -132,6 +134,7 @@ public class ReflogWriter {
* reflog message
* @return this writer
* @throws java.io.IOException
+ * if an IO error occurred
*/
public ReflogWriter log(String refName, ObjectId oldId,
ObjectId newId, PersonIdent ident, String message) throws IOException {
@@ -150,6 +153,7 @@ public class ReflogWriter {
* whether to dereference symbolic refs
* @return this writer
* @throws java.io.IOException
+ * if an IO error occurred
*/
public ReflogWriter log(RefUpdate update, String msg,
boolean deref) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataInput.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataInput.java
index 6a80519d0b..7a564cc6ab 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataInput.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataInput.java
@@ -31,14 +31,12 @@ class SimpleDataInput implements DataInput {
this.fd = fd;
}
- /** {@inheritDoc} */
@Override
public int readInt() throws IOException {
readFully(buf, 0, 4);
return NB.decodeInt32(buf, 0);
}
- /** {@inheritDoc} */
@Override
public long readLong() throws IOException {
readFully(buf, 0, 8);
@@ -57,79 +55,66 @@ class SimpleDataInput implements DataInput {
return NB.decodeUInt32(buf, 0);
}
- /** {@inheritDoc} */
@Override
public void readFully(byte[] b) throws IOException {
readFully(b, 0, b.length);
}
- /** {@inheritDoc} */
@Override
public void readFully(byte[] b, int off, int len) throws IOException {
IO.readFully(fd, b, off, len);
}
- /** {@inheritDoc} */
@Override
public int skipBytes(int n) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public boolean readBoolean() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public byte readByte() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public int readUnsignedByte() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public short readShort() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public int readUnsignedShort() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public char readChar() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public float readFloat() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public double readDouble() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public String readLine() throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public String readUTF() throws IOException {
throw new UnsupportedOperationException();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataOutput.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataOutput.java
index d01f6b4bda..74840889ce 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataOutput.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SimpleDataOutput.java
@@ -31,88 +31,74 @@ class SimpleDataOutput implements DataOutput {
this.fd = fd;
}
- /** {@inheritDoc} */
@Override
public void writeShort(int v) throws IOException {
NB.encodeInt16(buf, 0, v);
fd.write(buf, 0, 2);
}
- /** {@inheritDoc} */
@Override
public void writeInt(int v) throws IOException {
NB.encodeInt32(buf, 0, v);
fd.write(buf, 0, 4);
}
- /** {@inheritDoc} */
@Override
public void writeLong(long v) throws IOException {
NB.encodeInt64(buf, 0, v);
fd.write(buf, 0, 8);
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b, int off, int len) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void writeBoolean(boolean v) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void writeByte(int v) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void writeChar(int v) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void writeFloat(float v) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void writeDouble(double v) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void writeBytes(String s) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void writeChars(String s) throws IOException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public void writeUTF(String s) throws IOException {
throw new UnsupportedOperationException();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectory.java
index eaa26ed4f3..e7fe04a8a9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/SnapshottingRefDirectory.java
@@ -66,14 +66,12 @@ class SnapshottingRefDirectory extends RefDirectory {
return packedRefs.get();
}
- /** {@inheritDoc} */
@Override
void delete(RefDirectoryUpdate update) throws IOException {
refreshSnapshot();
super.delete(update);
}
- /** {@inheritDoc} */
@Override
public RefDirectoryUpdate newUpdate(String name, boolean detach)
throws IOException {
@@ -81,19 +79,16 @@ class SnapshottingRefDirectory extends RefDirectory {
return super.newUpdate(name, detach);
}
- /** {@inheritDoc} */
@Override
public PackedBatchRefUpdate newBatchUpdate() {
return new SnapshotPackedBatchRefUpdate(this);
}
- /** {@inheritDoc} */
@Override
public PackedBatchRefUpdate newBatchUpdate(boolean shouldLockLooseRefs) {
return new SnapshotPackedBatchRefUpdate(this, shouldLockLooseRefs);
}
- /** {@inheritDoc} */
@Override
RefDirectoryUpdate newTemporaryUpdate() throws IOException {
refreshSnapshot();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java
index 25653b3ce3..81537dd46c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCache.java
@@ -435,7 +435,9 @@ public class WindowCache {
private final AtomicBoolean publishMBean = new AtomicBoolean();
- private boolean useStrongRefs;
+ private final boolean useStrongRefs;
+
+ private final boolean useStrongIndexRefs;
private WindowCache(WindowCacheConfig cfg) {
tableSize = tableSize(cfg);
@@ -467,6 +469,7 @@ public class WindowCache {
windowSizeShift = bits(cfg.getPackedGitWindowSize());
windowSize = 1 << windowSizeShift;
useStrongRefs = cfg.isPackedGitUseStrongRefs();
+ useStrongIndexRefs = cfg.isPackedIndexGitUseStrongRefs();
queue = useStrongRefs ? new StrongCleanupQueue(this)
: new SoftCleanupQueue(this);
@@ -751,6 +754,10 @@ public class WindowCache {
return n == top.next ? top : new Entry(n, top.ref);
}
+ boolean isPackedIndexGitUseStrongRefs() {
+ return useStrongIndexRefs;
+ }
+
private static class Entry {
/** Next entry in the hash table's chain list. */
final Entry next;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
index fa743babe7..01f514b939 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
@@ -79,13 +79,11 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
return baseCache;
}
- /** {@inheritDoc} */
@Override
public ObjectReader newReader() {
return new WindowCursor(db);
}
- /** {@inheritDoc} */
@Override
public BitmapIndex getBitmapIndex() throws IOException {
for (Pack pack : db.getPacks()) {
@@ -96,13 +94,11 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
return null;
}
- /** {@inheritDoc} */
@Override
public Optional<CommitGraph> getCommitGraph() {
return db.getCommitGraph();
}
- /** {@inheritDoc} */
@Override
public Collection<CachedPack> getCachedPacksAndUpdate(
BitmapBuilder needBitmap) throws IOException {
@@ -115,7 +111,6 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
return Collections.emptyList();
}
- /** {@inheritDoc} */
@Override
public Collection<ObjectId> resolve(AbbreviatedObjectId id)
throws IOException {
@@ -126,13 +121,11 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
return matches;
}
- /** {@inheritDoc} */
@Override
public boolean has(AnyObjectId objectId) throws IOException {
return db.has(objectId);
}
- /** {@inheritDoc} */
@Override
public ObjectLoader open(AnyObjectId objectId, int typeHint)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -149,13 +142,11 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
return ldr;
}
- /** {@inheritDoc} */
@Override
public Set<ObjectId> getShallowCommits() throws IOException {
return db.getShallowCommits();
}
- /** {@inheritDoc} */
@Override
public long getObjectSize(AnyObjectId objectId, int typeHint)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -170,13 +161,11 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
return sz;
}
- /** {@inheritDoc} */
@Override
public LocalObjectToPack newObjectToPack(AnyObjectId objectId, int type) {
return new LocalObjectToPack(objectId, type);
}
- /** {@inheritDoc} */
@Override
public void selectObjectRepresentation(PackWriter packer,
ProgressMonitor monitor, Iterable<ObjectToPack> objects)
@@ -187,7 +176,6 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
}
}
- /** {@inheritDoc} */
@Override
public void copyObjectAsIs(PackOutputStream out, ObjectToPack otp,
boolean validate) throws IOException,
@@ -196,7 +184,6 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
src.pack.copyAsIs(out, src, validate, this);
}
- /** {@inheritDoc} */
@Override
public void writeObjects(PackOutputStream out, List<ObjectToPack> list)
throws IOException {
@@ -240,7 +227,6 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
return cnt - need;
}
- /** {@inheritDoc} */
@Override
public void copyPackAsIs(PackOutputStream out, CachedPack pack)
throws IOException {
@@ -336,7 +322,6 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
}
}
- /** {@inheritDoc} */
@Override
@Nullable
public ObjectInserter getCreatedFromInserter() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/BlockSource.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/BlockSource.java
index 82d07e6bde..58695fc9ab 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/BlockSource.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/BlockSource.java
@@ -147,7 +147,6 @@ public abstract class BlockSource implements AutoCloseable {
// Do nothing by default.
}
- /** {@inheritDoc} */
@Override
public abstract void close();
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java
index ca2095feec..ce86eabe90 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/io/CancellableDigestOutputStream.java
@@ -80,7 +80,6 @@ public class CancellableDigestOutputStream extends OutputStream {
return count;
}
- /** {@inheritDoc} */
@Override
public final void write(int b) throws IOException {
if (checkCancelAt <= count) {
@@ -95,7 +94,6 @@ public class CancellableDigestOutputStream extends OutputStream {
count++;
}
- /** {@inheritDoc} */
@Override
public final void write(byte[] b, int off, int len) throws IOException {
while (0 < len) {
@@ -116,7 +114,6 @@ public class CancellableDigestOutputStream extends OutputStream {
}
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
out.flush();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/memory/TernarySearchTree.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/memory/TernarySearchTree.java
index 1ac6627360..acc1c830d5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/memory/TernarySearchTree.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/memory/TernarySearchTree.java
@@ -300,6 +300,7 @@ public final class TernarySearchTree<Value> {
* Find the key which is the longest prefix of the given query string.
*
* @param query
+ * the query string
* @return the key which is the longest prefix of the given query string or
* {@code null} if none exists.
*/
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaIndex.java
index 7ed5defbe4..b86ff7f177 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaIndex.java
@@ -393,7 +393,6 @@ public class DeltaIndex {
return start - resPtr;
}
- /** {@inheritDoc} */
@Override
@SuppressWarnings("nls")
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaTask.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaTask.java
index 132eb5095b..9a3f4b07ee 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaTask.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaTask.java
@@ -254,7 +254,6 @@ final class DeltaTask implements Callable<Object> {
slices.add(s);
}
- /** {@inheritDoc} */
@Override
public Object call() throws Exception {
or = block.templateReader.newReader();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/ObjectToPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/ObjectToPack.java
index d9013bff26..ea5b9461ca 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/ObjectToPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/ObjectToPack.java
@@ -156,7 +156,6 @@ public class ObjectToPack extends PackedObjectInfo {
return 1 < getOffset(); // markWantWrite sets 1.
}
- /** {@inheritDoc} */
@Override
public final int getType() {
return (flags >> TYPE_SHIFT) & 0x7;
@@ -357,7 +356,6 @@ public class ObjectToPack extends PackedObjectInfo {
// Empty by default.
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackExt.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackExt.java
index d580083795..e6daaeaca9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackExt.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackExt.java
@@ -80,7 +80,6 @@ public enum PackExt {
return String.format(".%s_tmp", ext); //$NON-NLS-1$
}
- /** {@inheritDoc} */
@Override
public String toString() {
return String.format("PackExt[%s, bit=0x%s]", getExtension(), //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
index 9f8ab351f6..dcd360dbb3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
@@ -2008,8 +2008,10 @@ public class PackWriter implements AutoCloseable {
final long countingStart = System.currentTimeMillis();
beginPhase(PackingPhase.COUNTING, countingMonitor, ProgressMonitor.UNKNOWN);
- stats.interestingObjects = Collections.unmodifiableSet(new HashSet<ObjectId>(want));
- stats.uninterestingObjects = Collections.unmodifiableSet(new HashSet<ObjectId>(have));
+ stats.interestingObjects = Collections
+ .unmodifiableSet(new HashSet<>(want));
+ stats.uninterestingObjects = Collections
+ .unmodifiableSet(new HashSet<>(have));
excludeFromBitmapSelection = noBitmaps;
canBuildBitmaps = config.isBuildBitmaps()
@@ -2308,7 +2310,7 @@ public class PackWriter implements AutoCloseable {
/**
* Determines if the object should be omitted from the pack as a result of
- * its depth (probably because of the tree:<depth> filter).
+ * its depth (probably because of the tree:&lt;depth&gt; filter).
* <p>
* Causes {@code walker} to skip traversing the current tree, which ought to
* have just started traversal, assuming this method is called as soon as a
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/EmptyLogCursor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/EmptyLogCursor.java
index 7c06be876b..8700556d48 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/EmptyLogCursor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/EmptyLogCursor.java
@@ -16,31 +16,26 @@ import org.eclipse.jgit.lib.ReflogEntry;
/** Empty {@link LogCursor} with no results. */
class EmptyLogCursor extends LogCursor {
- /** {@inheritDoc} */
@Override
public boolean next() throws IOException {
return false;
}
- /** {@inheritDoc} */
@Override
public String getRefName() {
return null;
}
- /** {@inheritDoc} */
@Override
public long getUpdateIndex() {
return 0;
}
- /** {@inheritDoc} */
@Override
public ReflogEntry getReflogEntry() {
return null;
}
- /** {@inheritDoc} */
@Override
public void close() {
// Do nothing.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/LogCursor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/LogCursor.java
index f78975af34..f9c701ebe2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/LogCursor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/LogCursor.java
@@ -51,7 +51,6 @@ public abstract class LogCursor implements AutoCloseable {
@Nullable
public abstract ReflogEntry getReflogEntry();
- /** {@inheritDoc} */
@Override
public abstract void close();
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/MergedReftable.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/MergedReftable.java
index e210acf058..aeaf241710 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/MergedReftable.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/MergedReftable.java
@@ -39,7 +39,6 @@ public class MergedReftable extends Reftable {
/**
* Initialize a merged table reader.
- * <p>
*
* @param tableStack
* stack of tables to read from. The base of the stack is at
@@ -91,7 +90,6 @@ public class MergedReftable extends Reftable {
return minUpdateIndex;
}
- /** {@inheritDoc} */
@Override
public boolean hasObjectMap() throws IOException {
boolean has = true;
@@ -101,7 +99,6 @@ public class MergedReftable extends Reftable {
return has;
}
- /** {@inheritDoc} */
@Override
public RefCursor allRefs() throws IOException {
MergedRefCursor m = new MergedRefCursor();
@@ -111,7 +108,6 @@ public class MergedReftable extends Reftable {
return m;
}
- /** {@inheritDoc} */
@Override
public RefCursor seekRef(String name) throws IOException {
MergedRefCursor m = new MergedRefCursor();
@@ -121,7 +117,6 @@ public class MergedReftable extends Reftable {
return m;
}
- /** {@inheritDoc} */
@Override
public RefCursor seekRefsWithPrefix(String prefix) throws IOException {
MergedRefCursor m = new MergedRefCursor();
@@ -131,7 +126,6 @@ public class MergedReftable extends Reftable {
return m;
}
- /** {@inheritDoc} */
@Override
public RefCursor byObjectId(AnyObjectId name) throws IOException {
MergedRefCursor m = new FilteringMergedRefCursor(name);
@@ -141,7 +135,6 @@ public class MergedReftable extends Reftable {
return m;
}
- /** {@inheritDoc} */
@Override
public LogCursor allLogs() throws IOException {
MergedLogCursor m = new MergedLogCursor();
@@ -151,7 +144,6 @@ public class MergedReftable extends Reftable {
return m;
}
- /** {@inheritDoc} */
@Override
public LogCursor seekLog(String refName, long updateIdx)
throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/RefCursor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/RefCursor.java
index 5e2c350883..6cd4f6c81d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/RefCursor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/RefCursor.java
@@ -58,7 +58,6 @@ public abstract class RefCursor implements AutoCloseable {
return r.getStorage() == Ref.Storage.NEW && r.getObjectId() == null;
}
- /** {@inheritDoc} */
@Override
public abstract void close();
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/Reftable.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/Reftable.java
index 63786dc17e..6e83778c78 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/Reftable.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/Reftable.java
@@ -138,7 +138,7 @@ public abstract class Reftable {
public abstract RefCursor byObjectId(AnyObjectId id) throws IOException;
/**
- * @return whether this reftable can do a fast SHA1 => ref lookup.
+ * @return whether this reftable can do a fast SHA1 =&gt; ref lookup.
* @throws IOException on I/O problems.
*/
public abstract boolean hasObjectMap() throws IOException;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableBatchRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableBatchRefUpdate.java
index dbc2ec7dc9..38c17e346a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableBatchRefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableBatchRefUpdate.java
@@ -81,7 +81,6 @@ public abstract class ReftableBatchRefUpdate extends BatchRefUpdate {
this.repository = repository;
}
- /** {@inheritDoc} */
@Override
public void execute(RevWalk rw, ProgressMonitor pm, List<String> options) {
List<ReceiveCommand> pending = getPending();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableOutputStream.java
index aa3aba516f..86e16ec863 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableOutputStream.java
@@ -59,14 +59,12 @@ class ReftableOutputStream extends OutputStream {
blockSize = bs;
}
- /** {@inheritDoc} */
@Override
public void write(int b) {
ensureBytesAvailableInBlockBuf(1);
blockBuf[cur++] = (byte) b;
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b, int off, int cnt) {
ensureBytesAvailableInBlockBuf(cnt);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java
index cabb2e1842..2a73efd962 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java
@@ -127,7 +127,6 @@ public class ReftableReader extends Reftable implements AutoCloseable {
return maxUpdateIndex;
}
- /** {@inheritDoc} */
@Override
public RefCursor allRefs() throws IOException {
if (blockSize == -1) {
@@ -144,7 +143,6 @@ public class ReftableReader extends Reftable implements AutoCloseable {
return i;
}
- /** {@inheritDoc} */
@Override
public RefCursor seekRef(String refName) throws IOException {
initRefIndex();
@@ -155,7 +153,6 @@ public class ReftableReader extends Reftable implements AutoCloseable {
return i;
}
- /** {@inheritDoc} */
@Override
public RefCursor seekRefsWithPrefix(String prefix) throws IOException {
initRefIndex();
@@ -166,7 +163,6 @@ public class ReftableReader extends Reftable implements AutoCloseable {
return i;
}
- /** {@inheritDoc} */
@Override
public RefCursor byObjectId(AnyObjectId id) throws IOException {
initObjIndex();
@@ -179,7 +175,6 @@ public class ReftableReader extends Reftable implements AutoCloseable {
return i;
}
- /** {@inheritDoc} */
@Override
public LogCursor allLogs() throws IOException {
initLogIndex();
@@ -192,7 +187,6 @@ public class ReftableReader extends Reftable implements AutoCloseable {
return new EmptyLogCursor();
}
- /** {@inheritDoc} */
@Override
public LogCursor seekLog(String refName, long updateIndex)
throws IOException {
@@ -460,7 +454,6 @@ public class ReftableReader extends Reftable implements AutoCloseable {
return src.size();
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
src.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReflogReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReflogReader.java
index f9f1def958..597303301a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReflogReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReflogReader.java
@@ -34,7 +34,6 @@ public class ReftableReflogReader implements ReflogReader {
this.refname = refname;
}
- /** {@inheritDoc} */
@Override
public ReflogEntry getLastEntry() throws IOException {
lock.lock();
@@ -46,13 +45,11 @@ public class ReftableReflogReader implements ReflogReader {
}
}
- /** {@inheritDoc} */
@Override
public List<ReflogEntry> getReverseEntries() throws IOException {
return getReverseEntries(Integer.MAX_VALUE);
}
- /** {@inheritDoc} */
@Override
public ReflogEntry getReverseEntry(int number) throws IOException {
lock.lock();
@@ -72,7 +69,6 @@ public class ReftableReflogReader implements ReflogReader {
}
}
- /** {@inheritDoc} */
@Override
public List<ReflogEntry> getReverseEntries(int max) throws IOException {
lock.lock();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/submodule/SubmoduleValidator.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/submodule/SubmoduleValidator.java
index d0e24413bb..ff8308df40 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/submodule/SubmoduleValidator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/submodule/SubmoduleValidator.java
@@ -45,8 +45,8 @@ public class SubmoduleValidator {
* @param message
* Description of the problem
* @param fsckMessageId
- * Error identifier, following the git fsck fsck.<msg-id>
- * format
+ * Error identifier, following the git fsck
+ * fsck.&lt;msg-id&gt; format
*/
SubmoduleValidationException(String message,
ObjectChecker.ErrorType fsckMessageId) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/ssh/OpenSshConfigFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/ssh/OpenSshConfigFile.java
index 659ccb8c55..29a2922136 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/ssh/OpenSshConfigFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/ssh/OpenSshConfigFile.java
@@ -1154,7 +1154,6 @@ public class OpenSshConfigFile implements SshConfigStore {
}
}
- /** {@inheritDoc} */
@Override
@SuppressWarnings("nls")
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/util/Optionally.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/util/Optionally.java
new file mode 100644
index 0000000000..987584f640
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/util/Optionally.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * and other copyright owners as documented in the project's IP log.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.internal.util;
+
+import java.lang.ref.SoftReference;
+import java.util.Optional;
+
+/**
+ * Interface representing a reference to a potentially mutable optional object.
+ *
+ * @param <T>
+ * type of the mutable optional object
+ *
+ * @since 6.7
+ */
+public interface Optionally<T> {
+ /**
+ * A permanently empty Optionally
+ *
+ * @param <T>
+ * type of the mutable optional object
+ *
+ */
+ public class Empty<T> implements Optionally<T> {
+ @Override
+ public void clear() {
+ // empty
+ }
+
+ @Override
+ public Optional<T> getOptional() {
+ return Optional.empty();
+ }
+ }
+
+ /**
+ * A permanent(hard) reference to an object
+ *
+ * @param <T>
+ * type of the mutable optional object
+ *
+ */
+ public class Hard<T> implements Optionally<T> {
+ /**
+ * The mutable optional object
+ */
+ protected T element;
+
+ /**
+ * @param element
+ * the mutable optional object
+ */
+ public Hard(T element) {
+ this.element = element;
+ }
+
+ @Override
+ public void clear() {
+ element = null;
+ }
+
+ @Override
+ public Optional<T> getOptional() {
+ return Optional.ofNullable(element);
+ }
+ }
+
+ /**
+ * A SoftReference Optionally
+ *
+ * @param <T>
+ * type of the mutable optional object
+ *
+ */
+ public class Soft<T> extends SoftReference<T> implements Optionally<T> {
+ /**
+ * @param t
+ * the mutable optional object
+ */
+ public Soft(T t) {
+ super(t);
+ }
+
+ @Override
+ public Optional<T> getOptional() {
+ return Optional.ofNullable(get());
+ }
+ }
+
+ /**
+ * The empty Optionally
+ */
+ public static final Optionally<?> EMPTY = new Empty<>();
+
+ /**
+ * @param <T>
+ * type of the empty Optionally
+ * @return the empty Optionally
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> Optionally<T> empty() {
+ return (Optionally<T>) EMPTY;
+ }
+
+ /**
+ * Clear the object
+ *
+ */
+ void clear();
+
+ /**
+ * Get an Optional representing the current state of the object
+ *
+ * @return the mutable optional object
+ */
+ Optional<T> getOptional();
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbrevConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbrevConfig.java
index 9109cfd769..c3dffdfe79 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbrevConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbrevConfig.java
@@ -19,7 +19,7 @@ import org.eclipse.jgit.internal.JGitText;
/**
* Git configuration option <a
- * href=https://git-scm.com/docs/git-config#Documentation/git-config.txt-coreabbrev">
+ * href="https://git-scm.com/docs/git-config#Documentation/git-config.txt-coreabbrev">
* core.abbrev</a>
*
* @since 6.1
@@ -100,6 +100,7 @@ public final class AbbrevConfig {
* object names to stay unique for some time.
*
* @param repo
+ * the repository the AbbrevConfig shall be computed for
* @return appropriate value computed based on the approximate number of
* packed objects in a repository
*/
@@ -128,7 +129,10 @@ public final class AbbrevConfig {
private int abbrev;
/**
+ * Create an {@code AbbrevConfig}
+ *
* @param abbrev
+ * abbreviation length
*/
private AbbrevConfig(int abbrev) {
this.abbrev = capAbbrev(abbrev);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbreviatedObjectId.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbreviatedObjectId.java
index dc5e5cc20f..a13136b9f1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbreviatedObjectId.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbbreviatedObjectId.java
@@ -321,13 +321,11 @@ public final class AbbreviatedObjectId implements Serializable {
return mask(nibbles, word, v);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return w1;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
if (o instanceof AbbreviatedObjectId) {
@@ -366,7 +364,6 @@ public final class AbbreviatedObjectId implements Serializable {
return new String(b, 0, nibbles);
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java
index 7685b30f8e..c58133adab 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java
@@ -248,7 +248,6 @@ public abstract class AnyObjectId implements Comparable<AnyObjectId> {
return abbr.prefixCompare(this) == 0;
}
- /** {@inheritDoc} */
@Override
public final int hashCode() {
return w2;
@@ -266,7 +265,6 @@ public abstract class AnyObjectId implements Comparable<AnyObjectId> {
return other != null ? isEqual(this, other) : false;
}
- /** {@inheritDoc} */
@Override
public final boolean equals(Object o) {
if (o instanceof AnyObjectId) {
@@ -477,7 +475,6 @@ public abstract class AnyObjectId implements Comparable<AnyObjectId> {
dst[o--] = '0';
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java
index d2367cc3d5..f9952501c3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java
@@ -716,7 +716,6 @@ public class BatchRefUpdate {
: isForceRefLog();
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder r = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchingProgressMonitor.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchingProgressMonitor.java
index f826057370..8e92f20cb0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchingProgressMonitor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchingProgressMonitor.java
@@ -47,13 +47,11 @@ public abstract class BatchingProgressMonitor implements ProgressMonitor {
delayStartUnit = unit;
}
- /** {@inheritDoc} */
@Override
public void start(int totalTasks) {
// Ignore the number of tasks.
}
- /** {@inheritDoc} */
@Override
public void beginTask(String title, int work) {
endTask();
@@ -62,14 +60,12 @@ public abstract class BatchingProgressMonitor implements ProgressMonitor {
task.delay(delayStartTime, delayStartUnit);
}
- /** {@inheritDoc} */
@Override
public void update(int completed) {
if (task != null)
task.update(this, completed);
}
- /** {@inheritDoc} */
@Override
public void endTask() {
if (task != null) {
@@ -78,7 +74,6 @@ public abstract class BatchingProgressMonitor implements ProgressMonitor {
}
}
- /** {@inheritDoc} */
@Override
public boolean isCancelled() {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchTrackingStatus.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchTrackingStatus.java
index 6c625bb73a..39fc566034 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchTrackingStatus.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchTrackingStatus.java
@@ -33,6 +33,7 @@ public class BranchTrackingStatus {
* the local branch
* @return the tracking status, or null if it is not known
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static BranchTrackingStatus of(Repository repository, String branchName)
throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java
index 1665f051e9..ea33082229 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java
@@ -275,7 +275,6 @@ public class CommitBuilder extends ObjectBuilder {
return build();
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitConfig.java
index 6a9b45b065..f701a41d67 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitConfig.java
@@ -403,7 +403,7 @@ public class CommitConfig {
for (int i = 0; i < len; i++) {
char ch = line.charAt(i);
if (!Character.isWhitespace(ch)) {
- if (ch >= 0 && ch < inUse.length) {
+ if (ch < inUse.length) {
inUse[ch] = true;
}
break;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
index d1d66d280e..7e2c5b5ad0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
@@ -399,6 +399,8 @@ public class Config {
/**
* Parse an enumeration from the configuration.
*
+ * @param <T>
+ * type of the returned enum
* @param section
* section the key is grouped within.
* @param subsection
@@ -431,6 +433,8 @@ public class Config {
/**
* Parse an enumeration from the configuration.
*
+ * @param <T>
+ * type of the returned enum
* @param all
* all possible values in the enumeration which should be
* recognized. Typically {@code EnumType.values()}.
@@ -722,7 +726,7 @@ public class Config {
* responsible for issuing {@link #fireConfigChangedEvent()} calls
* themselves.
*
- * @return <code></code>
+ * @return whether to issue change events for transient changes
*/
protected boolean notifyUponTransientChanges() {
return true;
@@ -735,7 +739,7 @@ public class Config {
listeners.dispatch(new ConfigChangedEvent());
}
- String getRawString(final String section, final String subsection,
+ private String getRawString(final String section, final String subsection,
final String name) {
String[] lst = getRawStringList(section, subsection, name);
if (lst != null) {
@@ -847,6 +851,8 @@ public class Config {
* name = value
* </pre>
*
+ * @param <T>
+ * type of the enum to set
* @param section
* section name, e.g "branch"
* @param subsection
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
index 056861d85a..9852ae3786 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
@@ -60,7 +60,8 @@ public final class ConfigConstants {
public static final String CONFIG_KEY_PROMPT = "prompt";
/**
- * The "trustExitCode" key within "difftool" or "mergetool.<name>." section
+ * The "trustExitCode" key within "difftool" or "mergetool.&lt;name&gt;."
+ * section
*
* @since 6.1
*/
@@ -114,6 +115,7 @@ public final class ConfigConstants {
/**
* The "fetch" section
+ *
* @since 3.3
*/
public static final String CONFIG_FETCH_SECTION = "fetch";
@@ -368,6 +370,12 @@ public final class ConfigConstants {
*/
public static final String CONFIG_KEY_PACKED_GIT_USE_STRONGREFS = "packedgitusestrongrefs";
+ /**
+ * The "packedIndexGitUseStrongRefs" key
+ * @since 6.7
+ */
+ public static final String CONFIG_KEY_PACKED_INDEX_GIT_USE_STRONGREFS = "packedindexgitusestrongrefs";
+
/** The "remote" key */
public static final String CONFIG_KEY_REMOTE = "remote";
@@ -959,4 +967,25 @@ public final class ConfigConstants {
* @since 5.13.2
*/
public static final String CONFIG_KEY_PRUNE_PRESERVED = "prunepreserved";
+
+ /**
+ * The "commitGraph" section
+ *
+ * @since 6.7
+ */
+ public static final String CONFIG_COMMIT_GRAPH_SECTION = "commitGraph";
+
+ /**
+ * The "writeChangedPaths" key
+ *
+ * @since 6.7
+ */
+ public static final String CONFIG_KEY_WRITE_CHANGED_PATHS = "writeChangedPaths";
+
+ /**
+ * The "readChangedPaths" key
+ *
+ * @since 6.7
+ */
+ public static final String CONFIG_KEY_READ_CHANGED_PATHS = "readChangedPaths";
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java
index a9235ebcdf..e9a8b44271 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java
@@ -83,7 +83,6 @@ class ConfigLine {
return a.equals(b);
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java
index 0b8bf8c6c5..60a23dde05 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java
@@ -337,9 +337,9 @@ public final class Constants {
public static final String GIT_CONFIG_NOSYSTEM_KEY = "GIT_CONFIG_NOSYSTEM";
/**
- * The key of the XDG_CONFIG_HOME directory defined in the XDG base
- * directory specification, see
- * {@link "https://wiki.archlinux.org/index.php/XDG_Base_Directory"}
+ * The key of the XDG_CONFIG_HOME directory defined in the
+ * <a href="https://wiki.archlinux.org/index.php/XDG_Base_Directory">
+ * XDG Base Directory specification</a>.
*
* @since 5.5.2
*/
@@ -766,7 +766,7 @@ public final class Constants {
*
* @since 6.5
*/
- public static int COMMIT_GENERATION_UNKNOWN = Integer.MAX_VALUE;
+ public static final int COMMIT_GENERATION_UNKNOWN = Integer.MAX_VALUE;
/**
* If a commit-graph file was written by a version of Git that did not
@@ -775,7 +775,7 @@ public final class Constants {
*
* @since 6.5
*/
- public static int COMMIT_GENERATION_NOT_COMPUTED = 0;
+ public static final int COMMIT_GENERATION_NOT_COMPUTED = 0;
private Constants() {
// Hide the default constructor
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/DefaultTypedConfigGetter.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/DefaultTypedConfigGetter.java
index 86409403b0..a71549c92e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/DefaultTypedConfigGetter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/DefaultTypedConfigGetter.java
@@ -31,11 +31,10 @@ import org.eclipse.jgit.util.StringUtils;
*/
public class DefaultTypedConfigGetter implements TypedConfigGetter {
- /** {@inheritDoc} */
@Override
public boolean getBoolean(Config config, String section, String subsection,
String name, boolean defaultValue) {
- String n = config.getRawString(section, subsection, name);
+ String n = config.getString(section, subsection, name);
if (n == null) {
return defaultValue;
}
@@ -50,7 +49,6 @@ public class DefaultTypedConfigGetter implements TypedConfigGetter {
}
}
- /** {@inheritDoc} */
@Override
public <T extends Enum<?>> T getEnum(Config config, T[] all, String section,
String subsection, String name, T defaultValue) {
@@ -106,7 +104,6 @@ public class DefaultTypedConfigGetter implements TypedConfigGetter {
JGitText.get().enumValueNotSupported2, section, name, value));
}
- /** {@inheritDoc} */
@Override
public int getInt(Config config, String section, String subsection,
String name, int defaultValue) {
@@ -118,7 +115,6 @@ public class DefaultTypedConfigGetter implements TypedConfigGetter {
.format(JGitText.get().integerValueOutOfRange, section, name));
}
- /** {@inheritDoc} */
@Override
public int getIntInRange(Config config, String section, String subsection,
String name, int minValue, int maxValue, int defaultValue) {
@@ -138,7 +134,6 @@ public class DefaultTypedConfigGetter implements TypedConfigGetter {
Integer.valueOf(minValue), Integer.valueOf(maxValue)));
}
- /** {@inheritDoc} */
@Override
public long getLong(Config config, String section, String subsection,
String name, long defaultValue) {
@@ -158,7 +153,6 @@ public class DefaultTypedConfigGetter implements TypedConfigGetter {
}
}
- /** {@inheritDoc} */
@Override
public long getTimeUnit(Config config, String section, String subsection,
String name, long defaultValue, TimeUnit wantUnit) {
@@ -269,7 +263,6 @@ public class DefaultTypedConfigGetter implements TypedConfigGetter {
section, name, valueString));
}
- /** {@inheritDoc} */
@Override
@NonNull
public List<RefSpec> getRefSpecs(Config config, String section,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/EmptyProgressMonitor.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/EmptyProgressMonitor.java
index 94d28eb345..a5410b778c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/EmptyProgressMonitor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/EmptyProgressMonitor.java
@@ -18,31 +18,26 @@ package org.eclipse.jgit.lib;
*/
public abstract class EmptyProgressMonitor implements ProgressMonitor {
- /** {@inheritDoc} */
@Override
public void start(int totalTasks) {
// empty
}
- /** {@inheritDoc} */
@Override
public void beginTask(String title, int totalWork) {
// empty
}
- /** {@inheritDoc} */
@Override
public void update(int completed) {
// empty
}
- /** {@inheritDoc} */
@Override
public void endTask() {
// empty
}
- /** {@inheritDoc} */
@Override
public boolean isCancelled() {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignature.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignature.java
index e78cf16ea4..4018dabebe 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignature.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignature.java
@@ -49,7 +49,6 @@ public class GpgSignature implements Serializable {
return new String(signature, US_ASCII);
}
- /** {@inheritDoc} */
@Override
@SuppressWarnings("nls")
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java
index df9fd47efa..b009ea1af7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java
@@ -265,6 +265,7 @@ public class IndexDiff {
* @param workingTreeIterator
* iterator for working directory
* @throws java.io.IOException
+ * if an IO error occurred
*/
public IndexDiff(Repository repository, String revstr,
WorkingTreeIterator workingTreeIterator) throws IOException {
@@ -281,6 +282,7 @@ public class IndexDiff {
* @param workingTreeIterator
* iterator for working directory
* @throws java.io.IOException
+ * if an IO error occurred
*/
public IndexDiff(Repository repository, ObjectId objectId,
WorkingTreeIterator workingTreeIterator) throws IOException {
@@ -325,6 +327,7 @@ public class IndexDiff {
* Allows higher layers to set the factory for WorkingTreeIterators.
*
* @param wTreeIt
+ * working tree iterator factory
* @since 3.6
*/
public void setWorkingTreeItFactory(WorkingTreeIteratorFactory wTreeIt) {
@@ -349,6 +352,7 @@ public class IndexDiff {
*
* @return if anything is different between index, tree, and workdir
* @throws java.io.IOException
+ * if an IO error occurred
*/
public boolean diff() throws IOException {
return diff(null);
@@ -372,6 +376,7 @@ public class IndexDiff {
* {@link RepositoryBuilder}.
* @return if anything is different between index, tree, and workdir
* @throws java.io.IOException
+ * if an IO error occurred
* @since 5.6
*/
public boolean diff(RepositoryBuilderFactory factory)
@@ -395,9 +400,11 @@ public class IndexDiff {
* number or estimated files in the working tree
* @param estIndexSize
* number of estimated entries in the cache
- * @param title a {@link java.lang.String} object.
+ * @param title
+ * a {@link java.lang.String} object.
* @return if anything is different between index, tree, and workdir
* @throws java.io.IOException
+ * if an IO error occurred
*/
public boolean diff(final ProgressMonitor monitor, int estWorkTreeSize,
int estIndexSize, final String title)
@@ -436,6 +443,7 @@ public class IndexDiff {
* {@link RepositoryBuilder}.
* @return if anything is different between index, tree, and workdir
* @throws java.io.IOException
+ * if an IO error occurred
* @since 5.6
*/
public boolean diff(ProgressMonitor monitor, int estWorkTreeSize,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/MutableObjectId.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/MutableObjectId.java
index 4a712ba360..6a35dedcf5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/MutableObjectId.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/MutableObjectId.java
@@ -242,7 +242,6 @@ public class MutableObjectId extends AnyObjectId {
}
}
- /** {@inheritDoc} */
@Override
public ObjectId toObjectId() {
return new ObjectId(this);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/NullProgressMonitor.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/NullProgressMonitor.java
index 127cca9d1b..0a4db2a5f6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/NullProgressMonitor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/NullProgressMonitor.java
@@ -23,31 +23,26 @@ public class NullProgressMonitor implements ProgressMonitor {
// Do not let others instantiate
}
- /** {@inheritDoc} */
@Override
public void start(int totalTasks) {
// Do not report.
}
- /** {@inheritDoc} */
@Override
public void beginTask(String title, int totalWork) {
// Do not report.
}
- /** {@inheritDoc} */
@Override
public void update(int completed) {
// Do not report.
}
- /** {@inheritDoc} */
@Override
public boolean isCancelled() {
return false;
}
- /** {@inheritDoc} */
@Override
public void endTask() {
// Do not report.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectBuilder.java
index 4b7054f72b..064d89e084 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectBuilder.java
@@ -72,7 +72,6 @@ public abstract class ObjectBuilder {
* <li>create {@link GpgSignature} from payload</li>
* <li>set {@link GpgSignature}</li>
* </ol>
- * </p>
*
* @param gpgSignature
* the signature to set or {@code null} to unset
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectChecker.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectChecker.java
index 9e9ef882a3..a1d6d92ec2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectChecker.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectChecker.java
@@ -1065,6 +1065,7 @@ public class ObjectChecker {
*
* @return true if the filename in buf could be a ".gitmodules" file
* @throws CorruptObjectException
+ * if an object is corrupt
*/
private boolean isGitmodules(byte[] buf, int start, int end, @Nullable AnyObjectId id)
throws CorruptObjectException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java
index 269049f4a2..1c31263e33 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java
@@ -262,7 +262,6 @@ public class ObjectId extends AnyObjectId implements Serializable {
w5 = src.w5;
}
- /** {@inheritDoc} */
@Override
public ObjectId toObjectId() {
return this;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdOwnerMap.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdOwnerMap.java
index 29039097f1..a74fddff42 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdOwnerMap.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdOwnerMap.java
@@ -128,8 +128,11 @@ public class ObjectIdOwnerMap<V extends ObjectIdOwnerMap.Entry>
* <p>
* An existing mapping for <b>must not</b> be in this map. Callers must
* first call {@link #get(AnyObjectId)} to verify there is no current
- * mapping prior to adding a new mapping, or use {@link #addIfAbsent(Entry)}.
+ * mapping prior to adding a new mapping, or use
+ * {@link #addIfAbsent(Entry)}.
*
+ * @param <Q>
+ * type of values
* @param newValue
* the object to store.
*/
@@ -157,6 +160,8 @@ public class ObjectIdOwnerMap<V extends ObjectIdOwnerMap.Entry>
* boolean wasNew = map.addIfAbsent(obj) == obj;
* </pre>
*
+ * @param <Q>
+ * type of values
* @param newValue
* the object to store.
* @return {@code newValue} if stored, or the prior value already stored and
@@ -199,7 +204,6 @@ public class ObjectIdOwnerMap<V extends ObjectIdOwnerMap.Entry>
return size == 0;
}
- /** {@inheritDoc} */
@Override
public Iterator<V> iterator() {
return new Iterator<>() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdRef.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdRef.java
index a04ca6890c..c3c58372b1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdRef.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdRef.java
@@ -204,41 +204,35 @@ public abstract class ObjectIdRef implements Ref {
this.updateIndex = updateIndex;
}
- /** {@inheritDoc} */
@Override
@NonNull
public String getName() {
return name;
}
- /** {@inheritDoc} */
@Override
public boolean isSymbolic() {
return false;
}
- /** {@inheritDoc} */
@Override
@NonNull
public Ref getLeaf() {
return this;
}
- /** {@inheritDoc} */
@Override
@NonNull
public Ref getTarget() {
return this;
}
- /** {@inheritDoc} */
@Override
@Nullable
public ObjectId getObjectId() {
return objectId;
}
- /** {@inheritDoc} */
@Override
@NonNull
public Storage getStorage() {
@@ -257,7 +251,6 @@ public abstract class ObjectIdRef implements Ref {
return updateIndex;
}
- /** {@inheritDoc} */
@NonNull
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdSubclassMap.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdSubclassMap.java
index 0e015b658b..d4acfd4714 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdSubclassMap.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectIdSubclassMap.java
@@ -96,6 +96,8 @@ public class ObjectIdSubclassMap<V extends ObjectId>
* mapping prior to adding a new mapping, or use
* {@link #addIfAbsent(ObjectId)}.
*
+ * @param <Q>
+ * type of values
* @param newValue
* the object to store.
*/
@@ -117,6 +119,8 @@ public class ObjectIdSubclassMap<V extends ObjectId>
* boolean wasNew = map.addIfAbsent(obj) == obj;
* </pre>
*
+ * @param <Q>
+ * type of values
* @param newValue
* the object to store.
* @return {@code newValue} if stored, or the prior value already stored and
@@ -162,7 +166,6 @@ public class ObjectIdSubclassMap<V extends ObjectId>
return size == 0;
}
- /** {@inheritDoc} */
@Override
public Iterator<V> iterator() {
return new Iterator<>() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
index 69b2b5104e..3e2998530f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
@@ -245,12 +245,15 @@ public abstract class ObjectReader implements AutoCloseable {
*
* @return IDs of shallow commits
* @throws java.io.IOException
+ * if an error occurred
*/
public abstract Set<ObjectId> getShallowCommits() throws IOException;
/**
* Asynchronous object opening.
*
+ * @param <T>
+ * type of {@code ObjectId}
* @param objectIds
* objects to open from the object store. The supplied collection
* must not be modified until the queue has finished.
@@ -370,6 +373,8 @@ public abstract class ObjectReader implements AutoCloseable {
/**
* Asynchronous object size lookup.
*
+ * @param <T>
+ * type of {@code ObjectId}
* @param objectIds
* objects to get the size of from the object store. The supplied
* collection must not be modified until the queue has finished.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java
index 93710299b4..3ba055aae8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java
@@ -392,7 +392,6 @@ public class PersonIdent implements Serializable {
return hc;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
if (o instanceof PersonIdent) {
@@ -421,7 +420,6 @@ public class PersonIdent implements Serializable {
return r.toString();
}
- /** {@inheritDoc} */
@Override
@SuppressWarnings("nls")
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java
index a4cd1d6894..c716f464d3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java
@@ -55,6 +55,7 @@ public class RebaseTodoFile {
* <code>true</code> if also comments should be reported
* @return the list of steps
* @throws java.io.IOException
+ * if an IO error occurred
*/
public List<RebaseTodoLine> readRebaseTodo(String path,
boolean includeComments) throws IOException {
@@ -126,8 +127,11 @@ public class RebaseTodoFile {
* Skip leading space, tab, CR and LF characters
*
* @param buf
+ * byte buffer
* @param tokenBegin
+ * index of token begin
* @param lineEnd
+ * index of line end
* @return the token within the range of the given {@code buf} that doesn't
* need to be skipped, {@code -1} if no such token found within the
* range (i.e. empty line)
@@ -193,6 +197,7 @@ public class RebaseTodoFile {
* @param append
* whether to append to an existing file or to write a new file
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void writeRebaseTodoFile(String path, List<RebaseTodoLine> steps,
boolean append) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoLine.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoLine.java
index 8b778497fc..878cfc8f9d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoLine.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoLine.java
@@ -70,6 +70,7 @@ public class RebaseTodoLine {
/**
* @param token
+ * token to parse
* @return the Action
*/
public static Action parse(String token) {
@@ -245,7 +246,6 @@ public class RebaseTodoLine {
return comment;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefComparator.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefComparator.java
index 3ab649341f..c4c0001d3e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefComparator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefComparator.java
@@ -27,7 +27,6 @@ public class RefComparator implements Comparator<Ref> {
/** Singleton instance of RefComparator */
public static final RefComparator INSTANCE = new RefComparator();
- /** {@inheritDoc} */
@Override
public int compare(Ref o1, Ref o2) {
return compareTo(o1, o2);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java
index 98089fb8fd..82dcc6b64c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java
@@ -136,6 +136,7 @@ public abstract class RefDatabase {
* with the passed ref name; empty collection when there are no
* conflicts
* @throws java.io.IOException
+ * if an error occurred
* @since 2.3
* @see #isNameConflicting(String)
*/
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefRename.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefRename.java
index cdd4e4ba75..e8821d0cbb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefRename.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefRename.java
@@ -122,6 +122,7 @@ public abstract class RefRename {
*
* @return the result of the new ref update
* @throws java.io.IOException
+ * if an IO error occurred
*/
public Result rename() throws IOException {
try {
@@ -138,6 +139,7 @@ public abstract class RefRename {
*
* @return the result of the rename operation.
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected abstract Result doRename() throws IOException;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java
index d1be63b966..d113243bea 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java
@@ -115,7 +115,6 @@ public abstract class RefUpdate {
/**
* The ref was renamed from another name
- * <p>
*/
RENAMED,
@@ -245,6 +244,7 @@ public abstract class RefUpdate {
* a {@link org.eclipse.jgit.lib.RefUpdate.Result} object.
* @return {@code result}
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected abstract Result doUpdate(Result desiredResult) throws IOException;
@@ -255,6 +255,7 @@ public abstract class RefUpdate {
* a {@link org.eclipse.jgit.lib.RefUpdate.Result} object.
* @return {@code result}
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected abstract Result doDelete(Result desiredResult) throws IOException;
@@ -265,6 +266,7 @@ public abstract class RefUpdate {
* a {@link java.lang.String} object.
* @return {@link org.eclipse.jgit.lib.RefUpdate.Result#NEW} on success.
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected abstract Result doLink(String target) throws IOException;
@@ -612,6 +614,7 @@ public abstract class RefUpdate {
*
* @return the result status of the delete.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public Result delete() throws IOException {
try (RevWalk rw = new RevWalk(getRepository())) {
@@ -628,6 +631,7 @@ public abstract class RefUpdate {
* the merge test. The walk will be reset to perform the test.
* @return the result status of the delete.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public Result delete(RevWalk walk) throws IOException {
final String myName = detachingSymbolicRef
@@ -668,6 +672,7 @@ public abstract class RefUpdate {
* @return {@link org.eclipse.jgit.lib.RefUpdate.Result#NEW} or
* {@link org.eclipse.jgit.lib.RefUpdate.Result#FORCED} on success.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public Result link(String target) throws IOException {
if (!target.startsWith(Constants.R_REFS))
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefWriter.java
index d2c3f9de68..41917f8b57 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefWriter.java
@@ -177,6 +177,7 @@ public abstract class RefWriter {
* @param content
* byte content of file to be written.
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected abstract void writeFile(String file, byte[] content)
throws IOException;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogReader.java
index 1e6a661572..5233bfc109 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogReader.java
@@ -25,6 +25,7 @@ public interface ReflogReader {
*
* @return the latest reflog entry, or null if no log
* @throws java.io.IOException
+ * if an IO error occurred
*/
ReflogEntry getLastEntry() throws IOException;
@@ -33,6 +34,7 @@ public interface ReflogReader {
*
* @return all reflog entries in reverse order
* @throws java.io.IOException
+ * if an IO error occurred
*/
List<ReflogEntry> getReverseEntries() throws IOException;
@@ -40,9 +42,11 @@ public interface ReflogReader {
* Get specific entry in the reflog relative to the last entry which is
* considered entry zero.
*
- * @param number a int.
+ * @param number
+ * a int.
* @return reflog entry or null if not found
* @throws java.io.IOException
+ * if an IO error occurred
*/
ReflogEntry getReverseEntry(int number) throws IOException;
@@ -53,6 +57,7 @@ public interface ReflogReader {
* max number of entries to read
* @return all reflog entries in reverse order
* @throws java.io.IOException
+ * if an IO error occurred
*/
List<ReflogEntry> getReverseEntries(int max) throws IOException;
}
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 db2571c673..d446a1c9c7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
@@ -175,6 +175,7 @@ public abstract class Repository implements AutoCloseable {
* the same as {@code create(false)}.
*
* @throws java.io.IOException
+ * if an IO error occurred
* @see #create(boolean)
*/
public void create() throws IOException {
@@ -484,11 +485,14 @@ public abstract class Repository implements AutoCloseable {
* Thus this method can be used to process an expression to a method that
* expects a branch or revision id.
*
- * @param revstr a {@link java.lang.String} object.
+ * @param revstr
+ * a {@link java.lang.String} object.
* @return object id or ref name from resolved expression or {@code null} if
* given expression cannot be resolved
* @throws org.eclipse.jgit.errors.AmbiguousObjectException
+ * if a shortened ObjectId was ambiguous
* @throws java.io.IOException
+ * if an IO error occurred
*/
@Nullable
public String simplify(String revstr)
@@ -968,7 +972,6 @@ public abstract class Repository implements AutoCloseable {
getRefDatabase().close();
}
- /** {@inheritDoc} */
@Override
@NonNull
public String toString() {
@@ -999,6 +1002,7 @@ public abstract class Repository implements AutoCloseable {
* {@code null} if the repository is corrupt and has no HEAD
* reference.
* @throws java.io.IOException
+ * if an IO error occurred
*/
@Nullable
public String getFullBranch() throws IOException {
@@ -1027,6 +1031,7 @@ public abstract class Repository implements AutoCloseable {
* in hex format if the current branch is detached, or {@code null}
* if the repository is corrupt and has no HEAD reference.
* @throws java.io.IOException
+ * if an IO error occurred
*/
@Nullable
public String getBranch() throws IOException {
@@ -1056,6 +1061,7 @@ public abstract class Repository implements AutoCloseable {
*
* @return unmodifiable collection of other known objects.
* @throws IOException
+ * if an IO error occurred
*/
@NonNull
public Set<ObjectId> getAdditionalHaves() throws IOException {
@@ -1066,11 +1072,12 @@ public abstract class Repository implements AutoCloseable {
* Get a ref by name.
*
* @param name
- * the name of the ref to lookup. Must not be a short-hand
- * form; e.g., "master" is not automatically expanded to
+ * the name of the ref to lookup. Must not be a short-hand form;
+ * e.g., "master" is not automatically expanded to
* "refs/heads/master".
* @return the Ref with the given name, or {@code null} if it does not exist
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
*/
@Nullable
@@ -1087,6 +1094,7 @@ public abstract class Repository implements AutoCloseable {
* "refs/heads/master" if "refs/heads/master" already exists.
* @return the Ref with the given name, or {@code null} if it does not exist
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
*/
@Nullable
@@ -1162,6 +1170,7 @@ public abstract class Repository implements AutoCloseable {
*
* @return a map with all objects referenced by a peeled ref.
* @throws IOException
+ * if an IO error occurred
*/
@NonNull
public Map<AnyObjectId, Set<Ref>> getAllRefsByPeeledObjectId()
@@ -1579,6 +1588,7 @@ public abstract class Repository implements AutoCloseable {
* changes are detected.
*
* @throws java.io.IOException
+ * if an IO error occurred
*/
public abstract void scanForRepoChanges() throws IOException;
@@ -1703,6 +1713,7 @@ public abstract class Repository implements AutoCloseable {
* @return a {@link org.eclipse.jgit.lib.ReflogReader} for the supplied ref,
* or {@code null} if the ref does not exist.
* @throws IOException
+ * if an IO error occurred
* @since 5.13.2
*/
public @Nullable ReflogReader getReflogReader(@NonNull Ref ref)
@@ -1718,6 +1729,7 @@ public abstract class Repository implements AutoCloseable {
* @return a String containing the content of the MERGE_MSG file or
* {@code null} if this file doesn't exist
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.errors.NoWorkTreeException
* if this is bare, which implies it has no working directory.
* See {@link #isBare()}.
@@ -1737,6 +1749,7 @@ public abstract class Repository implements AutoCloseable {
* the message which should be written or <code>null</code> to
* delete the file
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void writeMergeCommitMsg(String msg) throws IOException {
File mergeMsgFile = new File(gitDir, Constants.MERGE_MSG);
@@ -1751,6 +1764,7 @@ public abstract class Repository implements AutoCloseable {
* @return a String containing the content of the COMMIT_EDITMSG file or
* {@code null} if this file doesn't exist
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.errors.NoWorkTreeException
* if this is bare, which implies it has no working directory.
* See {@link #isBare()}.
@@ -1770,6 +1784,7 @@ public abstract class Repository implements AutoCloseable {
* the message which should be written or {@code null} to delete
* the file
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.0
*/
public void writeCommitEditMsg(String msg) throws IOException {
@@ -1786,6 +1801,7 @@ public abstract class Repository implements AutoCloseable {
* {@code null} if this file doesn't exist. Also if the file exists
* but is empty {@code null} will be returned
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.errors.NoWorkTreeException
* if this is bare, which implies it has no working directory.
* See {@link #isBare()}.
@@ -1818,6 +1834,7 @@ public abstract class Repository implements AutoCloseable {
* a list of commits which IDs should be written to
* $GIT_DIR/MERGE_HEAD or <code>null</code> to delete the file
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void writeMergeHeads(List<? extends ObjectId> heads) throws IOException {
writeHeadsFile(heads, Constants.MERGE_HEAD);
@@ -1830,6 +1847,7 @@ public abstract class Repository implements AutoCloseable {
* doesn't exist. Also if the file exists but is empty {@code null}
* will be returned
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.errors.NoWorkTreeException
* if this is bare, which implies it has no working directory.
* See {@link #isBare()}.
@@ -1854,6 +1872,7 @@ public abstract class Repository implements AutoCloseable {
* doesn't exist. Also if the file exists but is empty {@code null}
* will be returned
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.errors.NoWorkTreeException
* if this is bare, which implies it has no working directory.
* See {@link #isBare()}.
@@ -1877,6 +1896,7 @@ public abstract class Repository implements AutoCloseable {
* an object id of the cherry commit or <code>null</code> to
* delete the file
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void writeCherryPickHead(ObjectId head) throws IOException {
List<ObjectId> heads = (head != null) ? Collections.singletonList(head)
@@ -1892,6 +1912,7 @@ public abstract class Repository implements AutoCloseable {
* an object id of the revert commit or <code>null</code> to
* delete the file
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void writeRevertHead(ObjectId head) throws IOException {
List<ObjectId> heads = (head != null) ? Collections.singletonList(head)
@@ -1906,6 +1927,7 @@ public abstract class Repository implements AutoCloseable {
* an object id of the original HEAD commit or <code>null</code>
* to delete the file
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void writeOrigHead(ObjectId head) throws IOException {
List<ObjectId> heads = head != null ? Collections.singletonList(head)
@@ -1920,6 +1942,7 @@ public abstract class Repository implements AutoCloseable {
* doesn't exist. Also if the file exists but is empty {@code null}
* will be returned
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.errors.NoWorkTreeException
* if this is bare, which implies it has no working directory.
* See {@link #isBare()}.
@@ -1941,6 +1964,7 @@ public abstract class Repository implements AutoCloseable {
* @return a String containing the content of the SQUASH_MSG file or
* {@code null} if this file doesn't exist
* @throws java.io.IOException
+ * if an IO error occurred
* @throws NoWorkTreeException
* if this is bare, which implies it has no working directory.
* See {@link #isBare()}.
@@ -1960,6 +1984,7 @@ public abstract class Repository implements AutoCloseable {
* the message which should be written or <code>null</code> to
* delete the file
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void writeSquashCommitMsg(String msg) throws IOException {
File squashMsgFile = new File(gitDir, Constants.SQUASH_MSG);
@@ -1997,9 +2022,11 @@ public abstract class Repository implements AutoCloseable {
* Read a file from the git directory.
*
* @param filename
+ * the file to read
* @return the raw contents or {@code null} if the file doesn't exist or is
* empty
* @throws IOException
+ * if an IO error occurred
*/
private byte[] readGitDirectoryFile(String filename) throws IOException {
File file = new File(getDirectory(), filename);
@@ -2021,8 +2048,11 @@ public abstract class Repository implements AutoCloseable {
* a list of object ids to write or null if the file should be
* deleted.
* @param filename
+ * name of the file to write heads to
* @throws FileNotFoundException
+ * if the heads file couldn't be found
* @throws IOException
+ * if an IO error occurred
*/
private void writeHeadsFile(List<? extends ObjectId> heads, String filename)
throws FileNotFoundException, IOException {
@@ -2052,6 +2082,7 @@ public abstract class Repository implements AutoCloseable {
* <code>true</code> if also comments should be reported
* @return the list of steps
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.2
*/
@NonNull
@@ -2072,6 +2103,7 @@ public abstract class Repository implements AutoCloseable {
* @param append
* whether to append to an existing file or to write a new file
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.2
*/
public void writeRebaseTodoFile(String path, List<RebaseTodoLine> steps,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/StoredConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/StoredConfig.java
index 9ddfd59a18..a10eb0c583 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/StoredConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/StoredConfig.java
@@ -57,7 +57,6 @@ public abstract class StoredConfig extends Config {
*/
public abstract void save() throws IOException;
- /** {@inheritDoc} */
@Override
public void clear() {
super.clear();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/SymbolicRef.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/SymbolicRef.java
index 3ba33422c6..6fb8f326cc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/SymbolicRef.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/SymbolicRef.java
@@ -59,20 +59,17 @@ public class SymbolicRef implements Ref {
this.updateIndex = updateIndex;
}
- /** {@inheritDoc} */
@Override
@NonNull
public String getName() {
return name;
}
- /** {@inheritDoc} */
@Override
public boolean isSymbolic() {
return true;
}
- /** {@inheritDoc} */
@Override
@NonNull
public Ref getLeaf() {
@@ -82,35 +79,30 @@ public class SymbolicRef implements Ref {
return dst;
}
- /** {@inheritDoc} */
@Override
@NonNull
public Ref getTarget() {
return target;
}
- /** {@inheritDoc} */
@Override
@Nullable
public ObjectId getObjectId() {
return getLeaf().getObjectId();
}
- /** {@inheritDoc} */
@Override
@NonNull
public Storage getStorage() {
return Storage.LOOSE;
}
- /** {@inheritDoc} */
@Override
@Nullable
public ObjectId getPeeledObjectId() {
return getLeaf().getPeeledObjectId();
}
- /** {@inheritDoc} */
@Override
public boolean isPeeled() {
return getLeaf().isPeeled();
@@ -128,7 +120,6 @@ public class SymbolicRef implements Ref {
return updateIndex;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TagBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TagBuilder.java
index facb4a54be..bbc614448f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TagBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TagBuilder.java
@@ -223,7 +223,6 @@ public class TagBuilder extends ObjectBuilder {
}
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TextProgressMonitor.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TextProgressMonitor.java
index 85aa0b6639..98ea2f97a3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TextProgressMonitor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TextProgressMonitor.java
@@ -45,7 +45,6 @@ public class TextProgressMonitor extends BatchingProgressMonitor {
this.write = true;
}
- /** {@inheritDoc} */
@Override
protected void onUpdate(String taskName, int workCurr, Duration duration) {
StringBuilder s = new StringBuilder();
@@ -53,7 +52,6 @@ public class TextProgressMonitor extends BatchingProgressMonitor {
send(s);
}
- /** {@inheritDoc} */
@Override
protected void onEndTask(String taskName, int workCurr, Duration duration) {
StringBuilder s = new StringBuilder();
@@ -73,7 +71,6 @@ public class TextProgressMonitor extends BatchingProgressMonitor {
appendDuration(s, duration);
}
- /** {@inheritDoc} */
@Override
protected void onUpdate(String taskName, int cmp, int totalWork, int pcnt,
Duration duration) {
@@ -82,7 +79,6 @@ public class TextProgressMonitor extends BatchingProgressMonitor {
send(s);
}
- /** {@inheritDoc} */
@Override
protected void onEndTask(String taskName, int cmp, int totalWork, int pcnt,
Duration duration) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ThreadSafeProgressMonitor.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ThreadSafeProgressMonitor.java
index e553955560..05eacdcd63 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ThreadSafeProgressMonitor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ThreadSafeProgressMonitor.java
@@ -55,7 +55,6 @@ public class ThreadSafeProgressMonitor implements ProgressMonitor {
this.process = new Semaphore(0);
}
- /** {@inheritDoc} */
@Override
public void start(int totalTasks) {
if (!isMainThread())
@@ -63,7 +62,6 @@ public class ThreadSafeProgressMonitor implements ProgressMonitor {
pm.start(totalTasks);
}
- /** {@inheritDoc} */
@Override
public void beginTask(String title, int totalWork) {
if (!isMainThread())
@@ -132,14 +130,12 @@ public class ThreadSafeProgressMonitor implements ProgressMonitor {
pm.update(cnt);
}
- /** {@inheritDoc} */
@Override
public void update(int completed) {
if (0 == pendingUpdates.getAndAdd(completed))
process.release();
}
- /** {@inheritDoc} */
@Override
public boolean isCancelled() {
lock.lock();
@@ -150,7 +146,6 @@ public class ThreadSafeProgressMonitor implements ProgressMonitor {
}
}
- /** {@inheritDoc} */
@Override
public void endTask() {
if (!isMainThread())
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java
index e1f8684830..c3c170a2c9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java
@@ -332,7 +332,6 @@ public class TreeFormatter {
}
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TypedConfigGetter.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TypedConfigGetter.java
index c4eb8f10d5..0c03adcab8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TypedConfigGetter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TypedConfigGetter.java
@@ -57,6 +57,8 @@ public interface TypedConfigGetter {
/**
* Parse an enumeration from a git {@link Config}.
*
+ * @param <T>
+ * type of the enum
* @param config
* to get the value from
* @param all
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/EolAwareOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/EolAwareOutputStream.java
index e44970abff..1ddac18e56 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/EolAwareOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/EolAwareOutputStream.java
@@ -79,14 +79,12 @@ class EolAwareOutputStream extends OutputStream {
return bol;
}
- /** {@inheritDoc} */
@Override
public void write(int val) throws IOException {
out.write(val);
bol = (val == '\n');
}
- /** {@inheritDoc} */
@Override
public void write(byte[] buf, int pos, int cnt) throws IOException {
if (cnt > 0) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeAlgorithm.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeAlgorithm.java
index 80607351ae..b902492366 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeAlgorithm.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeAlgorithm.java
@@ -90,10 +90,16 @@ public final class MergeAlgorithm {
/**
* Does the three way merge between a common base and two sequences.
*
- * @param cmp comparison method for this execution.
- * @param base the common base sequence
- * @param ours the first sequence to be merged
- * @param theirs the second sequence to be merged
+ * @param <S>
+ * type of the sequences
+ * @param cmp
+ * comparison method for this execution.
+ * @param base
+ * the common base sequence
+ * @param ours
+ * the first sequence to be merged
+ * @param theirs
+ * the second sequence to be merged
* @return the resulting content
*/
public <S extends Sequence> MergeResult<S> merge(
@@ -121,6 +127,8 @@ public final class MergeAlgorithm {
// Let their complete content conflict with empty text
result.add(1, 0, 0,
ConflictState.FIRST_CONFLICTING_RANGE);
+ result.add(0, 0, base.size(),
+ ConflictState.BASE_CONFLICTING_RANGE);
result.add(2, 0, theirs.size(),
ConflictState.NEXT_CONFLICTING_RANGE);
break;
@@ -149,6 +157,8 @@ public final class MergeAlgorithm {
// Let our complete content conflict with empty text
result.add(1, 0, ours.size(),
ConflictState.FIRST_CONFLICTING_RANGE);
+ result.add(0, 0, base.size(),
+ ConflictState.BASE_CONFLICTING_RANGE);
result.add(2, 0, 0, ConflictState.NEXT_CONFLICTING_RANGE);
break;
}
@@ -318,6 +328,14 @@ public final class MergeAlgorithm {
result.add(1, oursBeginB + commonPrefix,
oursEndB - commonSuffix,
ConflictState.FIRST_CONFLICTING_RANGE);
+
+ int baseBegin = Math.min(oursBeginB, theirsBeginB)
+ + commonPrefix;
+ int baseEnd = Math.min(base.size(),
+ Math.max(oursEndB, theirsEndB)) - commonSuffix;
+ result.add(0, baseBegin, baseEnd,
+ ConflictState.BASE_CONFLICTING_RANGE);
+
result.add(2, theirsBeginB + commonPrefix,
theirsEndB - commonSuffix,
ConflictState.NEXT_CONFLICTING_RANGE);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeChunk.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeChunk.java
index ca998e30bc..7102aa6998 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeChunk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeChunk.java
@@ -29,14 +29,22 @@ public class MergeChunk {
NO_CONFLICT,
/**
- * This chunk does belong to a conflict and is the first one of the
+ * This chunk does belong to a conflict and is the ours section of the
* conflicting chunks
*/
FIRST_CONFLICTING_RANGE,
/**
- * This chunk does belong to a conflict but is not the first one of the
- * conflicting chunks. It's a subsequent one.
+ * This chunk does belong to a conflict and is the base section of the
+ * conflicting chunks
+ *
+ * @since 6.7
+ */
+ BASE_CONFLICTING_RANGE,
+
+ /**
+ * This chunk does belong to a conflict and is the theirs section of
+ * the conflicting chunks. It's a subsequent one.
*/
NEXT_CONFLICTING_RANGE
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java
index 18b0ad92c8..a35b30eb01 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java
@@ -43,6 +43,7 @@ public class MergeFormatter {
* the name of the character set used when writing conflict
* metadata
* @throws java.io.IOException
+ * if an IO error occurred
* @deprecated Use
* {@link #formatMerge(OutputStream, MergeResult, List, Charset)}
* instead.
@@ -73,6 +74,7 @@ public class MergeFormatter {
* @param charset
* the character set used when writing conflict metadata
* @throws java.io.IOException
+ * if an IO error occurred
* @since 5.2
*/
public void formatMerge(OutputStream out, MergeResult<RawText> res,
@@ -81,6 +83,35 @@ public class MergeFormatter {
}
/**
+ * Formats the results of a merge of {@link org.eclipse.jgit.diff.RawText}
+ * objects in a Git conformant way using diff3 style. This method also
+ * assumes that the {@link org.eclipse.jgit.diff.RawText} objects being
+ * merged are line oriented files which use LF as delimiter. This method
+ * will also use LF to separate chunks and conflict metadata, therefore it
+ * fits only to texts that are LF-separated lines.
+ *
+ * @param out
+ * the output stream where to write the textual presentation
+ * @param res
+ * the merge result which should be presented
+ * @param seqName
+ * When a conflict is reported each conflicting range will get a
+ * name. This name is following the "&lt;&lt;&lt;&lt;&lt;&lt;&lt;
+ * ", "|||||||" or "&gt;&gt;&gt;&gt;&gt;&gt;&gt; " conflict
+ * markers. The names for the sequences are given in this list
+ * @param charset
+ * the character set used when writing conflict metadata
+ * @throws java.io.IOException
+ * if an IO error occurred
+ * @since 6.7
+ */
+ public void formatMergeDiff3(OutputStream out,
+ MergeResult<RawText> res, List<String> seqName, Charset charset)
+ throws IOException {
+ new MergeFormatterPass(out, res, seqName, charset, true).formatMerge();
+ }
+
+ /**
* Formats the results of a merge of exactly two
* {@link org.eclipse.jgit.diff.RawText} objects in a Git conformant way.
* This convenience method accepts the names for the three sequences (base
@@ -102,6 +133,7 @@ public class MergeFormatter {
* the name of the character set used when writing conflict
* metadata
* @throws java.io.IOException
+ * if an IO error occurred
* @deprecated use
* {@link #formatMerge(OutputStream, MergeResult, String, String, String, Charset)}
* instead.
@@ -134,6 +166,7 @@ public class MergeFormatter {
* @param charset
* the character set used when writing conflict metadata
* @throws java.io.IOException
+ * if an IO error occurred
* @since 5.2
*/
@SuppressWarnings("unchecked")
@@ -146,4 +179,39 @@ public class MergeFormatter {
names.add(theirsName);
formatMerge(out, res, names, charset);
}
+
+ /**
+ * Formats the results of a merge of three
+ * {@link org.eclipse.jgit.diff.RawText} objects in a Git conformant way,
+ * using diff-3 style. This convenience method accepts the names for the
+ * three sequences (base and the two merged sequences) as explicit
+ * parameters and doesn't require the caller to specify a List
+ *
+ * @param out
+ * the {@link java.io.OutputStream} where to write the textual
+ * presentation
+ * @param res
+ * the merge result which should be presented
+ * @param baseName
+ * the name ranges from the base should get
+ * @param oursName
+ * the name ranges from ours should get
+ * @param theirsName
+ * the name ranges from theirs should get
+ * @param charset
+ * the character set used when writing conflict metadata
+ * @throws java.io.IOException
+ * if an IO error occurred
+ * @since 6.7
+ */
+ @SuppressWarnings("unchecked")
+ public void formatMergeDiff3(OutputStream out,
+ MergeResult res, String baseName, String oursName,
+ String theirsName, Charset charset) throws IOException {
+ List<String> names = new ArrayList<>(3);
+ names.add(baseName);
+ names.add(oursName);
+ names.add(theirsName);
+ formatMergeDiff3(out, res, names, charset);
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatterPass.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatterPass.java
index f09b343007..5e80b5fb23 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatterPass.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatterPass.java
@@ -31,6 +31,8 @@ class MergeFormatterPass {
private final boolean threeWayMerge;
+ private final boolean writeBase; // diff3-style requested
+
private String lastConflictingName; // is set to non-null whenever we are in
// a conflict
@@ -50,22 +52,47 @@ class MergeFormatterPass {
*/
MergeFormatterPass(OutputStream out, MergeResult<RawText> res,
List<String> seqName, Charset charset) {
+ this(out, res, seqName, charset, false);
+ }
+
+ /**
+ * @param out
+ * the {@link java.io.OutputStream} where to write the textual
+ * presentation
+ * @param res
+ * the merge result which should be presented
+ * @param seqName
+ * When a conflict is reported each conflicting range will get a
+ * name. This name is following the "&lt;&lt;&lt;&lt;&lt;&lt;&lt;
+ * ", "|||||||" or "&gt;&gt;&gt;&gt;&gt;&gt;&gt; " conflict
+ * markers. The names for the sequences are given in this list
+ * @param charset
+ * the character set used when writing conflict metadata
+ * @param writeBase
+ * base's contribution should be written in conflicts
+ */
+ MergeFormatterPass(OutputStream out, MergeResult<RawText> res,
+ List<String> seqName, Charset charset, boolean writeBase) {
this.out = new EolAwareOutputStream(out);
this.res = res;
this.seqName = seqName;
this.charset = charset;
this.threeWayMerge = (res.getSequences().size() == 3);
+ this.writeBase = writeBase;
}
void formatMerge() throws IOException {
boolean missingNewlineAtEnd = false;
for (MergeChunk chunk : res) {
- RawText seq = res.getSequences().get(chunk.getSequenceIndex());
- writeConflictMetadata(chunk);
- // the lines with conflict-metadata are written. Now write the chunk
- for (int i = chunk.getBegin(); i < chunk.getEnd(); i++)
- writeLine(seq, i);
- missingNewlineAtEnd = seq.isMissingNewlineAtEnd();
+ if (!isBase(chunk) || writeBase) {
+ RawText seq = res.getSequences().get(chunk.getSequenceIndex());
+ writeConflictMetadata(chunk);
+ // the lines with conflict-metadata are written. Now write the
+ // chunk
+ for (int i = chunk.getBegin(); i < chunk.getEnd(); i++)
+ writeLine(seq, i);
+ missingNewlineAtEnd = seq.isMissingNewlineAtEnd();
+ }
}
// one possible leftover: if the merge result ended with a conflict we
// have to close the last conflict here
@@ -77,16 +104,19 @@ class MergeFormatterPass {
private void writeConflictMetadata(MergeChunk chunk) throws IOException {
if (lastConflictingName != null
- && chunk.getConflictState() != ConflictState.NEXT_CONFLICTING_RANGE) {
- // found the end of an conflict
+ && !isTheirs(chunk) && !isBase(chunk)) {
+ // found the end of a conflict
writeConflictEnd();
}
- if (chunk.getConflictState() == ConflictState.FIRST_CONFLICTING_RANGE) {
- // found the start of an conflict
+ if (isOurs(chunk)) {
+ // found the start of a conflict
writeConflictStart(chunk);
- } else if (chunk.getConflictState() == ConflictState.NEXT_CONFLICTING_RANGE) {
- // found another conflicting chunk
+ } else if (isTheirs(chunk)) {
+ // found the theirs conflicting chunk
writeConflictChange(chunk);
+ } else if (isBase(chunk)) {
+ // found the base conflicting chunk
+ writeConflictBase(chunk);
}
}
@@ -113,6 +143,11 @@ class MergeFormatterPass {
+ lastConflictingName);
}
+ private void writeConflictBase(MergeChunk chunk) throws IOException {
+ lastConflictingName = seqName.get(chunk.getSequenceIndex());
+ writeln("||||||| " + lastConflictingName); //$NON-NLS-1$
+ }
+
private void writeln(String s) throws IOException {
out.beginln();
out.write((s + "\n").getBytes(charset)); //$NON-NLS-1$
@@ -125,4 +160,17 @@ class MergeFormatterPass {
if (out.isBeginln())
out.write('\n');
}
+
+ private boolean isBase(MergeChunk chunk) {
+ return chunk.getConflictState() == ConflictState.BASE_CONFLICTING_RANGE;
+ }
+
+ private boolean isOurs(MergeChunk chunk) {
+ return chunk
+ .getConflictState() == ConflictState.FIRST_CONFLICTING_RANGE;
+ }
+
+ private boolean isTheirs(MergeChunk chunk) {
+ return chunk.getConflictState() == ConflictState.NEXT_CONFLICTING_RANGE;
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeResult.java
index 20fc3c339c..acf955303d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeResult.java
@@ -97,7 +97,6 @@ public class MergeResult<S extends Sequence> implements Iterable<MergeChunk> {
static final ConflictState[] states = ConflictState.values();
- /** {@inheritDoc} */
@Override
public Iterator<MergeChunk> iterator() {
return new Iterator<>() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java
index df6068925b..1162a615f2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java
@@ -123,6 +123,7 @@ public class RecursiveMerger extends ResolveMerger {
* synthetic merge base this commit is visible only the merger's
* RevWalk and will not be in the repository.
* @throws java.io.IOException
+ * if an IO error occurred
* @throws IncorrectObjectTypeException
* one of the input objects is not a commit.
* @throws NoMergeBaseException
@@ -213,6 +214,7 @@ public class RecursiveMerger extends ResolveMerger {
* the list of parent commits
* @return a new commit visible only within this merger's RevWalk.
* @throws IOException
+ * if an IO error occurred
*/
private RevCommit createCommitForTree(ObjectId tree, List<RevCommit> parents)
throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
index 04c17be392..6eea7b88d9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
@@ -472,7 +472,6 @@ public class ResolveMerger extends ThreeWayMerger {
/**
* Detects if CRLF conversion has been configured.
* <p>
- * </p>
* See {@link EolStreamTypeUtil#detectStreamType} for more info.
*
* @param attributes
@@ -911,7 +910,6 @@ public class ResolveMerger extends ThreeWayMerger {
: strategy;
}
- /** {@inheritDoc} */
@Override
protected boolean mergeImpl() throws IOException {
return mergeTrees(mergeBase(), sourceTrees[0], sourceTrees[1],
@@ -922,18 +920,23 @@ public class ResolveMerger extends ThreeWayMerger {
* adds a new path with the specified stage to the index builder
*
* @param path
+ * the new path
* @param p
+ * canonical tree parser
* @param stage
- * @param lastMod
+ * the stage
+ * @param lastModified
+ * lastModified attribute of the file
* @param len
+ * file length
* @return the entry which was added to the index
*/
private DirCacheEntry add(byte[] path, CanonicalTreeParser p, int stage,
- Instant lastMod, long len) {
+ Instant lastModified, long len) {
if (p != null && !p.getEntryFileMode().equals(FileMode.TREE)) {
return workTreeUpdater.addExistingToIndex(p.getEntryObjectId(), path,
p.getEntryFileMode(), stage,
- lastMod, (int) len);
+ lastModified, (int) len);
}
return null;
}
@@ -1063,6 +1066,7 @@ public class ResolveMerger extends ThreeWayMerger {
* didn't match ours or the working-dir file was dirty and a
* conflict occurred
* @throws java.io.IOException
+ * if an IO error occurred
* @since 6.1
*/
protected boolean processEntry(CanonicalTreeParser base,
@@ -1439,15 +1443,21 @@ public class ResolveMerger extends ThreeWayMerger {
* specified as <code>null</code> then an empty text will be used instead.
*
* @param base
+ * used to parse base tree
* @param ours
+ * used to parse ours tree
* @param theirs
+ * used to parse theirs tree
* @param attributes
+ * attributes for the different stages
* @param strategy
+ * merge strategy
*
* @return the result of the content merge
* @throws BinaryBlobException
* if any of the blobs looks like a binary blob
* @throws IOException
+ * if an IO error occurred
*/
private MergeResult<RawText> contentMerge(CanonicalTreeParser base,
CanonicalTreeParser ours, CanonicalTreeParser theirs,
@@ -1523,11 +1533,17 @@ public class ResolveMerger extends ThreeWayMerger {
* correct stages to the index.
*
* @param base
+ * used to parse base tree
* @param ours
+ * used to parse ours tree
* @param theirs
+ * used to parse theirs tree
* @param result
+ * merge result
* @param attributes
+ * the file's attributes
* @throws IOException
+ * if an IO error occurred
*/
private void updateIndex(CanonicalTreeParser base,
CanonicalTreeParser ours, CanonicalTreeParser theirs,
@@ -1578,6 +1594,7 @@ public class ResolveMerger extends ThreeWayMerger {
* the files .gitattributes entries
* @return the working tree file to which the merged content was written.
* @throws IOException
+ * if an IO error occurred
*/
private File writeMergedFile(TemporaryBuffer rawMerged,
Attributes attributes)
@@ -1662,7 +1679,6 @@ public class ResolveMerger extends ThreeWayMerger {
return FileMode.GITLINK.equals(mode);
}
- /** {@inheritDoc} */
@Override
public ObjectId getResultTreeId() {
return (resultTree == null) ? null : resultTree.toObjectId();
@@ -1822,6 +1838,7 @@ public class ResolveMerger extends ThreeWayMerger {
* content-merge conflicts.
* @return whether the trees merged cleanly
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.5
*/
protected boolean mergeTrees(AbstractTreeIterator baseTree,
@@ -1881,6 +1898,7 @@ public class ResolveMerger extends ThreeWayMerger {
* {@link org.eclipse.jgit.merge.ResolveMerger#mergeTrees(AbstractTreeIterator, RevTree, RevTree, boolean)}
* @return Whether the trees merged cleanly.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.5
*/
protected boolean mergeTreeWalk(TreeWalk treeWalk, boolean ignoreConflicts)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java
index 7055ccd127..6064ebe326 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java
@@ -43,25 +43,21 @@ public class StrategyOneSided extends MergeStrategy {
treeIndex = index;
}
- /** {@inheritDoc} */
@Override
public String getName() {
return strategyName;
}
- /** {@inheritDoc} */
@Override
public Merger newMerger(Repository db) {
return new OneSide(db, treeIndex);
}
- /** {@inheritDoc} */
@Override
public Merger newMerger(Repository db, boolean inCore) {
return new OneSide(db, treeIndex);
}
- /** {@inheritDoc} */
@Override
public Merger newMerger(ObjectInserter inserter, Config config) {
return new OneSide(inserter, treeIndex);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
index c9512edf63..a74bfc0379 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
@@ -21,25 +21,21 @@ import org.eclipse.jgit.lib.Repository;
*/
public class StrategyRecursive extends StrategyResolve {
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(Repository db) {
return new RecursiveMerger(db, false);
}
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(Repository db, boolean inCore) {
return new RecursiveMerger(db, inCore);
}
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(ObjectInserter inserter, Config config) {
return new RecursiveMerger(inserter, config);
}
- /** {@inheritDoc} */
@Override
public String getName() {
return "recursive"; //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java
index 5991ef68a3..a686fd0964 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java
@@ -19,25 +19,21 @@ import org.eclipse.jgit.lib.Repository;
*/
public class StrategyResolve extends ThreeWayMergeStrategy {
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(Repository db) {
return new ResolveMerger(db, false);
}
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(Repository db, boolean inCore) {
return new ResolveMerger(db, inCore);
}
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(ObjectInserter inserter, Config config) {
return new ResolveMerger(inserter, config);
}
- /** {@inheritDoc} */
@Override
public String getName() {
return "resolve"; //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java
index ff40fc1d68..c3180abd35 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java
@@ -43,26 +43,22 @@ public class StrategySimpleTwoWayInCore extends ThreeWayMergeStrategy {
//
}
- /** {@inheritDoc} */
@Override
public String getName() {
return "simple-two-way-in-core"; //$NON-NLS-1$
}
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(Repository db) {
return new InCoreMerger(db);
}
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(Repository db, boolean inCore) {
// This class is always inCore, so ignore the parameter
return newMerger(db);
}
- /** {@inheritDoc} */
@Override
public ThreeWayMerger newMerger(ObjectInserter inserter, Config config) {
return new InCoreMerger(inserter);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMergeStrategy.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMergeStrategy.java
index 411789fd95..8cefa6566e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMergeStrategy.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMergeStrategy.java
@@ -16,11 +16,9 @@ import org.eclipse.jgit.lib.Repository;
* A merge strategy to merge 2 trees, using a common base ancestor tree.
*/
public abstract class ThreeWayMergeStrategy extends MergeStrategy {
- /** {@inheritDoc} */
@Override
public abstract ThreeWayMerger newMerger(Repository db);
- /** {@inheritDoc} */
@Override
public abstract ThreeWayMerger newMerger(Repository db, boolean inCore);
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java
index f283edee01..68a1b5e509 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java
@@ -88,7 +88,6 @@ public abstract class ThreeWayMerger extends Merger {
}
}
- /** {@inheritDoc} */
@Override
public boolean merge(AnyObjectId... tips) throws IOException {
if (tips.length != 2)
@@ -96,7 +95,6 @@ public abstract class ThreeWayMerger extends Merger {
return super.merge(tips);
}
- /** {@inheritDoc} */
@Override
public ObjectId getBaseCommitId() {
return baseCommitId;
@@ -108,6 +106,7 @@ public abstract class ThreeWayMerger extends Merger {
* @return an iterator over the caller-specified merge base, or the natural
* merge base of the two input commits.
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected AbstractTreeIterator mergeBase() throws IOException {
if (baseTree != null) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java b/org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java
index 881873de6f..16d17637e2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java
@@ -83,6 +83,8 @@ public class NLS {
* injected as described in the
* {@link org.eclipse.jgit.nls.TranslationBundle}.
*
+ * @param <T>
+ * type of the translation bundle
* @param type
* required bundle type
* @return an instance of the required bundle type
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/DefaultNoteMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/DefaultNoteMerger.java
index bde0b9e445..b65f28c918 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/DefaultNoteMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/DefaultNoteMerger.java
@@ -34,7 +34,6 @@ import org.eclipse.jgit.util.io.UnionInputStream;
*/
public class DefaultNoteMerger implements NoteMerger {
- /** {@inheritDoc} */
@Override
public Note merge(Note base, Note ours, Note theirs, ObjectReader reader,
ObjectInserter inserter) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java
index c35696323e..2f719bf453 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java
@@ -45,7 +45,6 @@ public class Note extends ObjectId {
data = newData;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java
index 93adf36a3a..b872750212 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java
@@ -166,7 +166,6 @@ public class NoteMap implements Iterable<Note> {
this.reader = reader;
}
- /** {@inheritDoc} */
@Override
public Iterator<Note> iterator() {
try {
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 a6ea523a78..79ceb1316a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMapMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMapMerger.java
@@ -94,6 +94,7 @@ public class NoteMapMerger {
* theirs version of the note tree
* @return merge result as a new NoteMap
* @throws java.io.IOException
+ * if an IO error occurred
*/
public NoteMap merge(NoteMap base, NoteMap ours, NoteMap theirs)
throws IOException {
@@ -113,11 +114,16 @@ public class NoteMapMerger {
* between base, ours and theirs.
*
* @param treeDepth
+ * depth of the tree
* @param base
+ * base version
* @param ours
+ * ours version
* @param theirs
+ * theirs version
* @return merge result as an InMemoryBucket
* @throws IOException
+ * if an IO error occurred
*/
private InMemoryNoteBucket merge(int treeDepth, InMemoryNoteBucket base,
InMemoryNoteBucket ours, InMemoryNoteBucket theirs)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedFileHeader.java b/org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedFileHeader.java
index 4ba7cca51e..e29af614a6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedFileHeader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedFileHeader.java
@@ -40,7 +40,6 @@ public class CombinedFileHeader extends FileHeader {
super(b, offset);
}
- /** {@inheritDoc} */
@Override
@SuppressWarnings("unchecked")
public List<? extends CombinedHunkHeader> getHunks() {
@@ -48,9 +47,6 @@ public class CombinedFileHeader extends FileHeader {
}
/**
- * {@inheritDoc}
- * <p>
- *
* @return number of ancestor revisions mentioned in this diff.
*/
@Override
@@ -60,7 +56,7 @@ public class CombinedFileHeader extends FileHeader {
/**
* {@inheritDoc}
- * <p>
+ *
* @return get the file mode of the first parent.
*/
@Override
@@ -81,7 +77,6 @@ public class CombinedFileHeader extends FileHeader {
/**
* {@inheritDoc}
- * <p>
*
* @return get the object id of the first parent.
*/
@@ -101,7 +96,6 @@ public class CombinedFileHeader extends FileHeader {
return oldIds[nthParent];
}
- /** {@inheritDoc} */
@Override
public String getScriptText(Charset ocs, Charset ncs) {
final Charset[] cs = new Charset[getParentCount() + 1];
@@ -110,11 +104,6 @@ public class CombinedFileHeader extends FileHeader {
return getScriptText(cs);
}
- /**
- * {@inheritDoc}
- * <p>
- * Convert the patch script for this file into a string.
- */
@Override
public String getScriptText(Charset[] charsetGuess) {
return super.getScriptText(charsetGuess);
@@ -156,7 +145,6 @@ public class CombinedFileHeader extends FileHeader {
return ptr;
}
- /** {@inheritDoc} */
@Override
protected void parseIndexLine(int ptr, int eol) {
// "index $asha1,$bsha1..$csha1"
@@ -178,7 +166,6 @@ public class CombinedFileHeader extends FileHeader {
oldModes = new FileMode[oldIds.length];
}
- /** {@inheritDoc} */
@Override
protected void parseNewFileMode(int ptr, int eol) {
for (int i = 0; i < oldModes.length; i++)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedHunkHeader.java b/org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedHunkHeader.java
index 263b1b9ddc..49cf499865 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedHunkHeader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/patch/CombinedHunkHeader.java
@@ -45,13 +45,11 @@ public class CombinedHunkHeader extends HunkHeader {
}
}
- /** {@inheritDoc} */
@Override
public CombinedFileHeader getFileHeader() {
return (CombinedFileHeader) super.getFileHeader();
}
- /** {@inheritDoc} */
@Override
public OldImage getOldImage() {
return getOldImage(0);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/patch/FileHeader.java b/org.eclipse.jgit/src/org/eclipse/jgit/patch/FileHeader.java
index 1e6fb780b2..a47b73dc34 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/patch/FileHeader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/patch/FileHeader.java
@@ -187,6 +187,13 @@ public class FileHeader extends DiffEntry {
return getScriptText(new Charset[] { oldCharset, newCharset });
}
+ /**
+ * Convert the patch script for this file into a string.
+ *
+ * @param charsetGuess
+ * hint which charset is used
+ * @return the patch script, as a Unicode string.
+ */
String getScriptText(Charset[] charsetGuess) {
if (getHunks().isEmpty()) {
// If we have no hunks then we can safely assume the entire
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/patch/FormatError.java b/org.eclipse.jgit/src/org/eclipse/jgit/patch/FormatError.java
index 5618a71782..8d21b6dabb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/patch/FormatError.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/patch/FormatError.java
@@ -91,7 +91,6 @@ public class FormatError {
return RawParseUtils.decode(UTF_8, buf, offset, eol);
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder r = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/patch/HunkHeader.java b/org.eclipse.jgit/src/org/eclipse/jgit/patch/HunkHeader.java
index 4b59fcfc63..1359f66062 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/patch/HunkHeader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/patch/HunkHeader.java
@@ -409,7 +409,6 @@ public class HunkHeader {
offsets[fileIdx] = end < 0 ? s.length() : end + 1;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/patch/PatchApplier.java b/org.eclipse.jgit/src/org/eclipse/jgit/patch/PatchApplier.java
index 04300a9765..7cfc162d77 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/patch/PatchApplier.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/patch/PatchApplier.java
@@ -254,6 +254,7 @@ public class PatchApplier {
* the patch to apply.
* @return the result of the patch
* @throws IOException
+ * if an IO error occurred
* @since 6.6
*/
public Result applyPatch(Patch p) throws IOException {
@@ -448,6 +449,7 @@ public class PatchApplier {
* @param result
* The patch application result.
* @throws IOException
+ * if an IO error occurred
*/
private void apply(String pathWithOriginalContent, DirCache dirCache,
DirCacheBuilder dirCacheBuilder, @Nullable File f, FileHeader fh, Result result)
@@ -802,7 +804,9 @@ public class PatchApplier {
* The patch application result
* @return a loader for the new content, or null if invalid.
* @throws IOException
+ * if an IO error occurred
* @throws UnsupportedOperationException
+ * if an operation isn't supported
*/
private @Nullable ContentStreamLoader applyBinary(String path, File f, FileHeader fh,
StreamSupplier inputSupplier, ObjectId id, Result result)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java
index c11fca13d8..fa109e8208 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java
@@ -179,7 +179,6 @@ public class PlotCommit<L extends PlotLane> extends RevCommit {
return (L) lane;
}
- /** {@inheritDoc} */
@Override
public void reset() {
forkingOffLanes = NO_LANES;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
index 458f240982..3177de17e8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
@@ -49,7 +49,6 @@ public class PlotCommitList<L extends PlotLane> extends
private final HashMap<PlotLane, Integer> laneLength = new HashMap<>(
32);
- /** {@inheritDoc} */
@Override
public void clear() {
super.clear();
@@ -59,7 +58,6 @@ public class PlotCommitList<L extends PlotLane> extends
laneLength.clear();
}
- /** {@inheritDoc} */
@Override
public void source(RevWalk w) {
if (!(w instanceof PlotWalk))
@@ -91,7 +89,6 @@ public class PlotCommitList<L extends PlotLane> extends
result.add((L) p);
}
- /** {@inheritDoc} */
@SuppressWarnings("ReferenceEquality")
@Override
protected void enter(int index, PlotCommit<L> currCommit) {
@@ -184,6 +181,7 @@ public class PlotCommitList<L extends PlotLane> extends
* @param index
* the index of <code>currCommit</code> in the list
* @param currCommit
+ * the current commit
* @param childOnLane
* the direct child on the same lane as <code>currCommit</code>,
* may be null if <code>currCommit</code> is the first commit on
@@ -287,8 +285,11 @@ public class PlotCommitList<L extends PlotLane> extends
* All blockades on the lane must be resolved before calling this method.
*
* @param commitIndex
+ * commit index
* @param child
+ * child to connect
* @param laneToContinue
+ * lane to continue
*/
@SuppressWarnings("ReferenceEquality")
private void drawLaneToChild(final int commitIndex, PlotCommit child,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotWalk.java
index 0582338652..0f6bd2d6cc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotWalk.java
@@ -49,7 +49,6 @@ public class PlotWalk extends RevWalk {
private Repository repository;
- /** {@inheritDoc} */
@Override
public void dispose() {
super.dispose();
@@ -83,6 +82,7 @@ public class PlotWalk extends RevWalk {
* @param refs
* additional refs
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void addAdditionalRefs(Iterable<Ref> refs) throws IOException {
for (Ref ref : refs) {
@@ -97,7 +97,6 @@ public class PlotWalk extends RevWalk {
}
}
- /** {@inheritDoc} */
@Override
public void sort(RevSort s, boolean use) {
if (s == RevSort.TOPO && !use)
@@ -105,13 +104,11 @@ public class PlotWalk extends RevWalk {
super.sort(s, use);
}
- /** {@inheritDoc} */
@Override
protected RevCommit createCommit(AnyObjectId id) {
return new PlotCommit(id);
}
- /** {@inheritDoc} */
@Override
public RevCommit next() throws MissingObjectException,
IncorrectObjectTypeException, IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/AbstractRevQueue.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/AbstractRevQueue.java
index dda108bc69..73ae62a23f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/AbstractRevQueue.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/AbstractRevQueue.java
@@ -79,8 +79,6 @@ abstract class AbstractRevQueue extends Generator {
}
/**
- * {@inheritDoc}
- * <p>
* Remove the first commit from the queue.
*/
@Override
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/BlockRevQueue.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/BlockRevQueue.java
index cdd8073d6e..e855d8f700 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/BlockRevQueue.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/BlockRevQueue.java
@@ -45,8 +45,6 @@ abstract class BlockRevQueue extends AbstractRevQueue {
}
/**
- * {@inheritDoc}
- * <p>
* Reconfigure this queue to share the same free list as another.
* <p>
* Multiple revision queues can be connected to the same free list, making
@@ -56,6 +54,11 @@ abstract class BlockRevQueue extends AbstractRevQueue {
* <p>
* Free lists are not thread-safe. Applications must ensure that all queues
* sharing the same free list are doing so from only a single thread.
+ *
+ * @param q
+ * another FIFO queue that wants to share our queue's free list.
+ *
+ * @see Generator#shareFreeList
*/
@Override
public void shareFreeList(BlockRevQueue q) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthGenerator.java
index ec0824cb0b..664f8fa3a7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthGenerator.java
@@ -55,10 +55,15 @@ class DepthGenerator extends Generator {
/**
* @param w
- * @param s Parent generator
+ * walk used for depth filtering
+ * @param s
+ * Parent generator
* @throws MissingObjectException
+ * if an object is missing
* @throws IncorrectObjectTypeException
+ * if an object has an unexpected type
* @throws IOException
+ * if an IO error occurred
*/
DepthGenerator(DepthWalk w, Generator s) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthWalk.java
index 5277563ac4..f74666bd86 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/DepthWalk.java
@@ -159,8 +159,11 @@ public interface DepthWalk {
* @param c
* Commit to mark
* @throws IOException
+ * if an IO error occurred
* @throws IncorrectObjectTypeException
+ * if object has an unexpected type
* @throws MissingObjectException
+ * if object is missing
*/
public void markRoot(RevCommit c) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -289,8 +292,11 @@ public interface DepthWalk {
* @param o
* Commit to mark
* @throws IOException
+ * if an IO error occurred
* @throws IncorrectObjectTypeException
+ * if object has an unexpected type
* @throws MissingObjectException
+ * if object is missing
*/
public void markRoot(RevObject o) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -313,8 +319,11 @@ public interface DepthWalk {
* @param c
* Commit to mark
* @throws MissingObjectException
+ * if object is missing
* @throws IncorrectObjectTypeException
+ * if object has an unexpected type
* @throws IOException
+ * if an IO error occurred
*/
public void markUnshallow(RevObject c) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FIFORevQueue.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FIFORevQueue.java
index 0f8eddd6d4..996745c158 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FIFORevQueue.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FIFORevQueue.java
@@ -37,7 +37,6 @@ public class FIFORevQueue extends BlockRevQueue {
super(s);
}
- /** {@inheritDoc} */
@Override
public void add(RevCommit c) {
Block b = tail;
@@ -82,7 +81,6 @@ public class FIFORevQueue extends BlockRevQueue {
head = b;
}
- /** {@inheritDoc} */
@Override
public RevCommit next() {
final Block b = head;
@@ -99,7 +97,6 @@ public class FIFORevQueue extends BlockRevQueue {
return c;
}
- /** {@inheritDoc} */
@Override
public void clear() {
head = null;
@@ -135,7 +132,6 @@ public class FIFORevQueue extends BlockRevQueue {
}
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder s = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java
index 3b54123f0b..35ef51f4fd 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java
@@ -11,6 +11,8 @@
package org.eclipse.jgit.revwalk;
import java.io.IOException;
+import java.util.Optional;
+import java.util.Set;
import org.eclipse.jgit.diff.DiffConfig;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
@@ -77,7 +79,6 @@ public class FollowFilter extends TreeFilter {
return path.getPath();
}
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk walker)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -85,19 +86,22 @@ public class FollowFilter extends TreeFilter {
return path.include(walker) && ANY_DIFF.include(walker);
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
return path.shouldBeRecursive() || ANY_DIFF.shouldBeRecursive();
}
+ @Override
+ public Optional<Set<byte[]>> getPathsBestEffort() {
+ return path.getPathsBestEffort();
+ }
+
/** {@inheritDoc} */
@Override
public TreeFilter clone() {
return new FollowFilter(path.clone(), cfg);
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterKey.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterKey.java
index 74e4c1edb7..af50794014 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterKey.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterKey.java
@@ -51,7 +51,6 @@ public final class FooterKey {
return name;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java
index 3d128a6bd3..2d396d57c5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java
@@ -11,6 +11,9 @@
package org.eclipse.jgit.revwalk;
import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import org.eclipse.jgit.util.RawParseUtils;
@@ -47,6 +50,112 @@ public final class FooterLine {
}
/**
+ * Extract the footer lines from the given message.
+ *
+ * @param str
+ * the message to extract footers from.
+ * @return ordered list of footer lines; empty list if no footers found.
+ * @see RevCommit#getFooterLines()
+ * @since 6.7
+ */
+ public static List<FooterLine> fromMessage(
+ String str) {
+ return fromMessage(str.getBytes());
+ }
+
+ /**
+ * Extract the footer lines from the given message.
+ *
+ * @param raw
+ * the raw message to extract footers from.
+ * @return ordered list of footer lines; empty list if no footers found.
+ * @see RevCommit#getFooterLines()
+ * @since 6.7
+ */
+ public static List<FooterLine> fromMessage(
+ byte[] raw) {
+ int ptr = raw.length - 1;
+ while (raw[ptr] == '\n') // trim any trailing LFs, not interesting
+ ptr--;
+
+ int msgB = RawParseUtils.commitMessage(raw, 0);
+ ArrayList<FooterLine> r = new ArrayList<>(4);
+ Charset enc = RawParseUtils.guessEncoding(raw);
+ for (;;) {
+ ptr = RawParseUtils.prevLF(raw, ptr);
+ if (ptr <= msgB)
+ break; // Don't parse commit headers as footer lines.
+
+ int keyStart = ptr + 2;
+ if (raw[keyStart] == '\n')
+ break; // Stop at first paragraph break, no footers above it.
+
+ int keyEnd = RawParseUtils.endOfFooterLineKey(raw, keyStart);
+ if (keyEnd < 0)
+ continue; // Not a well formed footer line, skip it.
+
+ // Skip over the ': *' at the end of the key before the value.
+ //
+ int valStart = keyEnd + 1;
+ while (valStart < raw.length && raw[valStart] == ' ')
+ valStart++;
+
+ // Value ends at the LF, and does not include it.
+ //
+ int valEnd = RawParseUtils.nextLF(raw, valStart);
+ if (raw[valEnd - 1] == '\n')
+ valEnd--;
+
+ r.add(new FooterLine(raw, enc, keyStart, keyEnd, valStart, valEnd));
+ }
+ Collections.reverse(r);
+ return r;
+ }
+
+ /**
+ * Get the values of all footer lines with the given key.
+ *
+ * @param footers
+ * list of footers to find the values in.
+ * @param keyName
+ * footer key to find values of, case-insensitive.
+ * @return values of footers with key of {@code keyName}, ordered by their
+ * order of appearance. Duplicates may be returned if the same
+ * footer appeared more than once. Empty list if no footers appear
+ * with the specified key, or there are no footers at all.
+ * @see #fromMessage
+ * @since 6.7
+ */
+ public static List<String> getValues(List<FooterLine> footers, String keyName) {
+ return getValues(footers, new FooterKey(keyName));
+ }
+
+ /**
+ * Get the values of all footer lines with the given key.
+ *
+ * @param footers
+ * list of footers to find the values in.
+ * @param key
+ * footer key to find values of, case-insensitive.
+ * @return values of footers with key of {@code keyName}, ordered by their
+ * order of appearance. Duplicates may be returned if the same
+ * footer appeared more than once. Empty list if no footers appear
+ * with the specified key, or there are no footers at all.
+ * @see #fromMessage
+ * @since 6.7
+ */
+ public static List<String> getValues(List<FooterLine> footers, FooterKey key) {
+ if (footers.isEmpty())
+ return Collections.emptyList();
+ ArrayList<String> r = new ArrayList<>(footers.size());
+ for (FooterLine f : footers) {
+ if (f.matches(key))
+ r.add(f.getValue());
+ }
+ return r;
+ }
+
+ /**
* Whether keys match
*
* @param key
@@ -117,7 +226,6 @@ public final class FooterLine {
return RawParseUtils.decode(enc, buffer, lt, gt - 1);
}
- /** {@inheritDoc} */
@Override
public String toString() {
return getKey() + ": " + getValue(); //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/Generator.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/Generator.java
index 3493dcfb47..d97812ff45 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/Generator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/Generator.java
@@ -71,8 +71,11 @@ abstract class Generator {
*
* @return next available commit; null if no more are to be returned.
* @throws MissingObjectException
+ * if an object is missing
* @throws IncorrectObjectTypeException
+ * if an object has an unexpected type
* @throws IOException
+ * if an IO error occurred
*/
abstract RevCommit next() throws MissingObjectException,
IncorrectObjectTypeException, IOException;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/LIFORevQueue.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/LIFORevQueue.java
index 4773ca8427..ae67ca7599 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/LIFORevQueue.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/LIFORevQueue.java
@@ -34,7 +34,6 @@ public class LIFORevQueue extends BlockRevQueue {
super(s);
}
- /** {@inheritDoc} */
@Override
public void add(RevCommit c) {
Block b = head;
@@ -47,7 +46,6 @@ public class LIFORevQueue extends BlockRevQueue {
b.unpop(c);
}
- /** {@inheritDoc} */
@Override
public RevCommit next() {
final Block b = head;
@@ -62,7 +60,6 @@ public class LIFORevQueue extends BlockRevQueue {
return c;
}
- /** {@inheritDoc} */
@Override
public void clear() {
head = null;
@@ -89,7 +86,6 @@ public class LIFORevQueue extends BlockRevQueue {
return false;
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder s = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java
index 4e48a5c328..64b2fcd66a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/ObjectWalk.java
@@ -300,14 +300,12 @@ public class ObjectWalk extends RevWalk {
addObject(o);
}
- /** {@inheritDoc} */
@Override
public void sort(RevSort s) {
super.sort(s);
boundary = hasRevSort(RevSort.BOUNDARY);
}
- /** {@inheritDoc} */
@Override
public void sort(RevSort s, boolean use) {
super.sort(s, use);
@@ -357,7 +355,6 @@ public class ObjectWalk extends RevWalk {
visitationPolicy = requireNonNull(policy);
}
- /** {@inheritDoc} */
@Override
public RevCommit next() throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -762,7 +759,6 @@ public class ObjectWalk extends RevWalk {
pathBuf = newBuf;
}
- /** {@inheritDoc} */
@Override
public void dispose() {
super.dispose();
@@ -771,7 +767,6 @@ public class ObjectWalk extends RevWalk {
freeVisit = null;
}
- /** {@inheritDoc} */
@Override
protected void reset(int retainFlags) {
super.reset(retainFlags);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RenameCallback.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RenameCallback.java
index ba3399ce9f..9856f2c252 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RenameCallback.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RenameCallback.java
@@ -23,8 +23,30 @@ public abstract class RenameCallback {
* Called whenever a diff was found that is actually a rename or copy of a
* file.
*
+ * <p>Subclass of this class have to override this to receive diffEntry for
+ * the rename.
+ *
* @param entry
* the entry representing the rename/copy
*/
public abstract void renamed(DiffEntry entry);
+
+ /**
+ * Called whenever a diff was found that is actually a rename or copy of a
+ * file along with the commit that caused it.
+ *
+ * <p>Subclass of this class have an option to override this if it wants to
+ * know what commit generated the diffEntry. Otherwise defaults to the
+ * {@link RenameCallback#renamed(DiffEntry)} function.
+ *
+ * @param entry
+ * the entry representing the rename/copy
+ * @param commit
+ * commit at which callback occurred
+ *
+ * @since 6.7
+ */
+ public void renamed(DiffEntry entry, RevCommit commit) {
+ renamed(entry);
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevBlob.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevBlob.java
index f5abbb870a..1f81b6a922 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevBlob.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevBlob.java
@@ -33,7 +33,6 @@ public class RevBlob extends RevObject {
super(id);
}
- /** {@inheritDoc} */
@Override
public final int getType() {
return Constants.OBJ_BLOB;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
index b64c9ce906..0392ea428c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
@@ -11,20 +11,19 @@
package org.eclipse.jgit.revwalk;
-import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.eclipse.jgit.util.RawParseUtils.guessEncoding;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import org.eclipse.jgit.annotations.Nullable;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
+import org.eclipse.jgit.internal.storage.commitgraph.ChangedPathFilter;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.MutableObjectId;
@@ -222,7 +221,6 @@ public class RevCommit extends RevObject {
flags |= PARSED;
}
- /** {@inheritDoc} */
@Override
public final int getType() {
return Constants.OBJ_COMMIT;
@@ -484,7 +482,8 @@ public class RevCommit extends RevObject {
if (msgB < 0) {
return ""; //$NON-NLS-1$
}
- return RawParseUtils.decode(guessEncoding(), raw, msgB, raw.length);
+ return RawParseUtils.decode(guessEncoding(buffer), raw, msgB,
+ raw.length);
}
/**
@@ -510,7 +509,8 @@ public class RevCommit extends RevObject {
}
int msgE = RawParseUtils.endOfParagraph(raw, msgB);
- String str = RawParseUtils.decode(guessEncoding(), raw, msgB, msgE);
+ String str = RawParseUtils.decode(guessEncoding(buffer), raw, msgB,
+ msgE);
if (hasLF(raw, msgB, msgE)) {
str = StringUtils.replaceLineBreaksWithSpace(str);
}
@@ -562,14 +562,6 @@ public class RevCommit extends RevObject {
return RawParseUtils.parseEncoding(buffer);
}
- private Charset guessEncoding() {
- try {
- return getEncoding();
- } catch (IllegalCharsetNameException | UnsupportedCharsetException e) {
- return UTF_8;
- }
- }
-
/**
* Parse the footer lines (e.g. "Signed-off-by") for machine processing.
* <p>
@@ -592,50 +584,14 @@ public class RevCommit extends RevObject {
* @return ordered list of footer lines; empty list if no footers found.
*/
public final List<FooterLine> getFooterLines() {
- final byte[] raw = buffer;
- int ptr = raw.length - 1;
- while (raw[ptr] == '\n') // trim any trailing LFs, not interesting
- ptr--;
-
- final int msgB = RawParseUtils.commitMessage(raw, 0);
- final ArrayList<FooterLine> r = new ArrayList<>(4);
- final Charset enc = guessEncoding();
- for (;;) {
- ptr = RawParseUtils.prevLF(raw, ptr);
- if (ptr <= msgB)
- break; // Don't parse commit headers as footer lines.
-
- final int keyStart = ptr + 2;
- if (raw[keyStart] == '\n')
- break; // Stop at first paragraph break, no footers above it.
-
- final int keyEnd = RawParseUtils.endOfFooterLineKey(raw, keyStart);
- if (keyEnd < 0)
- continue; // Not a well formed footer line, skip it.
-
- // Skip over the ': *' at the end of the key before the value.
- //
- int valStart = keyEnd + 1;
- while (valStart < raw.length && raw[valStart] == ' ')
- valStart++;
-
- // Value ends at the LF, and does not include it.
- //
- int valEnd = RawParseUtils.nextLF(raw, valStart);
- if (raw[valEnd - 1] == '\n')
- valEnd--;
-
- r.add(new FooterLine(raw, enc, keyStart, keyEnd, valStart, valEnd));
- }
- Collections.reverse(r);
- return r;
+ return FooterLine.fromMessage(buffer);
}
/**
* Get the values of all footer lines with the given key.
*
* @param keyName
- * footer key to find values of, case insensitive.
+ * footer key to find values of, case-insensitive.
* @return values of footers with key of {@code keyName}, ordered by their
* order of appearance. Duplicates may be returned if the same
* footer appeared more than once. Empty list if no footers appear
@@ -643,30 +599,22 @@ public class RevCommit extends RevObject {
* @see #getFooterLines()
*/
public final List<String> getFooterLines(String keyName) {
- return getFooterLines(new FooterKey(keyName));
+ return FooterLine.getValues(getFooterLines(), keyName);
}
/**
* Get the values of all footer lines with the given key.
*
- * @param keyName
- * footer key to find values of, case insensitive.
+ * @param key
+ * footer key to find values of, case-insensitive.
* @return values of footers with key of {@code keyName}, ordered by their
* order of appearance. Duplicates may be returned if the same
* footer appeared more than once. Empty list if no footers appear
* with the specified key, or there are no footers at all.
* @see #getFooterLines()
*/
- public final List<String> getFooterLines(FooterKey keyName) {
- final List<FooterLine> src = getFooterLines();
- if (src.isEmpty())
- return Collections.emptyList();
- final ArrayList<String> r = new ArrayList<>(src.size());
- for (FooterLine f : src) {
- if (f.matches(keyName))
- r.add(f.getValue());
- }
- return r;
+ public final List<String> getFooterLines(FooterKey key) {
+ return FooterLine.getValues(getFooterLines(), key);
}
/**
@@ -688,6 +636,21 @@ public class RevCommit extends RevObject {
}
/**
+ * Get the changed path filter of the commit.
+ * <p>
+ * This is null when there is no commit graph file, the commit is not in the
+ * commit graph file, or the commit graph file was generated without changed
+ * path filters.
+ *
+ * @param rw A revwalk to load the commit graph (if available)
+ * @return the changed path filter
+ * @since 6.7
+ */
+ public ChangedPathFilter getChangedPathFilter(RevWalk rw) {
+ return null;
+ }
+
+ /**
* Reset this commit to allow another RevWalk with the same instances.
* <p>
* Subclasses <b>must</b> call <code>super.reset()</code> to ensure the
@@ -713,7 +676,6 @@ public class RevCommit extends RevObject {
buffer = null;
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder s = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitCG.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitCG.java
index 4d3664da11..c7a03992b7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitCG.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitCG.java
@@ -14,6 +14,7 @@ import java.io.IOException;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
+import org.eclipse.jgit.internal.storage.commitgraph.ChangedPathFilter;
import org.eclipse.jgit.internal.storage.commitgraph.CommitGraph;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.Constants;
@@ -44,7 +45,6 @@ class RevCommitCG extends RevCommit {
this.graphPosition = graphPosition;
}
- /** {@inheritDoc} */
@Override
void parseCanonical(RevWalk walk, byte[] raw) throws IOException {
if (walk.isRetainBody()) {
@@ -53,7 +53,6 @@ class RevCommitCG extends RevCommit {
parseInGraph(walk);
}
- /** {@inheritDoc} */
@Override
void parseHeaders(RevWalk walk) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -98,9 +97,14 @@ class RevCommitCG extends RevCommit {
flags |= PARSED;
}
- /** {@inheritDoc} */
@Override
int getGeneration() {
return generation;
}
+
+ /** {@inheritDoc} */
+ @Override
+ public ChangedPathFilter getChangedPathFilter(RevWalk rw) {
+ return rw.commitGraph().getChangedPathFilter(graphPosition);
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitList.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitList.java
index 59213a8e60..58f5d425cc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommitList.java
@@ -25,7 +25,6 @@ import org.eclipse.jgit.revwalk.filter.RevFilter;
public class RevCommitList<E extends RevCommit> extends RevObjectList<E> {
private RevWalk walker;
- /** {@inheritDoc} */
@Override
public void clear() {
super.clear();
@@ -313,7 +312,6 @@ public class RevCommitList<E extends RevCommit> extends RevObjectList<E> {
* walker specified by {@link #source(RevWalk)} is pumped until the
* specified commit is loaded. Callers can test the final size of the list
* by {@link #size()} to determine if the high water mark specified was met.
- * <p>
*
* @param commitToLoad
* commit the caller wants this list to contain when the fill
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java
index a0160ddbef..3221bf6e8f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java
@@ -67,7 +67,6 @@ public class RevFlag {
return walker;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return name;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java
index 4d2684a0f0..55ea30d24b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java
@@ -132,7 +132,6 @@ public abstract class RevObject extends ObjectIdOwnerMap.Entry {
flags &= ~set.mask;
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder s = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObjectList.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObjectList.java
index 0393f55957..ad8aeedeb9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObjectList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObjectList.java
@@ -47,7 +47,6 @@ public class RevObjectList<E extends RevObject> extends AbstractList<E> {
// Initialized above.
}
- /** {@inheritDoc} */
@Override
public void add(int index, E element) {
if (index != size)
@@ -58,7 +57,6 @@ public class RevObjectList<E extends RevObject> extends AbstractList<E> {
size++;
}
- /** {@inheritDoc} */
@Override
@SuppressWarnings("unchecked")
public E set(int index, E element) {
@@ -80,7 +78,6 @@ public class RevObjectList<E extends RevObject> extends AbstractList<E> {
return (E) old;
}
- /** {@inheritDoc} */
@Override
@SuppressWarnings("unchecked")
public E get(int index) {
@@ -95,13 +92,11 @@ public class RevObjectList<E extends RevObject> extends AbstractList<E> {
return s != null ? (E) s.contents[index] : null;
}
- /** {@inheritDoc} */
@Override
public int size() {
return size;
}
- /** {@inheritDoc} */
@Override
public void clear() {
contents = new Block(0);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTag.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTag.java
index b9d145008b..75dbd57740 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTag.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTag.java
@@ -149,7 +149,6 @@ public class RevTag extends RevObject {
flags |= PARSED;
}
- /** {@inheritDoc} */
@Override
public final int getType() {
return Constants.OBJ_TAG;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTree.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTree.java
index 8119af468a..d81af0c029 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTree.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevTree.java
@@ -33,7 +33,6 @@ public class RevTree extends RevObject {
super(id);
}
- /** {@inheritDoc} */
@Override
public final int getType() {
return Constants.OBJ_TREE;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
index 2fb3a60690..0319684a9d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
@@ -221,7 +221,6 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
/**
* Create a new revision walker for a given repository.
- * <p>
*
* @param or
* the reader the walker will obtain data from. The reader is not
@@ -479,7 +478,6 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
* <p>
* A commit is merged into a ref if we can find a path of commits that leads
* from that specific ref and ends at <code>commit</code>.
- * <p>
*
* @param commit
* commit the caller thinks is reachable from <code>refs</code>.
@@ -501,7 +499,6 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
* <p>
* A commit is merged into a ref if we can find a path of commits that leads
* from that specific ref and ends at <code>commit</code>.
- * <p>
*
* @param commit
* commit the caller thinks is reachable from <code>refs</code>.
@@ -1222,6 +1219,8 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
/**
* Asynchronous object parsing.
*
+ * @param <T>
+ * Type of returned {@code ObjectId}
* @param objectIds
* objects to open from the object store. The supplied collection
* must not be modified until the queue has finished.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalkUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalkUtils.java
index e52e916318..4bfe2fda02 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalkUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalkUtils.java
@@ -51,8 +51,11 @@ public final class RevWalkUtils {
* should be done until there are no more commits
* @return the number of commits
* @throws org.eclipse.jgit.errors.MissingObjectException
+ * if object is missing
* @throws org.eclipse.jgit.errors.IncorrectObjectTypeException
+ * if object has unexpected type
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static int count(final RevWalk walk, final RevCommit start,
final RevCommit end) throws MissingObjectException,
@@ -80,8 +83,11 @@ public final class RevWalkUtils {
* should be done until there are no more commits
* @return the commits found
* @throws org.eclipse.jgit.errors.MissingObjectException
+ * if object is missing
* @throws org.eclipse.jgit.errors.IncorrectObjectTypeException
+ * if object has unexpected type
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static List<RevCommit> find(final RevWalk walk,
final RevCommit start, final RevCommit end)
@@ -116,8 +122,11 @@ public final class RevWalkUtils {
* the set of branches we want to see reachability from
* @return the list of branches a given commit is reachable from
* @throws org.eclipse.jgit.errors.MissingObjectException
+ * if object is missing
* @throws org.eclipse.jgit.errors.IncorrectObjectTypeException
+ * if object has unexpected type
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static List<Ref> findBranchesReachableFrom(RevCommit commit,
RevWalk revWalk, Collection<Ref> refs)
@@ -147,8 +156,11 @@ public final class RevWalkUtils {
* the callback for progress and cancellation
* @return the list of branches a given commit is reachable from
* @throws org.eclipse.jgit.errors.MissingObjectException
+ * if object is missing
* @throws org.eclipse.jgit.errors.IncorrectObjectTypeException
+ * if object has unexpected type
* @throws java.io.IOException
+ * if an IO error occurred
* @since 5.4
*/
public static List<Ref> findBranchesReachableFrom(RevCommit commit,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RewriteGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RewriteGenerator.java
index 2c88bb872e..4a93f4d745 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RewriteGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RewriteGenerator.java
@@ -101,9 +101,13 @@ class RewriteGenerator extends Generator {
* of this commit by the previous {@link PendingGenerator}.
*
* @param c
+ * given commit
* @throws MissingObjectException
+ * if an object is missing
* @throws IncorrectObjectTypeException
+ * if an object has an unexpected type
* @throws IOException
+ * if an IO error occurred
*/
private void applyFilterToParents(RevCommit c)
throws MissingObjectException, IncorrectObjectTypeException,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoNonIntermixSortGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoNonIntermixSortGenerator.java
index 452545a04e..c9d8ff90fd 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoNonIntermixSortGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoNonIntermixSortGenerator.java
@@ -33,8 +33,11 @@ class TopoNonIntermixSortGenerator extends Generator {
* @param s
* generator to pull all commits out of, and into this buffer.
* @throws MissingObjectException
+ * if an object is missing
* @throws IncorrectObjectTypeException
+ * if an object has an unexpected type
* @throws IOException
+ * if an IO error occurred
*/
TopoNonIntermixSortGenerator(Generator s) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoSortGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoSortGenerator.java
index 4739f78fc0..950b0a45b4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoSortGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TopoSortGenerator.java
@@ -33,8 +33,11 @@ class TopoSortGenerator extends Generator {
* @param s
* generator to pull all commits out of, and into this buffer.
* @throws MissingObjectException
+ * if an object is missing
* @throws IncorrectObjectTypeException
+ * if an object has an unexpected type
* @throws IOException
+ * if an IO error occurred
*/
TopoSortGenerator(Generator s) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java
index f921449ffa..43571a6868 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java
@@ -12,7 +12,10 @@ package org.eclipse.jgit.revwalk;
import java.io.IOException;
import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import org.eclipse.jgit.internal.storage.commitgraph.ChangedPathFilter;
import org.eclipse.jgit.diff.DiffConfig;
import org.eclipse.jgit.diff.DiffEntry;
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
@@ -47,6 +50,12 @@ public class TreeRevFilter extends RevFilter {
private final TreeWalk pathFilter;
+ private long changedPathFilterTruePositive = 0;
+
+ private long changedPathFilterFalsePositive = 0;
+
+ private long changedPathFilterNegative = 0;
+
/**
* Create a {@link org.eclipse.jgit.revwalk.filter.RevFilter} from a
* {@link org.eclipse.jgit.treewalk.filter.TreeFilter}.
@@ -92,13 +101,11 @@ public class TreeRevFilter extends RevFilter {
this.rewriteFlag = rewriteFlag;
}
- /** {@inheritDoc} */
@Override
public RevFilter clone() {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
@Override
public boolean include(RevWalk walker, RevCommit c)
throws StopWalkException, MissingObjectException,
@@ -124,12 +131,41 @@ public class TreeRevFilter extends RevFilter {
// We have exactly one parent. This is a very common case.
//
int chgs = 0, adds = 0;
- while (tw.next()) {
- chgs++;
- if (tw.getRawMode(0) == 0 && tw.getRawMode(1) != 0) {
- adds++;
- } else {
- break; // no point in looking at this further.
+ boolean changedPathFilterUsed = false;
+ boolean mustCalculateChgs = true;
+ ChangedPathFilter cpf = c.getChangedPathFilter(walker);
+ if (cpf != null) {
+ Optional<Set<byte[]>> paths = pathFilter.getFilter()
+ .getPathsBestEffort();
+ if (paths.isPresent()) {
+ changedPathFilterUsed = true;
+ for (byte[] path : paths.get()) {
+ if (!cpf.maybeContains(path)) {
+ mustCalculateChgs = false;
+ break;
+ }
+ }
+ }
+ }
+ if (mustCalculateChgs) {
+ while (tw.next()) {
+ chgs++;
+ if (tw.getRawMode(0) == 0 && tw.getRawMode(1) != 0) {
+ adds++;
+ } else {
+ break; // no point in looking at this further.
+ }
+ }
+ if (changedPathFilterUsed) {
+ if (chgs > 0) {
+ changedPathFilterTruePositive++;
+ } else {
+ changedPathFilterFalsePositive++;
+ }
+ }
+ } else {
+ if (changedPathFilterUsed) {
+ changedPathFilterNegative++;
}
}
@@ -149,7 +185,8 @@ public class TreeRevFilter extends RevFilter {
// commit. We need to update our filter to its older
// name, if we can discover it. Find out what that is.
//
- updateFollowFilter(trees, ((FollowFilter) tw.getFilter()).cfg);
+ updateFollowFilter(trees, ((FollowFilter) tw.getFilter()).cfg,
+ c);
}
return true;
} else if (nParents == 0) {
@@ -241,13 +278,47 @@ public class TreeRevFilter extends RevFilter {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean requiresCommitBody() {
return false;
}
- private void updateFollowFilter(ObjectId[] trees, DiffConfig cfg)
+ /**
+ * Return how many times a changed path filter correctly predicted that a
+ * path was changed in a commit, for statistics gathering purposes.
+ *
+ * @return count of true positives
+ * @since 6.7
+ */
+ public long getChangedPathFilterTruePositive() {
+ return changedPathFilterTruePositive;
+ }
+
+ /**
+ * Return how many times a changed path filter wrongly predicted that a path
+ * was changed in a commit, for statistics gathering purposes.
+ *
+ * @return count of false positives
+ * @since 6.7
+ */
+ public long getChangedPathFilterFalsePositive() {
+ return changedPathFilterFalsePositive;
+ }
+
+ /**
+ * Return how many times a changed path filter predicted that a path was not
+ * changed in a commit (allowing that commit to be skipped), for statistics
+ * gathering purposes.
+ *
+ * @return count of negatives
+ * @since 6.7
+ */
+ public long getChangedPathFilterNegative() {
+ return changedPathFilterNegative;
+ }
+
+ private void updateFollowFilter(ObjectId[] trees, DiffConfig cfg,
+ RevCommit commit)
throws MissingObjectException, IncorrectObjectTypeException,
CorruptObjectException, IOException {
TreeWalk tw = pathFilter;
@@ -266,7 +337,7 @@ public class TreeRevFilter extends RevFilter {
newFilter = FollowFilter.create(ent.getOldPath(), cfg);
RenameCallback callback = oldFilter.getRenameCallback();
if (callback != null) {
- callback.renamed(ent);
+ callback.renamed(ent, commit);
// forward the callback to the new follow filter
((FollowFilter) newFilter).setRenameCallback(callback);
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/CommitTimeRevFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/CommitTimeRevFilter.java
index 6ac490a345..4100e877df 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/CommitTimeRevFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/CommitTimeRevFilter.java
@@ -98,13 +98,11 @@ public abstract class CommitTimeRevFilter extends RevFilter {
when = (int) (ts / 1000);
}
- /** {@inheritDoc} */
@Override
public RevFilter clone() {
return this;
}
- /** {@inheritDoc} */
@Override
public boolean requiresCommitBody() {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/MaxCountRevFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/MaxCountRevFilter.java
index 0e3a803b64..09bcb33f2e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/MaxCountRevFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/MaxCountRevFilter.java
@@ -46,7 +46,6 @@ public class MaxCountRevFilter extends RevFilter {
this.maxCount = maxCount;
}
- /** {@inheritDoc} */
@Override
public boolean include(RevWalk walker, RevCommit cmit)
throws StopWalkException, MissingObjectException,
@@ -57,7 +56,6 @@ public class MaxCountRevFilter extends RevFilter {
return true;
}
- /** {@inheritDoc} */
@Override
public RevFilter clone() {
return new MaxCountRevFilter(maxCount);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/NotRevFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/NotRevFilter.java
index 1482c51291..8fcebc9fa1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/NotRevFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/NotRevFilter.java
@@ -38,13 +38,11 @@ public class NotRevFilter extends RevFilter {
a = one;
}
- /** {@inheritDoc} */
@Override
public RevFilter negate() {
return a;
}
- /** {@inheritDoc} */
@Override
public boolean include(RevWalk walker, RevCommit c)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -52,19 +50,16 @@ public class NotRevFilter extends RevFilter {
return !a.include(walker, c);
}
- /** {@inheritDoc} */
@Override
public boolean requiresCommitBody() {
return a.requiresCommitBody();
}
- /** {@inheritDoc} */
@Override
public RevFilter clone() {
return new NotRevFilter(a.clone());
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "NOT " + a.toString(); //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFilter.java
index 256e4794cd..8430646305 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFilter.java
@@ -264,7 +264,6 @@ public abstract class RevFilter {
@Override
public abstract RevFilter clone();
- /** {@inheritDoc} */
@Override
public String toString() {
String n = getClass().getName();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFlagFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFlagFilter.java
index 16d9f76143..f9ee632b50 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFlagFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/RevFlagFilter.java
@@ -91,13 +91,11 @@ public abstract class RevFlagFilter extends RevFilter {
flags = m;
}
- /** {@inheritDoc} */
@Override
public RevFilter clone() {
return this;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return super.toString() + flags;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SkipRevFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SkipRevFilter.java
index 84df36a2d2..bf93b7ba3e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SkipRevFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SkipRevFilter.java
@@ -45,7 +45,6 @@ public class SkipRevFilter extends RevFilter {
this.skip = skip;
}
- /** {@inheritDoc} */
@Override
public boolean include(RevWalk walker, RevCommit cmit)
throws StopWalkException, MissingObjectException,
@@ -55,7 +54,6 @@ public class SkipRevFilter extends RevFilter {
return true;
}
- /** {@inheritDoc} */
@Override
public RevFilter clone() {
return new SkipRevFilter(skip);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SubStringRevFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SubStringRevFilter.java
index 7f00dfd504..ff1fea2418 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SubStringRevFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/filter/SubStringRevFilter.java
@@ -67,7 +67,6 @@ public abstract class SubStringRevFilter extends RevFilter {
pattern = new RawSubStringPattern(patternText);
}
- /** {@inheritDoc} */
@Override
public boolean include(RevWalk walker, RevCommit cmit)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -75,7 +74,6 @@ public abstract class SubStringRevFilter extends RevFilter {
return pattern.match(text(cmit)) >= 0;
}
- /** {@inheritDoc} */
@Override
public boolean requiresCommitBody() {
return true;
@@ -90,13 +88,11 @@ public abstract class SubStringRevFilter extends RevFilter {
*/
protected abstract RawCharSequence text(RevCommit cmit);
- /** {@inheritDoc} */
@Override
public RevFilter clone() {
return this; // Typically we are actually thread-safe.
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
index cba5e1697c..7fdcc4d3ec 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
@@ -22,6 +22,8 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.errors.LockFailedException;
@@ -52,6 +54,8 @@ public class FileBasedConfig extends StoredConfig {
private volatile ObjectId hash;
+ private AtomicBoolean exists = new AtomicBoolean();
+
/**
* Create a configuration with no default fallback.
*
@@ -84,7 +88,6 @@ public class FileBasedConfig extends StoredConfig {
this.hash = ObjectId.zeroId();
}
- /** {@inheritDoc} */
@Override
protected boolean notifyUponTransientChanges() {
// we will notify listeners upon save()
@@ -100,6 +103,21 @@ public class FileBasedConfig extends StoredConfig {
return configFile;
}
+ boolean exists() {
+ return exists.get();
+ }
+
+ @Override
+ public void setStringList(String section, String subsection, String name,
+ List<String> values) {
+ super.setStringList(section, subsection, name, values);
+ }
+
+ @Override
+ public void unsetSection(String section, String subsection) {
+ super.unsetSection(section, subsection);
+ }
+
/**
* {@inheritDoc}
* <p>
@@ -145,6 +163,7 @@ public class FileBasedConfig extends StoredConfig {
clear();
snapshot = lastSnapshot[0];
}
+ exists.set(wasRead != null);
} catch (IOException e) {
throw e;
} catch (Exception e) {
@@ -197,7 +216,6 @@ public class FileBasedConfig extends StoredConfig {
fireConfigChangedEvent();
}
- /** {@inheritDoc} */
@Override
public void clear() {
hash = hash(new byte[0]);
@@ -208,7 +226,6 @@ public class FileBasedConfig extends StoredConfig {
return ObjectId.fromRaw(Constants.newMessageDigest().digest(rawText));
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/UserConfigFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/UserConfigFile.java
new file mode 100644
index 0000000000..2ad74c23c7
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/UserConfigFile.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2023, Thomas Wolf <twolf@apache.org> and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.storage.file;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.jgit.annotations.NonNull;
+import org.eclipse.jgit.errors.ConfigInvalidException;
+import org.eclipse.jgit.lib.Config;
+import org.eclipse.jgit.util.FS;
+
+/**
+ * User (global) git config based on two possible locations,
+ * {@code ~/.gitconfig} and {@code $XDG_CONFIG_HOME/git/config}.
+ * <p>
+ * For reading, both locations are considered, first the XDG file, then the file
+ * in the home directory. All updates occur in the last file read that exists,
+ * or in the home directory file if neither exists. In other words: if only the
+ * XDG file exists, it is updated, otherwise the home directory file is updated.
+ * </p>
+ *
+ * @since 6.7
+ */
+public class UserConfigFile extends FileBasedConfig {
+
+ private final FileBasedConfig parent;
+
+ /**
+ * Creates a new {@link UserConfigFile}.
+ *
+ * @param parent
+ * parent {@link Config}; may be {@code null}
+ * @param config
+ * {@link File} for {@code ~/.gitconfig}
+ * @param xdgConfig
+ * {@link File} for {@code $XDG_CONFIG_HOME/.gitconfig}
+ * @param fileSystem
+ * {@link FS} to use for the two files; normally
+ * {@link FS#DETECTED}
+ */
+ public UserConfigFile(Config parent, @NonNull File config,
+ @NonNull File xdgConfig, @NonNull FS fileSystem) {
+ super(new FileBasedConfig(parent, xdgConfig, fileSystem), config,
+ fileSystem);
+ this.parent = (FileBasedConfig) getBaseConfig();
+ }
+
+ @Override
+ public void setStringList(String section, String subsection, String name,
+ List<String> values) {
+ if (exists() || !parent.exists()) {
+ super.setStringList(section, subsection, name, values);
+ } else {
+ parent.setStringList(section, subsection, name, values);
+ }
+ }
+
+ @Override
+ public void unset(String section, String subsection, String name) {
+ if (exists() || !parent.exists()) {
+ super.unset(section, subsection, name);
+ } else {
+ parent.unset(section, subsection, name);
+ }
+ }
+
+ @Override
+ public void unsetSection(String section, String subsection) {
+ if (exists() || !parent.exists()) {
+ super.unsetSection(section, subsection);
+ } else {
+ parent.unsetSection(section, subsection);
+ }
+ }
+
+ @Override
+ public boolean isOutdated() {
+ return super.isOutdated() || parent.isOutdated();
+ }
+
+ @Override
+ public void load() throws IOException, ConfigInvalidException {
+ if (super.isOutdated()) {
+ super.load();
+ }
+ if (parent.isOutdated()) {
+ parent.load();
+ }
+ }
+
+ @Override
+ public void save() throws IOException {
+ if (exists() || !parent.exists()) {
+ if (exists() || !toText().strip().isEmpty()) {
+ super.save();
+ }
+ } else {
+ parent.save();
+ }
+ }
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java
index a12f652598..27795ab96b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java
@@ -18,6 +18,7 @@ import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_GIT_OPENFIL
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_GIT_WINDOWSIZE;
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_STREAM_FILE_TRESHOLD;
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_GIT_USE_STRONGREFS;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_INDEX_GIT_USE_STRONGREFS;
import org.eclipse.jgit.internal.storage.file.WindowCache;
import org.eclipse.jgit.lib.Config;
@@ -39,6 +40,8 @@ public class WindowCacheConfig {
private boolean useStrongRefs;
+ private boolean useStrongIndexRefs;
+
private int packedGitWindowSize;
private boolean packedGitMMAP;
@@ -56,6 +59,7 @@ public class WindowCacheConfig {
packedGitOpenFiles = 128;
packedGitLimit = 10 * MB;
useStrongRefs = false;
+ useStrongIndexRefs = true;
packedGitWindowSize = 8 * KB;
packedGitMMAP = false;
deltaBaseCacheLimit = 10 * MB;
@@ -133,6 +137,31 @@ public class WindowCacheConfig {
}
/**
+ * Get whether the Pack indices cache should use strong references or
+ * SoftReferences
+ *
+ * @return {@code true} if the cached Pack indices should use strong references,
+ * otherwise it will use {@link java.lang.ref.SoftReference}s
+ * @since 6.7
+ */
+ public boolean isPackedIndexGitUseStrongRefs() {
+ return useStrongIndexRefs;
+ }
+
+ /**
+ * Set if the Pack indices cache should use strong refs or soft refs
+ *
+ * @param useStrongRefs
+ * if @{code true} the Pack strongly references cached indices
+ * otherwise it uses {@link java.lang.ref.SoftReference}s which
+ * can be evicted by the Java gc if heap is almost full
+ * @since 6.7
+ */
+ public void setPackedIndexGitUseStrongRefs(boolean useStrongRefs) {
+ this.useStrongIndexRefs = useStrongRefs;
+ }
+
+ /**
* Get size in bytes of a single window mapped or read in from the pack
* file.
*
@@ -270,6 +299,8 @@ public class WindowCacheConfig {
setPackedGitUseStrongRefs(rc.getBoolean(CONFIG_CORE_SECTION,
CONFIG_KEY_PACKED_GIT_USE_STRONGREFS,
isPackedGitUseStrongRefs()));
+ setPackedIndexGitUseStrongRefs(rc.getBoolean(CONFIG_CORE_SECTION,
+ CONFIG_KEY_PACKED_INDEX_GIT_USE_STRONGREFS, isPackedIndexGitUseStrongRefs()));
setPackedGitOpenFiles(rc.getInt(CONFIG_CORE_SECTION, null,
CONFIG_KEY_PACKED_GIT_OPENFILES, getPackedGitOpenFiles()));
setPackedGitLimit(rc.getLong(CONFIG_CORE_SECTION, null,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
index be87e07f22..d524524612 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
@@ -268,8 +268,9 @@ public class PackConfig {
public static final int DEFAULT_MIN_BYTES_FOR_OBJ_SIZE_INDEX = -1;
/**
- * Default max time to spend during the search for reuse phase. This
- * optimization is disabled by default: {@value}
+ * Default max time to spend during the search for reuse phase.
+ *
+ * This optimization is disabled by default: {@link Integer#MAX_VALUE} seconds.
*
* @see #setSearchForReuseTimeout(Duration)
* @since 5.13
@@ -1228,7 +1229,7 @@ public class PackConfig {
/**
* Get the max time to spend during the search for reuse phase.
*
- * Default setting: {@value #DEFAULT_SEARCH_FOR_REUSE_TIMEOUT}
+ * Default setting: {@link #DEFAULT_SEARCH_FOR_REUSE_TIMEOUT}
*
* @return the maximum time to spend during the search for reuse phase.
* @since 5.13
@@ -1240,7 +1241,7 @@ public class PackConfig {
/**
* Set the age in days that marks a branch as "inactive".
*
- * Default setting: {@value #DEFAULT_BITMAP_INACTIVE_BRANCH_AGE_IN_DAYS}
+ * Default setting: {@link #DEFAULT_BITMAP_INACTIVE_BRANCH_AGE_IN_DAYS}
*
* @param ageInDays
* the age in days that marks a branch as "inactive"
@@ -1277,7 +1278,7 @@ public class PackConfig {
* @param timeout
* max time allowed during the search for reuse phase
*
- * Default setting: {@value #DEFAULT_SEARCH_FOR_REUSE_TIMEOUT}
+ * Default setting: {@link #DEFAULT_SEARCH_FOR_REUSE_TIMEOUT}
* @since 5.13
*/
public void setSearchForReuseTimeout(Duration timeout) {
@@ -1416,7 +1417,6 @@ public class PackConfig {
CONFIG_KEY_PRUNE_PRESERVED, DEFAULT_PRUNE_PRESERVED));
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder b = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleConflict.java b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleConflict.java
index 856eb725dd..f09e1a5171 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleConflict.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleConflict.java
@@ -55,9 +55,11 @@ public class SubmoduleConflict extends Sequence {
private final ObjectId objectId;
/**
- * Create a SubmoduleConflict for the given submodule object id
- * @param objectId
- */
+ * Create a SubmoduleConflict for the given submodule object id
+ *
+ * @param objectId
+ * the id of the object to create a submodule conflict for
+ */
public SubmoduleConflict(ObjectId objectId) {
super();
this.objectId = objectId;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java
index bf77021b0c..7d5836ece2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java
@@ -87,6 +87,7 @@ public class SubmoduleWalk implements AutoCloseable {
* @return generator over submodule index entries. The caller is responsible
* for calling {@link #close()}.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static SubmoduleWalk forIndex(Repository repository)
throws IOException {
@@ -116,6 +117,7 @@ public class SubmoduleWalk implements AutoCloseable {
* @return generator at given path. The caller is responsible for calling
* {@link #close()}. Null if no submodule at given path.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static SubmoduleWalk forPath(Repository repository,
AnyObjectId treeId, String path) throws IOException {
@@ -150,6 +152,7 @@ public class SubmoduleWalk implements AutoCloseable {
* @return generator at given path. The caller is responsible for calling
* {@link #close()}. Null if no submodule at given path.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static SubmoduleWalk forPath(Repository repository,
AbstractTreeIterator iterator, String path) throws IOException {
@@ -193,6 +196,7 @@ public class SubmoduleWalk implements AutoCloseable {
* submodule path
* @return repository or null if repository doesn't exist
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static Repository getSubmoduleRepository(final Repository parent,
final String path) throws IOException {
@@ -209,6 +213,7 @@ public class SubmoduleWalk implements AutoCloseable {
* submodule path
* @return repository or null if repository doesn't exist
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static Repository getSubmoduleRepository(final File parent,
final String path) throws IOException {
@@ -220,11 +225,14 @@ public class SubmoduleWalk implements AutoCloseable {
* abstraction
*
* @param parent
+ * {@link Repository} that contains the submodule
* @param path
+ * of the working tree of the submodule
* @param fs
* the file system abstraction to be used
* @return repository or null if repository doesn't exist
* @throws IOException
+ * if an IO error occurred
* @since 4.10
*/
public static Repository getSubmoduleRepository(final File parent,
@@ -249,7 +257,7 @@ public class SubmoduleWalk implements AutoCloseable {
* @return the {@link Repository} of the submodule, or {@code null} if it
* doesn't exist
* @throws IOException
- * on errors
+ * if an IO error occurred
* @since 5.6
*/
public static Repository getSubmoduleRepository(File parent, String path,
@@ -286,6 +294,7 @@ public class SubmoduleWalk implements AutoCloseable {
* absolute or relative URL of the submodule repository
* @return resolved URL
* @throws java.io.IOException
+ * if an IO error occurred
*/
public static String getSubmoduleRemoteUrl(final Repository parent,
final String url) throws IOException {
@@ -369,6 +378,7 @@ public class SubmoduleWalk implements AutoCloseable {
* @param repository
* the {@link org.eclipse.jgit.lib.Repository}.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public SubmoduleWalk(Repository repository) throws IOException {
this.repository = repository;
@@ -419,13 +429,14 @@ public class SubmoduleWalk implements AutoCloseable {
* The root tree is not read until the first submodule is encountered by the
* walk.
* <p>
- * This method need only be called if constructing a walk manually instead of
- * with one of the static factory methods above.
+ * This method need only be called if constructing a walk manually instead
+ * of with one of the static factory methods above.
*
* @param id
* ID of a tree containing .gitmodules
* @return this generator
* @throws java.io.IOException
+ * if an IO error occurred
*/
public SubmoduleWalk setRootTree(AnyObjectId id) throws IOException {
final CanonicalTreeParser p = new CanonicalTreeParser();
@@ -448,6 +459,7 @@ public class SubmoduleWalk implements AutoCloseable {
* @throws java.io.IOException
* if an error occurred, or if the repository is bare
* @throws org.eclipse.jgit.errors.ConfigInvalidException
+ * if .gitmodules config is invalid
*/
public SubmoduleWalk loadModulesConfig() throws IOException, ConfigInvalidException {
if (rootTree == null) {
@@ -512,11 +524,13 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @param repository
* the repository to check
- * @return <code>true</code> if the working tree contains a .gitmodules file,
- * <code>false</code> otherwise. Always returns <code>false</code>
- * for bare repositories.
+ * @return <code>true</code> if the working tree contains a .gitmodules
+ * file, <code>false</code> otherwise. Always returns
+ * <code>false</code> for bare repositories.
* @throws java.io.IOException
- * @throws CorruptObjectException if any.
+ * if an IO error occurred
+ * @throws CorruptObjectException
+ * if a corrupt object was found
* @since 3.6
*/
public static boolean containsGitModulesFile(Repository repository)
@@ -560,6 +574,7 @@ public class SubmoduleWalk implements AutoCloseable {
* object.
* @return this generator
* @throws org.eclipse.jgit.errors.CorruptObjectException
+ * if a corrupt object was found
*/
public SubmoduleWalk setTree(AbstractTreeIterator iterator)
throws CorruptObjectException {
@@ -574,10 +589,11 @@ public class SubmoduleWalk implements AutoCloseable {
* an {@link org.eclipse.jgit.lib.AnyObjectId} object.
* @return this generator
* @throws java.io.IOException
+ * if an IO error occurred
* @throws IncorrectObjectTypeException
- * if any.
+ * if object has unexpected type
* @throws MissingObjectException
- * if any.
+ * if object is missing
*/
public SubmoduleWalk setTree(AnyObjectId treeId) throws IOException {
walk.addTree(treeId);
@@ -614,6 +630,7 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return true if entry found, false otherwise
* @throws java.io.IOException
+ * if an IO error occurred
*/
public boolean next() throws IOException {
while (walk.next()) {
@@ -656,9 +673,11 @@ public class SubmoduleWalk implements AutoCloseable {
* name of .git/config)
*
* @since 4.10
- * @return name
+ * @return name of the submodule
* @throws ConfigInvalidException
+ * if the .gitmodules config is invalid
* @throws IOException
+ * if an IO error occurred
*/
public String getModuleName() throws IOException, ConfigInvalidException {
lazyLoadModulesConfig();
@@ -680,7 +699,9 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return configured path
* @throws org.eclipse.jgit.errors.ConfigInvalidException
+ * if .gitmodules config is invalid
* @throws java.io.IOException
+ * if an IO error occurred
*/
public String getModulesPath() throws IOException, ConfigInvalidException {
lazyLoadModulesConfig();
@@ -694,7 +715,9 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return configured URL
* @throws org.eclipse.jgit.errors.ConfigInvalidException
+ * if .gitmodules config is invalid
* @throws java.io.IOException
+ * if an IO error occurred
*/
public String getConfigUrl() throws IOException, ConfigInvalidException {
return repoConfig.getString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
@@ -707,7 +730,9 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return configured URL
* @throws org.eclipse.jgit.errors.ConfigInvalidException
+ * if .gitmodules config is invalid
* @throws java.io.IOException
+ * if an IO error occurred
*/
public String getModulesUrl() throws IOException, ConfigInvalidException {
lazyLoadModulesConfig();
@@ -721,7 +746,9 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return update value
* @throws org.eclipse.jgit.errors.ConfigInvalidException
+ * if .gitmodules config is invalid
* @throws java.io.IOException
+ * if an IO error occurred
*/
public String getConfigUpdate() throws IOException, ConfigInvalidException {
return repoConfig.getString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
@@ -734,7 +761,9 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return update value
* @throws org.eclipse.jgit.errors.ConfigInvalidException
+ * if .gitmodules config is invalid
* @throws java.io.IOException
+ * if an IO error occurred
*/
public String getModulesUpdate() throws IOException, ConfigInvalidException {
lazyLoadModulesConfig();
@@ -748,7 +777,9 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return ignore value
* @throws org.eclipse.jgit.errors.ConfigInvalidException
+ * if .gitmodules config is invalid
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.6
*/
public IgnoreSubmoduleMode getModulesIgnore() throws IOException,
@@ -771,6 +802,7 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return repository or null if non-existent
* @throws java.io.IOException
+ * if an IO error occurred
*/
public Repository getRepository() throws IOException {
return getSubmoduleRepository(repository.getWorkTree(), path,
@@ -782,6 +814,7 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return object id of HEAD reference
* @throws java.io.IOException
+ * if an IO error occurred
*/
public ObjectId getHead() throws IOException {
try (Repository subRepo = getRepository()) {
@@ -797,6 +830,7 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return ref name, null on failures
* @throws java.io.IOException
+ * if an IO error occurred
*/
public String getHeadRef() throws IOException {
try (Repository subRepo = getRepository()) {
@@ -816,7 +850,9 @@ public class SubmoduleWalk implements AutoCloseable {
*
* @return resolved remote URL
* @throws java.io.IOException
+ * if an IO error occurred
* @throws org.eclipse.jgit.errors.ConfigInvalidException
+ * if .gitmodules config is invalid
*/
public String getRemoteUrl() throws IOException, ConfigInvalidException {
String url = getModulesUrl();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AbstractAdvertiseRefsHook.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AbstractAdvertiseRefsHook.java
index fb9c14576a..260a85e0e4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AbstractAdvertiseRefsHook.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AbstractAdvertiseRefsHook.java
@@ -58,7 +58,6 @@ import org.eclipse.jgit.revwalk.RevWalk;
* @since 2.0
*/
public abstract class AbstractAdvertiseRefsHook implements AdvertiseRefsHook {
- /** {@inheritDoc} */
@Override
public void advertiseRefs(UploadPack uploadPack)
throws ServiceMayNotContinueException {
@@ -67,7 +66,6 @@ public abstract class AbstractAdvertiseRefsHook implements AdvertiseRefsHook {
}
/**
- * {@inheritDoc}
*/
@Override
public void advertiseRefs(ReceivePack receivePack)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHook.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHook.java
index 84c36915a2..6381f1e946 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHook.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHook.java
@@ -92,6 +92,7 @@ public interface AdvertiseRefsHook {
* @throws org.eclipse.jgit.transport.ServiceMayNotContinueException
* abort; the message will be sent to the user.
* @throws IOException
+ * if an IO error occurred
* @since 5.6
*/
void advertiseRefs(ReceivePack receivePack)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java
index eb9c673ef3..6db0775769 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java
@@ -50,9 +50,6 @@ public class AdvertiseRefsHookChain implements AdvertiseRefsHook {
}
}
- /**
- * {@inheritDoc}
- */
@Override
public void advertiseRefs(ReceivePack rp)
throws IOException {
@@ -60,7 +57,6 @@ public class AdvertiseRefsHookChain implements AdvertiseRefsHook {
hooks[i].advertiseRefs(rp);
}
- /** {@inheritDoc} */
@Override
public void advertiseRefs(UploadPack rp)
throws ServiceMayNotContinueException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AmazonS3.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AmazonS3.java
index b873925316..9d9f5495fe 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AmazonS3.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AmazonS3.java
@@ -757,8 +757,19 @@ public class AmazonS3 {
final XMLReader xr;
try {
- xr = SAXParserFactory.newInstance().newSAXParser()
- .getXMLReader();
+ SAXParserFactory saxParserFactory = SAXParserFactory
+ .newInstance();
+ saxParserFactory.setNamespaceAware(true);
+ saxParserFactory.setFeature(
+ "http://xml.org/sax/features/external-general-entities", //$NON-NLS-1$
+ false);
+ saxParserFactory.setFeature(
+ "http://xml.org/sax/features/external-parameter-entities", //$NON-NLS-1$
+ false);
+ saxParserFactory.setFeature(
+ "http://apache.org/xml/features/disallow-doctype-decl", //$NON-NLS-1$
+ true);
+ xr = saxParserFactory.newSAXParser().getXMLReader();
} catch (SAXException | ParserConfigurationException e) {
throw new IOException(
JGitText.get().noXMLParserAvailable, e);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseConnection.java
index 9e229a18ad..3ac9f59ba6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseConnection.java
@@ -38,25 +38,21 @@ public abstract class BaseConnection implements Connection {
private Writer messageWriter;
- /** {@inheritDoc} */
@Override
public Map<String, Ref> getRefsMap() {
return advertisedRefs;
}
- /** {@inheritDoc} */
@Override
public final Collection<Ref> getRefs() {
return advertisedRefs.values();
}
- /** {@inheritDoc} */
@Override
public final Ref getRef(String name) {
return advertisedRefs.get(name);
}
- /** {@inheritDoc} */
@Override
public String getMessages() {
return messageWriter != null ? messageWriter.toString() : ""; //$NON-NLS-1$
@@ -84,7 +80,6 @@ public abstract class BaseConnection implements Connection {
peerUserAgent = agent;
}
- /** {@inheritDoc} */
@Override
public abstract void close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseFetchConnection.java
index 6954bd9a0e..48992f3e3b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseFetchConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseFetchConnection.java
@@ -31,7 +31,6 @@ import org.eclipse.jgit.lib.Ref;
*/
abstract class BaseFetchConnection extends BaseConnection implements
FetchConnection {
- /** {@inheritDoc} */
@Override
public final void fetch(final ProgressMonitor monitor,
final Collection<Ref> want, final Set<ObjectId> have)
@@ -39,7 +38,6 @@ abstract class BaseFetchConnection extends BaseConnection implements
fetch(monitor, want, have, null);
}
- /** {@inheritDoc} */
@Override
public final void fetch(final ProgressMonitor monitor,
final Collection<Ref> want, final Set<ObjectId> have,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java
index 09c559d7b5..bac5025f83 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java
@@ -64,6 +64,7 @@ import org.eclipse.jgit.util.io.TimeoutOutputStream;
*/
abstract class BasePackConnection extends BaseConnection {
+ /** The capability prefix for a symlink */
protected static final String CAPABILITY_SYMREF_PREFIX = "symref="; //$NON-NLS-1$
/** The repository this transport fetches into, or pushes out of. */
@@ -72,7 +73,7 @@ abstract class BasePackConnection extends BaseConnection {
/** Remote repository location. */
protected final URIish uri;
- /** A transport connected to {@link #uri}. */
+ /** A transport connected to {@link BasePackConnection#uri}. */
protected final Transport transport;
/** Low-level input stream, if a timeout was configured. */
@@ -81,7 +82,10 @@ abstract class BasePackConnection extends BaseConnection {
/** Low-level output stream, if a timeout was configured. */
protected TimeoutOutputStream timeoutOut;
- /** Timer to manage {@link #timeoutIn} and {@link #timeoutOut}. */
+ /**
+ * Timer to manage {@link #timeoutIn} and
+ * {@link BasePackConnection#timeoutOut}.
+ */
private InterruptTimer myTimer;
/** Input stream reading from the remote. */
@@ -90,13 +94,16 @@ abstract class BasePackConnection extends BaseConnection {
/** Output stream sending to the remote. */
protected OutputStream out;
- /** Packet line decoder around {@link #in}. */
+ /** Packet line decoder around {@link BasePackConnection#in}. */
protected PacketLineIn pckIn;
- /** Packet line encoder around {@link #out}. */
+ /** Packet line encoder around {@link BasePackConnection#out}. */
protected PacketLineOut pckOut;
- /** Send {@link PacketLineOut#end()} before closing {@link #out}? */
+ /**
+ * Send {@link PacketLineOut#end()} before closing
+ * {@link BasePackConnection#out}?
+ */
protected boolean outNeedsEnd;
/** True if this is a stateless RPC connection. */
@@ -486,7 +493,6 @@ abstract class BasePackConnection extends BaseConnection {
* <p>
* If refMap already contains an entry for symRef.key, it is replaced.
* </p>
- * </p>
* <p>
* For example, given:
* </p>
@@ -627,7 +633,6 @@ abstract class BasePackConnection extends BaseConnection {
}
}
- /** {@inheritDoc} */
@Override
public String getPeerUserAgent() {
String agent = remoteCapabilities.get(OPTION_AGENT);
@@ -642,7 +647,6 @@ abstract class BasePackConnection extends BaseConnection {
return new PackProtocolException(uri, MessageFormat.format(JGitText.get().invalidRefAdvertisementLine, line));
}
- /** {@inheritDoc} */
@Override
public void close() {
if (out != null) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
index 8909380176..cdda3c0388 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
@@ -334,7 +334,6 @@ public abstract class BasePackFetchConnection extends BasePackConnection
}
}
- /** {@inheritDoc} */
@Override
public final void fetch(final ProgressMonitor monitor,
final Collection<Ref> want, final Set<ObjectId> have)
@@ -342,7 +341,6 @@ public abstract class BasePackFetchConnection extends BasePackConnection
fetch(monitor, want, have, null);
}
- /** {@inheritDoc} */
@Override
public final void fetch(final ProgressMonitor monitor,
final Collection<Ref> want, final Set<ObjectId> have,
@@ -351,25 +349,21 @@ public abstract class BasePackFetchConnection extends BasePackConnection
doFetch(monitor, want, have, outputStream);
}
- /** {@inheritDoc} */
@Override
public boolean didFetchIncludeTags() {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean didFetchTestConnectivity() {
return false;
}
- /** {@inheritDoc} */
@Override
public void setPackLockMessage(String message) {
lockMessage = message;
}
- /** {@inheritDoc} */
@Override
public Collection<PackLock> getPackLocks() {
if (packLock != null)
@@ -659,7 +653,6 @@ public abstract class BasePackFetchConnection extends BasePackConnection
return gotReady;
}
- /** {@inheritDoc} */
@Override
public void close() {
if (walk != null)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java
index adc1c9849d..9a96fdcf37 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java
@@ -122,7 +122,6 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen
useBitmaps = transport.isPushUseBitmaps();
}
- /** {@inheritDoc} */
@Override
public void push(final ProgressMonitor monitor,
final Map<String, RemoteRefUpdate> refUpdates)
@@ -130,7 +129,6 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen
push(monitor, refUpdates, null);
}
- /** {@inheritDoc} */
@Override
public void push(final ProgressMonitor monitor,
final Map<String, RemoteRefUpdate> refUpdates, OutputStream outputStream)
@@ -139,7 +137,6 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen
doPush(monitor, refUpdates, outputStream);
}
- /** {@inheritDoc} */
@Override
protected TransportException noRepository(Throwable cause) {
// Sadly we cannot tell the "invalid URI" case from "push not allowed".
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleFetchConnection.java
index f04e573feb..5299dfa981 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleFetchConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleFetchConnection.java
@@ -147,13 +147,11 @@ class BundleFetchConnection extends BaseFetchConnection {
return line.toString();
}
- /** {@inheritDoc} */
@Override
public boolean didFetchTestConnectivity() {
return false;
}
- /** {@inheritDoc} */
@Override
protected void doFetch(final ProgressMonitor monitor,
final Collection<Ref> want, final Set<ObjectId> have)
@@ -174,13 +172,11 @@ class BundleFetchConnection extends BaseFetchConnection {
}
}
- /** {@inheritDoc} */
@Override
public void setPackLockMessage(String message) {
lockMessage = message;
}
- /** {@inheritDoc} */
@Override
public Collection<PackLock> getPackLocks() {
if (packLock != null)
@@ -258,7 +254,6 @@ class BundleFetchConnection extends BaseFetchConnection {
}
}
- /** {@inheritDoc} */
@Override
public void close() {
if (bin != null) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ChainingCredentialsProvider.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ChainingCredentialsProvider.java
index 6a4cfca865..3bae0eae5a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ChainingCredentialsProvider.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ChainingCredentialsProvider.java
@@ -39,7 +39,6 @@ public class ChainingCredentialsProvider extends CredentialsProvider {
Arrays.asList(providers));
}
- /** {@inheritDoc} */
@Override
public boolean isInteractive() {
for (CredentialsProvider p : credentialProviders)
@@ -48,7 +47,6 @@ public class ChainingCredentialsProvider extends CredentialsProvider {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean supports(CredentialItem... items) {
for (CredentialsProvider p : credentialProviders)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialItem.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialItem.java
index 2b09424526..78c5c6374f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialItem.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialItem.java
@@ -115,8 +115,8 @@ public abstract class CredentialItem {
}
/**
- *
* @param newValue
+ * the new value
*/
public void setValue(String newValue) {
value = newValue;
@@ -223,6 +223,7 @@ public abstract class CredentialItem {
* Set the new value.
*
* @param newValue
+ * the new value
*/
public void setValue(boolean newValue) {
value = newValue;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FilterSpec.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FilterSpec.java
index a8cf849fed..12a7dd3af4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FilterSpec.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FilterSpec.java
@@ -55,7 +55,6 @@ public final class FilterSpec {
return val.testBit(type);
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object obj) {
if (!(obj instanceof ObjectTypes)) {
@@ -66,7 +65,6 @@ public final class FilterSpec {
return other.val.equals(val);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return val.hashCode();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FtpChannel.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FtpChannel.java
index 44656c1397..6d5b5e61ec 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FtpChannel.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FtpChannel.java
@@ -71,6 +71,7 @@ public interface FtpChannel {
* @param unit
* of the {@code timeout}
* @throws IOException
+ * if an IO error occurred
*/
void connect(int timeout, TimeUnit unit) throws IOException;
@@ -97,6 +98,7 @@ public interface FtpChannel {
/**
* @return the current remote directory path
* @throws IOException
+ * if an IO error occurred
*/
String pwd() throws IOException;
@@ -118,6 +120,7 @@ public interface FtpChannel {
* of the directory to list
* @return the directory entries
* @throws IOException
+ * if an IO error occurred
*/
Collection<DirEntry> ls(String path) throws IOException;
@@ -128,6 +131,7 @@ public interface FtpChannel {
* @param path
* to delete
* @throws IOException
+ * if an IO error occurred
*/
void rmdir(String path) throws IOException;
@@ -137,6 +141,7 @@ public interface FtpChannel {
* @param path
* to create
* @throws IOException
+ * if an IO error occurred
*/
void mkdir(String path) throws IOException;
@@ -148,6 +153,7 @@ public interface FtpChannel {
*
* @return the stream to read from
* @throws IOException
+ * if an IO error occurred
*/
InputStream get(String path) throws IOException;
@@ -160,6 +166,7 @@ public interface FtpChannel {
*
* @return the stream to read from
* @throws IOException
+ * if an IO error occurred
*/
OutputStream put(String path) throws IOException;
@@ -204,6 +211,7 @@ public interface FtpChannel {
* @param to
* new name of the file
* @throws IOException
+ * if an IO error occurred
* @see <a href=
* "http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html">stdio.h:
* rename()</a>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/HMACSHA1NonceGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/HMACSHA1NonceGenerator.java
index 14d6c1ec14..655b4605e4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/HMACSHA1NonceGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/HMACSHA1NonceGenerator.java
@@ -35,9 +35,8 @@ public class HMACSHA1NonceGenerator implements NonceGenerator {
*
* @param seed
* seed the generator
- * @throws java.lang.IllegalStateException
*/
- public HMACSHA1NonceGenerator(String seed) throws IllegalStateException {
+ public HMACSHA1NonceGenerator(String seed) {
try {
byte[] keyBytes = seed.getBytes(ISO_8859_1);
SecretKeySpec signingKey = new SecretKeySpec(keyBytes, "HmacSHA1"); //$NON-NLS-1$
@@ -48,16 +47,13 @@ public class HMACSHA1NonceGenerator implements NonceGenerator {
}
}
- /** {@inheritDoc} */
@Override
- public synchronized String createNonce(Repository repo, long timestamp)
- throws IllegalStateException {
+ public synchronized String createNonce(Repository repo, long timestamp) {
String input = repo.getIdentifier() + ":" + String.valueOf(timestamp); //$NON-NLS-1$
byte[] rawHmac = mac.doFinal(input.getBytes(UTF_8));
return Long.toString(timestamp) + "-" + toHex(rawHmac); //$NON-NLS-1$
}
- /** {@inheritDoc} */
@Override
public NonceStatus verify(String received, String sent,
Repository db, boolean allowSlop, int slop) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java
index aec5b89c7e..3db0421d69 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java
@@ -224,7 +224,9 @@ abstract class HttpAuthMethod {
* Update this method with the given username and password pair.
*
* @param user
+ * username
* @param pass
+ * password
*/
abstract void authorize(String user, String pass);
@@ -232,7 +234,9 @@ abstract class HttpAuthMethod {
* Update connection properties based on this authentication method.
*
* @param conn
+ * the connection to configure
* @throws IOException
+ * if an IO error occurred
*/
abstract void configureRequest(HttpConnection conn) throws IOException;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalFetchConnection.java
index 18dc792eb1..9a699a877f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalFetchConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalFetchConnection.java
@@ -103,7 +103,6 @@ class InternalFetchConnection<C> extends BasePackFetchConnection {
readAdvertisedRefs();
}
- /** {@inheritDoc} */
@Override
public void close() {
super.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalPushConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalPushConnection.java
index d2b0ef4a29..a23fdc94ad 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalPushConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/InternalPushConnection.java
@@ -99,7 +99,6 @@ class InternalPushConnection<C> extends BasePackPushConnection {
readAdvertisedRefs();
}
- /** {@inheritDoc} */
@Override
public void close() {
super.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/LsRefsV2Request.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/LsRefsV2Request.java
index 856047ee19..b2799e1362 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/LsRefsV2Request.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/LsRefsV2Request.java
@@ -130,6 +130,7 @@ public final class LsRefsV2Request {
/**
* @param value
+ * ref prefix values
* @return the Builder
*/
public Builder setRefPrefixes(List<String> value) {
@@ -139,6 +140,7 @@ public final class LsRefsV2Request {
/**
* @param value
+ * of symrefs
* @return the Builder
*/
public Builder setSymrefs(boolean value) {
@@ -148,6 +150,7 @@ public final class LsRefsV2Request {
/**
* @param value
+ * of peel
* @return the Builder
*/
public Builder setPeel(boolean value) {
@@ -203,7 +206,11 @@ public final class LsRefsV2Request {
return this;
}
- /** @return LsRefsV2Request */
+ /**
+ * Builds the request
+ *
+ * @return LsRefsV2Request the request
+ */
public LsRefsV2Request build() {
return new LsRefsV2Request(
Collections.unmodifiableList(refPrefixes), symrefs, peel,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/NetRCCredentialsProvider.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/NetRCCredentialsProvider.java
index 6531b17e23..e32530cc9b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/NetRCCredentialsProvider.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/NetRCCredentialsProvider.java
@@ -67,7 +67,6 @@ public class NetRCCredentialsProvider extends CredentialsProvider {
CredentialsProvider.setDefault(new NetRCCredentialsProvider());
}
- /** {@inheritDoc} */
@Override
public boolean supports(CredentialItem... items) {
for (CredentialItem i : items) {
@@ -81,7 +80,6 @@ public class NetRCCredentialsProvider extends CredentialsProvider {
return true;
}
- /** {@inheritDoc} */
@Override
public boolean get(URIish uri, CredentialItem... items)
throws UnsupportedCredentialItem {
@@ -112,7 +110,6 @@ public class NetRCCredentialsProvider extends CredentialsProvider {
return !isAnyNull(items);
}
- /** {@inheritDoc} */
@Override
public boolean isInteractive() {
return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/NonceGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/NonceGenerator.java
index 2541ff1393..30e80e0783 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/NonceGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/NonceGenerator.java
@@ -31,10 +31,8 @@ public interface NonceGenerator {
* @param timestamp
* The current time in seconds.
* @return The nonce to be signed by the pusher
- * @throws java.lang.IllegalStateException
*/
- String createNonce(Repository db, long timestamp)
- throws IllegalStateException;
+ String createNonce(Repository db, long timestamp);
/**
* Verify trustworthiness of the received nonce.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ObjectInfoRequest.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ObjectInfoRequest.java
index 86a2716675..2a52d7fd7f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ObjectInfoRequest.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ObjectInfoRequest.java
@@ -53,6 +53,7 @@ public final class ObjectInfoRequest {
/**
* @param value
+ * of objectIds
* @return the Builder
*/
public Builder setObjectIDs(List<ObjectId> value) {
@@ -60,7 +61,11 @@ public final class ObjectInfoRequest {
return this;
}
- /** @return ObjectInfoRequest */
+ /**
+ * Build the request
+ *
+ * @return ObjectInfoRequest the request
+ */
public ObjectInfoRequest build() {
return new ObjectInfoRequest(
Collections.unmodifiableList(objectIDs));
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java
index 9bb38bbef4..f09731d290 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java
@@ -1102,6 +1102,7 @@ public abstract class PackParser {
* @param data
* raw content of the object.
* @throws org.eclipse.jgit.errors.CorruptObjectException
+ * if a corrupt object was found
* @since 4.9
*/
protected void verifySafeObject(final AnyObjectId id, final int type,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackedObjectInfo.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackedObjectInfo.java
index bf7997ec62..d7ef4f8f0a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackedObjectInfo.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackedObjectInfo.java
@@ -117,6 +117,7 @@ public class PackedObjectInfo extends ObjectIdOwnerMap.Entry {
* Size in storage
*
* @param sizeBeforeInflating
+ * size before inflating
*/
void setSize(long sizeBeforeInflating) {
this.sizeBeforeInflating = sizeBeforeInflating;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java
index 4d53e1b261..f9d2c38ad3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java
@@ -47,7 +47,6 @@ public class PostReceiveHookChain implements PostReceiveHook {
}
}
- /** {@inheritDoc} */
@Override
public void onPostReceive(ReceivePack rp,
Collection<ReceiveCommand> commands) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostUploadHookChain.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostUploadHookChain.java
index 4334888a9a..072f43f41b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostUploadHookChain.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostUploadHookChain.java
@@ -80,7 +80,6 @@ public class PostUploadHookChain implements PostUploadHook {
}
}
- /** {@inheritDoc} */
@Override
public void onPostUpload(PackStatistics stats) {
for (PostUploadHook hook : hooks) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java
index dffa30da8e..2a5522bb4c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java
@@ -46,7 +46,6 @@ public class PreReceiveHookChain implements PreReceiveHook {
}
}
- /** {@inheritDoc} */
@Override
public void onPreReceive(ReceivePack rp,
Collection<ReceiveCommand> commands) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreUploadHookChain.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreUploadHookChain.java
index 9c28abed95..dc703d0b11 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreUploadHookChain.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreUploadHookChain.java
@@ -48,7 +48,6 @@ public class PreUploadHookChain implements PreUploadHook {
}
}
- /** {@inheritDoc} */
@Override
public void onBeginNegotiateRound(UploadPack up,
Collection<? extends ObjectId> wants, int cntOffered)
@@ -58,7 +57,6 @@ public class PreUploadHookChain implements PreUploadHook {
}
}
- /** {@inheritDoc} */
@Override
public void onEndNegotiateRound(UploadPack up,
Collection<? extends ObjectId> wants, int cntCommon,
@@ -69,7 +67,6 @@ public class PreUploadHookChain implements PreUploadHook {
}
}
- /** {@inheritDoc} */
@Override
public void onSendPack(UploadPack up,
Collection<? extends ObjectId> wants,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV0Parser.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV0Parser.java
index 9d055519a5..f1afeab020 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV0Parser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV0Parser.java
@@ -51,7 +51,9 @@ final class ProtocolV0Parser {
* incoming lines. This method will read until an END line.
* @return a FetchV0Request with the data received in the wire.
* @throws PackProtocolException
+ * if a protocol occurred
* @throws IOException
+ * if an IO error occurred
*/
FetchV0Request recvWants(PacketLineIn pckIn)
throws PackProtocolException, IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificate.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificate.java
index d9831c7701..437abb0639 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificate.java
@@ -222,13 +222,11 @@ public class PushCertificate {
return sb;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return signature.hashCode();
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
if (!(o instanceof PushCertificate)) {
@@ -259,7 +257,6 @@ public class PushCertificate {
return true;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return getClass().getSimpleName() + '['
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateIdent.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateIdent.java
index 94d1169abb..bd76b34aef 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateIdent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateIdent.java
@@ -228,20 +228,17 @@ public class PushCertificateIdent {
return tzOffset;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
return (o instanceof PushCertificateIdent)
&& raw.equals(((PushCertificateIdent) o).raw);
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
return raw.hashCode();
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushConnection.java
index 51c8558bfd..32c443f0f3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushConnection.java
@@ -43,17 +43,14 @@ public interface PushConnection extends Connection {
* and sending objects that remote repository need to have a consistent
* objects graph from new refs.
* <p>
- * <p>
* Only one call per connection is allowed. Subsequent calls will result in
* {@link org.eclipse.jgit.errors.TransportException}.
- * </p>
* <p>
* Implementation may use local repository to send a minimum set of objects
* needed by remote repository in efficient way.
* {@link org.eclipse.jgit.transport.Transport#isPushThin()} should be
* honored if applicable. refUpdates should be filled with information about
* status of each update.
- * </p>
*
* @param monitor
* progress monitor to update the end-user about the amount of
@@ -90,17 +87,14 @@ public interface PushConnection extends Connection {
* and sending objects that remote repository need to have a consistent
* objects graph from new refs.
* <p>
- * <p>
* Only one call per connection is allowed. Subsequent calls will result in
* {@link org.eclipse.jgit.errors.TransportException}.
- * </p>
* <p>
* Implementation may use local repository to send a minimum set of objects
* needed by remote repository in efficient way.
* {@link org.eclipse.jgit.transport.Transport#isPushThin()} should be
* honored if applicable. refUpdates should be filled with information about
* status of each update.
- * </p>
*
* @param monitor
* progress monitor to update the end-user about the amount of
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushProcess.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushProcess.java
index b59ae0c450..8f90f326d3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushProcess.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushProcess.java
@@ -76,6 +76,7 @@ class PushProcess {
* {@link PrePushHook} to run after the remote advertisement has
* been gotten
* @throws TransportException
+ * if a protocol error occurred during push/fetch
*/
PushProcess(Transport transport, Collection<RemoteRefUpdate> toPush,
PrePushHook prePush) throws TransportException {
@@ -96,6 +97,7 @@ class PushProcess {
* @param out
* OutputStream to write messages to
* @throws TransportException
+ * if a protocol error occurred during push/fetch
*/
PushProcess(Transport transport, Collection<RemoteRefUpdate> toPush,
PrePushHook prePush, OutputStream out) throws TransportException {
@@ -272,6 +274,7 @@ class PushProcess {
* {@link ObjectId} of the new commit
* @return {@code true} if the update fast-forwards, {@code false} otherwise
* @throws TransportException
+ * if a protocol error occurred during push/fetch
*/
private boolean isFastForward(ObjectId oldOid, ObjectId newOid)
throws TransportException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java
index ab411600f1..bfc75f036c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java
@@ -849,7 +849,6 @@ public class ReceiveCommand {
JGitText.get().lockError, err.getMessage()));
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
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 816cec89af..9a61774334 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
@@ -460,6 +460,7 @@ public class ReceivePack {
* null, assumes the default set of additional haves from the
* repository.
* @throws IOException
+ * if an IO error occurred
*/
public void setAdvertisedRefs(Map<String, Ref> allRefs,
Set<ObjectId> additionalHaves) throws IOException {
@@ -1024,6 +1025,7 @@ public class ReceivePack {
* Set an error handler for {@link ReceiveCommand}.
*
* @param receiveCommandErrorHandler
+ * the error handler
* @since 5.7
*/
public void setReceiveCommandErrorHandler(
@@ -1212,6 +1214,7 @@ public class ReceivePack {
*
* @return advertised refs, or the default if not explicitly advertised.
* @throws IOException
+ * if an IO error occurred
*/
private Map<String, Ref> getAdvertisedOrDefaultRefs() throws IOException {
if (refs == null)
@@ -1348,7 +1351,8 @@ public class ReceivePack {
/**
* Receive a list of commands from the input.
*
- * @throws java.io.IOException
+ * @throws IOException
+ * if an IO error occurred
*/
private void recvCommands() throws IOException {
PacketLineIn pck = maxCommandBytes > 0
@@ -1936,7 +1940,8 @@ public class ReceivePack {
/**
* Close and flush (if necessary) the underlying streams.
*
- * @throws java.io.IOException
+ * @throws IOException
+ * if an IO error occurred
*/
private void close() throws IOException {
if (sideBand) {
@@ -2174,6 +2179,7 @@ public class ReceivePack {
* standard error channel of the command execution. For most
* other network connections this should be null.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void receive(final InputStream input, final OutputStream output,
final OutputStream messages) throws IOException {
@@ -2217,6 +2223,7 @@ public class ReceivePack {
* standard error channel of the command execution. For most
* other network connections this should be null.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 5.7
*/
public void receiveWithExceptionPropagation(InputStream input,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefAdvertiser.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefAdvertiser.java
index c525e66848..6b022ea5d1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefAdvertiser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefAdvertiser.java
@@ -173,7 +173,7 @@ public abstract class RefAdvertiser {
/**
* Toggle tag peeling.
* <p>
- * <p>
+ *
* This method must be invoked prior to any of the following:
* <ul>
* <li>{@link #send(Map)}</li>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefLeaseSpec.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefLeaseSpec.java
index 1af3fadadb..8a131c8971 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefLeaseSpec.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefLeaseSpec.java
@@ -58,7 +58,6 @@ public class RefLeaseSpec implements Serializable {
return expected;
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder r = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java
index 61d193593a..0466085b32 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java
@@ -616,7 +616,6 @@ public class RefSpec implements Serializable {
return true;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
int hc = 0;
@@ -627,7 +626,6 @@ public class RefSpec implements Serializable {
return hc;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object obj) {
if (!(obj instanceof RefSpec))
@@ -649,7 +647,6 @@ public class RefSpec implements Serializable {
&& Objects.equals(getDestination(), b.getDestination());
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder r = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteRefUpdate.java
index 218e62c10a..fb3cd21d1a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteRefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteRefUpdate.java
@@ -541,7 +541,6 @@ public class RemoteRefUpdate {
trackingRefUpdate.setResult(localUpdate.update(walk));
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java
index 96c7be5b97..1f96be8e47 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java
@@ -94,7 +94,6 @@ public class SideBandInputStream extends InputStream {
out = outputStream;
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
needDataPacket();
@@ -104,7 +103,6 @@ public class SideBandInputStream extends InputStream {
return rawIn.read();
}
- /** {@inheritDoc} */
@Override
public int read(byte[] b, int off, int len) throws IOException {
int r = 0;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandOutputStream.java
index bb80299fad..b6d840dd81 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandOutputStream.java
@@ -94,14 +94,12 @@ public class SideBandOutputStream extends OutputStream {
writeBuffer();
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
flushBuffer();
out.flush();
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b, int off, int len) throws IOException {
while (0 < len) {
@@ -128,7 +126,6 @@ public class SideBandOutputStream extends OutputStream {
}
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
if (cnt == buffer.length)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandProgressMonitor.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandProgressMonitor.java
index 33308600d9..1e85d81084 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandProgressMonitor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandProgressMonitor.java
@@ -28,7 +28,6 @@ class SideBandProgressMonitor extends BatchingProgressMonitor {
write = true;
}
- /** {@inheritDoc} */
@Override
protected void onUpdate(String taskName, int workCurr, Duration duration) {
StringBuilder s = new StringBuilder();
@@ -37,7 +36,6 @@ class SideBandProgressMonitor extends BatchingProgressMonitor {
send(s);
}
- /** {@inheritDoc} */
@Override
protected void onEndTask(String taskName, int workCurr, Duration duration) {
StringBuilder s = new StringBuilder();
@@ -54,7 +52,6 @@ class SideBandProgressMonitor extends BatchingProgressMonitor {
appendDuration(s, duration);
}
- /** {@inheritDoc} */
@Override
protected void onUpdate(String taskName, int cmp, int totalWork, int pcnt,
Duration duration) {
@@ -64,7 +61,6 @@ class SideBandProgressMonitor extends BatchingProgressMonitor {
send(s);
}
- /** {@inheritDoc} */
@Override
protected void onEndTask(String taskName, int cmp, int totalWork, int pcnt,
Duration duration) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConfigStore.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConfigStore.java
index 1226a6b5ea..b2e2549f12 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConfigStore.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConfigStore.java
@@ -43,6 +43,7 @@ public interface SshConfigStore {
* {@link SshConstants#CONNECTION_ATTEMPTS}, fill those values with defaults
* from the arguments:
* <table>
+ * <caption>Description of arguments</caption>
* <tr>
* <th>ssh config key</th>
* <th>value from argument</th>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConstants.java
index 48cacf0964..41dbdcab51 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConstants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConstants.java
@@ -125,6 +125,25 @@ public final class SshConstants {
/** Key in an ssh config file. */
public static final String NUMBER_OF_PASSWORD_PROMPTS = "NumberOfPasswordPrompts";
+ /**
+ * Path to a shared library of a PKCS11 key provider, or "none".
+ * <p>
+ * If set and not "none", the provider's keys should be used.
+ * </p>
+ *
+ * @since 6.7
+ */
+ public static final String PKCS11_PROVIDER = "PKCS11Provider";
+
+ /**
+ * Non-standard JGit addition: specify the PKCS#11 slot list index of the
+ * token to use. A positive number; defaults to zero; ignored if negative
+ * (in which case zero is used, too).
+ *
+ * @since 6.7
+ */
+ public static final String PKCS11_SLOT_LIST_INDEX = "PKCS11SlotListIndex";
+
/** Key in an ssh config file. */
public static final String PORT = "Port";
@@ -146,8 +165,8 @@ public final class SshConstants {
* Comma-separated list of jump hosts, defining a jump host chain <em>in
* reverse order</em>. Each jump host is a SSH URI or "[user@]host[:port]".
* <p>
- * Reverse order means: to connect A->B->target, one can do in
- * {@code ~/.ssh/config} either of:
+ * Reverse order means: to connect {@literal A -> B -> target}, one can do
+ * in {@code ~/.ssh/config} either of:
* </p>
*
* <pre>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshTransport.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshTransport.java
index 28ec92c706..8d93977a1d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshTransport.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshTransport.java
@@ -108,7 +108,6 @@ public abstract class SshTransport extends TcpTransport {
return sock;
}
- /** {@inheritDoc} */
@Override
public void close() {
if (sock != null) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TestProtocol.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TestProtocol.java
index 1985b66d87..77ab0f676d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TestProtocol.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TestProtocol.java
@@ -81,19 +81,16 @@ public class TestProtocol<C> extends TransportProtocol {
this.handles = new HashMap<>();
}
- /** {@inheritDoc} */
@Override
public String getName() {
return JGitText.get().transportProtoTest;
}
- /** {@inheritDoc} */
@Override
public Set<String> getSchemes() {
return Collections.singleton(SCHEME);
}
- /** {@inheritDoc} */
@Override
public Transport open(URIish uri, Repository local, String remoteName)
throws NotSupportedException, TransportException {
@@ -105,13 +102,11 @@ public class TestProtocol<C> extends TransportProtocol {
return new TransportInternal(local, uri, h);
}
- /** {@inheritDoc} */
@Override
public Set<URIishField> getRequiredFields() {
return EnumSet.of(URIishField.HOST, URIishField.PATH);
}
- /** {@inheritDoc} */
@Override
public Set<URIishField> getOptionalFields() {
return Collections.emptySet();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TrackingRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TrackingRefUpdate.java
index 51bc07cb94..26045a2c7c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TrackingRefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TrackingRefUpdate.java
@@ -174,7 +174,6 @@ public class TrackingRefUpdate {
}
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
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 ee35f4866e..4d2f4a9ac0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
@@ -533,10 +533,13 @@ public abstract class Transport implements AutoCloseable {
* Note that the resulting transport instance can not be used for fetching
* or pushing, but only for reading remote refs.
*
- * @param uri a {@link org.eclipse.jgit.transport.URIish} object.
+ * @param uri
+ * a {@link org.eclipse.jgit.transport.URIish} object.
* @return new Transport instance
* @throws org.eclipse.jgit.errors.NotSupportedException
+ * case that is not supported by JGit
* @throws org.eclipse.jgit.errors.TransportException
+ * if transport failed
*/
public static Transport open(URIish uri) throws NotSupportedException, TransportException {
for (WeakReference<TransportProtocol> ref : protocols) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportAmazonS3.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportAmazonS3.java
index 784f566159..58232a7dde 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportAmazonS3.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportAmazonS3.java
@@ -170,7 +170,6 @@ public class TransportAmazonS3 extends HttpTransport implements WalkTransport {
}
}
- /** {@inheritDoc} */
@Override
public FetchConnection openFetch() throws TransportException {
final DatabaseS3 c = new DatabaseS3(bucket, keyPrefix + "/objects"); //$NON-NLS-1$
@@ -179,7 +178,6 @@ public class TransportAmazonS3 extends HttpTransport implements WalkTransport {
return r;
}
- /** {@inheritDoc} */
@Override
public PushConnection openPush() throws TransportException {
final DatabaseS3 c = new DatabaseS3(bucket, keyPrefix + "/objects"); //$NON-NLS-1$
@@ -188,7 +186,6 @@ public class TransportAmazonS3 extends HttpTransport implements WalkTransport {
return r;
}
- /** {@inheritDoc} */
@Override
public void close() {
// No explicit connections are maintained.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleFile.java
index 04ebddb107..0f84f7e21e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleFile.java
@@ -105,7 +105,6 @@ class TransportBundleFile extends Transport implements TransportBundle {
bundle = bundlePath;
}
- /** {@inheritDoc} */
@Override
public FetchConnection openFetch() throws NotSupportedException,
TransportException {
@@ -121,14 +120,12 @@ class TransportBundleFile extends Transport implements TransportBundle {
return new BundleFetchConnection(this, src);
}
- /** {@inheritDoc} */
@Override
public PushConnection openPush() throws NotSupportedException {
throw new NotSupportedException(
JGitText.get().pushIsNotSupportedForBundleTransport);
}
- /** {@inheritDoc} */
@Override
public void close() {
// Resources must be established per-connection.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleStream.java
index eac9208a3a..0366bf3aa2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportBundleStream.java
@@ -57,7 +57,6 @@ public class TransportBundleStream extends Transport implements TransportBundle
src = in;
}
- /** {@inheritDoc} */
@Override
public FetchConnection openFetch() throws TransportException {
if (src == null)
@@ -69,14 +68,12 @@ public class TransportBundleStream extends Transport implements TransportBundle
}
}
- /** {@inheritDoc} */
@Override
public PushConnection openPush() throws NotSupportedException {
throw new NotSupportedException(
JGitText.get().pushIsNotSupportedForBundleTransport);
}
- /** {@inheritDoc} */
@Override
public void close() {
if (src != null) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java
index a1914b6182..43b3f6cce0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java
@@ -89,7 +89,6 @@ class TransportGitAnon extends TcpTransport implements PackTransport {
super(uri);
}
- /** {@inheritDoc} */
@Override
public FetchConnection openFetch() throws TransportException {
return new TcpFetchConnection();
@@ -102,13 +101,11 @@ class TransportGitAnon extends TcpTransport implements PackTransport {
return new TcpFetchConnection(refSpecs, additionalPatterns);
}
- /** {@inheritDoc} */
@Override
public PushConnection openPush() throws TransportException {
return new TcpPushConnection();
}
- /** {@inheritDoc} */
@Override
public void close() {
// Resources must be established per-connection.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java
index 19ed4fbcc1..a2273b21be 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java
@@ -140,7 +140,6 @@ public class TransportGitSsh extends SshTransport implements PackTransport {
}
}
- /** {@inheritDoc} */
@Override
public FetchConnection openFetch() throws TransportException {
return new SshFetchConnection();
@@ -153,7 +152,6 @@ public class TransportGitSsh extends SshTransport implements PackTransport {
return new SshFetchConnection(refSpecs, additionalPatterns);
}
- /** {@inheritDoc} */
@Override
public PushConnection openPush() throws TransportException {
return new SshPushConnection();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
index df034bdc8b..c08b7fa243 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java
@@ -311,6 +311,7 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
* @param uri
* a {@link org.eclipse.jgit.transport.URIish} object.
* @throws org.eclipse.jgit.errors.NotSupportedException
+ * if URI is not supported by JGit
* @since 4.9
*/
protected void setURI(URIish uri) throws NotSupportedException {
@@ -327,7 +328,9 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
* Create a minimal HTTP transport with default configuration values.
*
* @param uri
+ * URI to create a HTTP transport for
* @throws NotSupportedException
+ * if URI is not supported by JGit
*/
TransportHttp(URIish uri) throws NotSupportedException {
super(uri);
@@ -445,7 +448,6 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
}
}
- /** {@inheritDoc} */
@Override
public FetchConnection openFetch() throws TransportException,
NotSupportedException {
@@ -532,7 +534,6 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
return new BufferedReader(new InputStreamReader(in, UTF_8));
}
- /** {@inheritDoc} */
@Override
public PushConnection openPush() throws NotSupportedException,
TransportException {
@@ -567,7 +568,6 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
return p;
}
- /** {@inheritDoc} */
@Override
public void close() {
if (gitSession != null) {
@@ -822,7 +822,7 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
/**
* Trust the server for all git operations from this repository; may be
* {@code null} if the transport was created via
- * {@link #TransportHttp(URIish)}.
+ * {@link TransportHttp#TransportHttp(URIish)}.
*/
CredentialItem.YesNoType forRepo;
@@ -1035,11 +1035,15 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
/**
* Open an HTTP connection.
*
- * @param method HTTP request method
- * @param u url of the HTTP connection
- * @param acceptEncoding accept-encoding header option
+ * @param method
+ * HTTP request method
+ * @param u
+ * url of the HTTP connection
+ * @param acceptEncoding
+ * accept-encoding header option
* @return the HTTP connection
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.6
*/
protected HttpConnection httpOpen(String method, URL u,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportLocal.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportLocal.java
index 77d1419ea2..3a06ce5b63 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportLocal.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportLocal.java
@@ -151,7 +151,6 @@ class TransportLocal extends Transport implements PackTransport {
}
}
- /** {@inheritDoc} */
@Override
public FetchConnection openFetch() throws TransportException {
return openFetch(Collections.emptyList());
@@ -170,7 +169,6 @@ class TransportLocal extends Transport implements PackTransport {
return new InternalFetchConnection<>(this, upf, null, openRepo());
}
- /** {@inheritDoc} */
@Override
public PushConnection openPush() throws TransportException {
final String rp = getOptionReceivePack();
@@ -183,7 +181,6 @@ class TransportLocal extends Transport implements PackTransport {
return new InternalPushConnection<>(this, rpf, null, openRepo());
}
- /** {@inheritDoc} */
@Override
public void close() {
// Resources must be established per-connection.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportProtocol.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportProtocol.java
index 912a90a1bf..bfb840d75f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportProtocol.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportProtocol.java
@@ -251,7 +251,9 @@ public abstract class TransportProtocol {
* a {@link org.eclipse.jgit.transport.URIish} object.
* @return new Transport
* @throws org.eclipse.jgit.errors.NotSupportedException
+ * this protocol does not support the URI.
* @throws org.eclipse.jgit.errors.TransportException
+ * the transport cannot open this URI.
*/
public Transport open(URIish uri)
throws NotSupportedException, TransportException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportSftp.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportSftp.java
index b9feeb9c02..a59d352e0d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportSftp.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportSftp.java
@@ -104,7 +104,6 @@ public class TransportSftp extends SshTransport implements WalkTransport {
super(local, uri);
}
- /** {@inheritDoc} */
@Override
public FetchConnection openFetch() throws TransportException {
final SftpObjectDB c = new SftpObjectDB(uri.getPath());
@@ -113,7 +112,6 @@ public class TransportSftp extends SshTransport implements WalkTransport {
return r;
}
- /** {@inheritDoc} */
@Override
public PushConnection openPush() throws TransportException {
final SftpObjectDB c = new SftpObjectDB(uri.getPath());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java
index c9bb89a436..4de6ff825f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java
@@ -94,7 +94,7 @@ public class URIish implements Serializable {
private static final long serialVersionUID = 1L;
/**
- * A pattern matching standard URI: </br>
+ * A pattern matching standard URI: <br>
* <code>scheme "://" user_password? hostname? portnumber? path</code>
*/
private static final Pattern FULL_URI = Pattern.compile("^" // //$NON-NLS-1$
@@ -175,6 +175,7 @@ public class URIish implements Serializable {
* @param s
* a {@link java.lang.String} object.
* @throws java.net.URISyntaxException
+ * if {@code s} was null or couldn't be parsed
*/
public URIish(String s) throws URISyntaxException {
if (StringUtils.isEmptyOrNull(s)) {
@@ -477,6 +478,7 @@ public class URIish implements Serializable {
* the new value for path.
* @return a new URI with the updated value.
* @throws java.net.URISyntaxException
+ * if URI couldn't be parsed from String
*/
public URIish setRawPath(String n) throws URISyntaxException {
final URIish r = new URIish(this);
@@ -551,7 +553,6 @@ public class URIish implements Serializable {
return r;
}
- /** {@inheritDoc} */
@Override
public int hashCode() {
int hc = 0;
@@ -570,7 +571,6 @@ public class URIish implements Serializable {
return hc;
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object obj) {
if (!(obj instanceof URIish))
@@ -611,7 +611,6 @@ public class URIish implements Serializable {
return format(true, false);
}
- /** {@inheritDoc} */
@Override
public String toString() {
return format(false, false);
@@ -683,7 +682,8 @@ public class URIish implements Serializable {
/**
* Get the "humanish" part of the path. Some examples of a 'humanish' part
* for a full path:
- * <table summary="path vs humanish path" border="1">
+ * <table border="1">
+ * <caption>path vs. humanish path</caption>
* <tr>
* <th>Path</th>
* <th>Humanish part</th>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
index 8b97ee10ca..301a7e6d9a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
@@ -771,9 +771,13 @@ public class UploadPack implements Closeable {
* its own error handling mechanism.
*
* @param input
+ * input stream
* @param output
+ * output stream
* @param messages
+ * stream for messages
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void upload(InputStream input, OutputStream output,
@Nullable OutputStream messages) throws IOException {
@@ -2265,7 +2269,8 @@ public class UploadPack implements Closeable {
* request in process
* @param allTags
* refs to search for annotated tags to include in the pack if
- * the {@link #OPTION_INCLUDE_TAG} capability was requested.
+ * the {@link GitProtocolConstants#OPTION_INCLUDE_TAG} capability
+ * was requested.
* @param unshallowCommits
* shallow commits on the client that are now becoming unshallow
* @param deepenNots
@@ -2326,7 +2331,8 @@ public class UploadPack implements Closeable {
* where to write statistics about the content of the pack.
* @param allTags
* refs to search for annotated tags to include in the pack if
- * the {@link #OPTION_INCLUDE_TAG} capability was requested.
+ * the {@link GitProtocolConstants#OPTION_INCLUDE_TAG} capability
+ * was requested.
* @param unshallowCommits
* shallow commits on the client that are now becoming unshallow
* @param deepenNots
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UserAgent.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UserAgent.java
index df98d0cfd5..7b052ad4a7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UserAgent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UserAgent.java
@@ -94,10 +94,12 @@ public class UserAgent {
/**
*
* @param options
+ * options
* @param transportAgent
+ * name of transport agent
* @return The transport agent.
- * @deprecated Capabilities with <key>=<value> shape are now parsed
- * alongside other capabilities in the ReceivePack flow.
+ * @deprecated Capabilities with &lt;key&gt;=&lt;value&gt; shape are now
+ * parsed alongside other capabilities in the ReceivePack flow.
*/
@Deprecated
static String getAgent(Set<String> options, String transportAgent) {
@@ -117,9 +119,10 @@ public class UserAgent {
/**
*
* @param options
+ * options
* @return True if the transport agent is set. False otherwise.
- * @deprecated Capabilities with <key>=<value> shape are now parsed
- * alongside other capabilities in the ReceivePack flow.
+ * @deprecated Capabilities with &lt;key&gt;=&lt;value&gt; shape are now
+ * parsed alongside other capabilities in the ReceivePack flow.
*/
@Deprecated
static boolean hasAgent(Set<String> options) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UsernamePasswordCredentialsProvider.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UsernamePasswordCredentialsProvider.java
index c0de42cb57..da8af5a0fe 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UsernamePasswordCredentialsProvider.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UsernamePasswordCredentialsProvider.java
@@ -48,13 +48,11 @@ public class UsernamePasswordCredentialsProvider extends CredentialsProvider {
this.password = password;
}
- /** {@inheritDoc} */
@Override
public boolean isInteractive() {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean supports(CredentialItem... items) {
for (CredentialItem i : items) {
@@ -77,7 +75,6 @@ public class UsernamePasswordCredentialsProvider extends CredentialsProvider {
return true;
}
- /** {@inheritDoc} */
@Override
public boolean get(URIish uri, CredentialItem... items)
throws UnsupportedCredentialItem {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkEncryption.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkEncryption.java
index c8cdb5a549..3bfc5234ee 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkEncryption.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkEncryption.java
@@ -130,6 +130,7 @@ abstract class WalkEncryption {
* EncryptionUtil.java</a>
* <p>
* Note: EncryptionUtil is inadequate:
+ * <ul>
* <li>EncryptionUtil.isCipherAvailableForUse checks encryption only which
* "always works", but in JetS3t both encryption and decryption use non-IV
* aware algorithm parameters for all PBE specs, which breaks in case of AES
@@ -137,6 +138,7 @@ abstract class WalkEncryption {
* JetS3t, such as PBEWithMD5AndDES and PBEWithSHAAndTwofish-CBC
* <li>any AES based algorithms such as "PBE...With...And...AES" will not
* work, since they need proper IV setup
+ * </ul>
*/
static class JetS3tV2 extends WalkEncryption {
@@ -516,8 +518,10 @@ abstract class WalkEncryption {
* Encryption factory.
*
* @param props
- * @return instance
+ * configuration properties
+ * @return instance this object
* @throws GeneralSecurityException
+ * if generic security failure occurred
*/
static WalkEncryption instance(Properties props)
throws GeneralSecurityException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java
index cc6c252fa1..8d89107c2b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java
@@ -186,13 +186,11 @@ class WalkFetchConnection extends BaseFetchConnection {
workQueue = new LinkedList<>();
}
- /** {@inheritDoc} */
@Override
public boolean didFetchTestConnectivity() {
return true;
}
- /** {@inheritDoc} */
@Override
protected void doFetch(final ProgressMonitor monitor,
final Collection<Ref> want, final Set<ObjectId> have)
@@ -214,19 +212,16 @@ class WalkFetchConnection extends BaseFetchConnection {
}
}
- /** {@inheritDoc} */
@Override
public Collection<PackLock> getPackLocks() {
return packLocks;
}
- /** {@inheritDoc} */
@Override
public void setPackLockMessage(String message) {
lockMessage = message;
}
- /** {@inheritDoc} */
@Override
public void close() {
inserter.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkPushConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkPushConnection.java
index a54fd8e14d..464017a84d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkPushConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkPushConnection.java
@@ -104,7 +104,6 @@ class WalkPushConnection extends BaseConnection implements PushConnection {
dest = w;
}
- /** {@inheritDoc} */
@Override
public void push(final ProgressMonitor monitor,
final Map<String, RemoteRefUpdate> refUpdates)
@@ -112,7 +111,6 @@ class WalkPushConnection extends BaseConnection implements PushConnection {
push(monitor, refUpdates, null);
}
- /** {@inheritDoc} */
@Override
public void push(final ProgressMonitor monitor,
final Map<String, RemoteRefUpdate> refUpdates, OutputStream out)
@@ -184,7 +182,6 @@ class WalkPushConnection extends BaseConnection implements PushConnection {
}
}
- /** {@inheritDoc} */
@Override
public void close() {
dest.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnection.java
index 98c231a46d..125ee6cbe9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnection.java
@@ -105,6 +105,7 @@ public interface HttpConnection {
* @see HttpURLConnection#getResponseCode()
* @return the HTTP Status-Code, or -1
* @throws java.io.IOException
+ * if an IO error occurred
*/
int getResponseCode() throws IOException;
@@ -122,6 +123,7 @@ public interface HttpConnection {
* @see HttpURLConnection#getResponseMessage()
* @return the HTTP response message, or <code>null</code>
* @throws java.io.IOException
+ * if an IO error occurred
*/
String getResponseMessage() throws IOException;
@@ -207,14 +209,14 @@ public interface HttpConnection {
* @exception IOException
* if an I/O error occurs while creating the input stream.
* @throws java.io.IOException
- * if any.
+ * if an IO error occurred
*/
InputStream getInputStream() throws IOException;
/**
* Get header field. According to
- * {@link <a href="https://tools.ietf.org/html/rfc2616#section-4.2">RFC
- * 2616</a>} header field names are case insensitive. Header fields defined
+ * <a href="https://tools.ietf.org/html/rfc2616#section-4.2">RFC 2616</a>
+ * header field names are case insensitive. Header fields defined
* as a comma separated list can have multiple header fields with the same
* field name. This method only returns one of these header fields. If you
* want the union of all values of all multiple header fields with the same
@@ -230,8 +232,8 @@ public interface HttpConnection {
/**
* Get all values of given header field. According to
- * {@link <a href="https://tools.ietf.org/html/rfc2616#section-4.2">RFC
- * 2616</a>} header field names are case insensitive. Header fields defined
+ * <a href="https://tools.ietf.org/html/rfc2616#section-4.2">RFC 2616</a>
+ * header field names are case insensitive. Header fields defined
* as a comma separated list can have multiple header fields with the same
* field name. This method does not validate if the given header field is
* defined as a comma separated list.
@@ -287,6 +289,7 @@ public interface HttpConnection {
* @see HttpURLConnection#getOutputStream()
* @return an output stream that writes to this connection.
* @throws java.io.IOException
+ * if an IO error occurred
*/
OutputStream getOutputStream() throws IOException;
@@ -321,6 +324,7 @@ public interface HttpConnection {
*
* @see HttpURLConnection#connect()
* @throws java.io.IOException
+ * if an IO error occurred
*/
void connect() throws IOException;
@@ -338,7 +342,9 @@ public interface HttpConnection {
* the source of randomness for this generator or null. See
* {@link javax.net.ssl.SSLContext#init(KeyManager[], TrustManager[], SecureRandom)}
* @throws java.security.NoSuchAlgorithmException
+ * if algorithm isn't available
* @throws java.security.KeyManagementException
+ * if key management failed
*/
void configure(KeyManager[] km, TrustManager[] tm,
SecureRandom random) throws NoSuchAlgorithmException,
@@ -351,7 +357,9 @@ public interface HttpConnection {
* @param hostnameverifier
* a {@link javax.net.ssl.HostnameVerifier} object.
* @throws java.security.NoSuchAlgorithmException
+ * if algorithm isn't available
* @throws java.security.KeyManagementException
+ * if key management failed
*/
void setHostnameVerifier(HostnameVerifier hostnameverifier)
throws NoSuchAlgorithmException, KeyManagementException;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory.java
index bd0aa3f7ad..b50eaa4186 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory.java
@@ -28,6 +28,7 @@ public interface HttpConnectionFactory {
* a {@link java.net.URL} object.
* @return a {@link org.eclipse.jgit.transport.http.HttpConnection}
* @throws java.io.IOException
+ * if an IO error occurred
*/
HttpConnection create(URL url) throws IOException;
@@ -41,6 +42,7 @@ public interface HttpConnectionFactory {
* the proxy to be used
* @return a {@link org.eclipse.jgit.transport.http.HttpConnection}
* @throws java.io.IOException
+ * if an IO error occurred
*/
HttpConnection create(URL url, Proxy proxy)
throws IOException;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory2.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory2.java
index 88abc60162..71d5c1b6f7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory2.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/HttpConnectionFactory2.java
@@ -48,7 +48,7 @@ public interface HttpConnectionFactory2 extends HttpConnectionFactory {
* {@link HttpConnectionFactory} instance
* @param sslVerify
* whether SSL is to be verified
- * @return the configured {@connection}
+ * @return the configured {@code connection}
* @throws IOException
* if the connection cannot be configured
* @throws GeneralSecurityException
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/JDKHttpConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/JDKHttpConnection.java
index 3b0bae21ef..8e9be1dde8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/JDKHttpConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/http/JDKHttpConnection.java
@@ -55,7 +55,9 @@ public class JDKHttpConnection implements HttpConnection {
* @param url
* a {@link java.net.URL} object.
* @throws java.net.MalformedURLException
+ * if URL is malformed
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected JDKHttpConnection(URL url)
throws MalformedURLException,
@@ -71,7 +73,9 @@ public class JDKHttpConnection implements HttpConnection {
* @param proxy
* a {@link java.net.Proxy} object.
* @throws java.net.MalformedURLException
+ * if URL is malformed
* @throws java.io.IOException
+ * if an IO error occurred
*/
protected JDKHttpConnection(URL url, Proxy proxy)
throws MalformedURLException, IOException {
@@ -79,73 +83,61 @@ public class JDKHttpConnection implements HttpConnection {
.openConnection(proxy);
}
- /** {@inheritDoc} */
@Override
public int getResponseCode() throws IOException {
return wrappedUrlConnection.getResponseCode();
}
- /** {@inheritDoc} */
@Override
public URL getURL() {
return wrappedUrlConnection.getURL();
}
- /** {@inheritDoc} */
@Override
public String getResponseMessage() throws IOException {
return wrappedUrlConnection.getResponseMessage();
}
- /** {@inheritDoc} */
@Override
public Map<String, List<String>> getHeaderFields() {
return wrappedUrlConnection.getHeaderFields();
}
- /** {@inheritDoc} */
@Override
public void setRequestProperty(String key, String value) {
wrappedUrlConnection.setRequestProperty(key, value);
}
- /** {@inheritDoc} */
@Override
public void setRequestMethod(String method) throws ProtocolException {
wrappedUrlConnection.setRequestMethod(method);
}
- /** {@inheritDoc} */
@Override
public void setUseCaches(boolean usecaches) {
wrappedUrlConnection.setUseCaches(usecaches);
}
- /** {@inheritDoc} */
@Override
public void setConnectTimeout(int timeout) {
wrappedUrlConnection.setConnectTimeout(timeout);
}
- /** {@inheritDoc} */
@Override
public void setReadTimeout(int timeout) {
wrappedUrlConnection.setReadTimeout(timeout);
}
- /** {@inheritDoc} */
@Override
public String getContentType() {
return wrappedUrlConnection.getContentType();
}
- /** {@inheritDoc} */
@Override
public InputStream getInputStream() throws IOException {
return wrappedUrlConnection.getInputStream();
}
- /** {@inheritDoc} */
@Override
public String getHeaderField(@NonNull String name) {
return wrappedUrlConnection.getHeaderField(name);
@@ -167,68 +159,57 @@ public class JDKHttpConnection implements HttpConnection {
return fields;
}
- /** {@inheritDoc} */
@Override
public int getContentLength() {
return wrappedUrlConnection.getContentLength();
}
- /** {@inheritDoc} */
@Override
public void setInstanceFollowRedirects(boolean followRedirects) {
wrappedUrlConnection.setInstanceFollowRedirects(followRedirects);
}
- /** {@inheritDoc} */
@Override
public void setDoOutput(boolean dooutput) {
wrappedUrlConnection.setDoOutput(dooutput);
}
- /** {@inheritDoc} */
@Override
public void setFixedLengthStreamingMode(int contentLength) {
wrappedUrlConnection.setFixedLengthStreamingMode(contentLength);
}
- /** {@inheritDoc} */
@Override
public OutputStream getOutputStream() throws IOException {
return wrappedUrlConnection.getOutputStream();
}
- /** {@inheritDoc} */
@Override
public void setChunkedStreamingMode(int chunklen) {
wrappedUrlConnection.setChunkedStreamingMode(chunklen);
}
- /** {@inheritDoc} */
@Override
public String getRequestMethod() {
return wrappedUrlConnection.getRequestMethod();
}
- /** {@inheritDoc} */
@Override
public boolean usingProxy() {
return wrappedUrlConnection.usingProxy();
}
- /** {@inheritDoc} */
@Override
public void connect() throws IOException {
wrappedUrlConnection.connect();
}
- /** {@inheritDoc} */
@Override
public void setHostnameVerifier(HostnameVerifier hostnameverifier) {
((HttpsURLConnection) wrappedUrlConnection)
.setHostnameVerifier(hostnameverifier);
}
- /** {@inheritDoc} */
@Override
public void configure(KeyManager[] km, TrustManager[] tm,
SecureRandom random) throws NoSuchAlgorithmException,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java
index 046f395049..36731a5fa6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java
@@ -60,7 +60,6 @@ public class FileResolver<C> implements RepositoryResolver<C> {
setExportAll(exportAll);
}
- /** {@inheritDoc} */
@Override
public Repository open(C req, String name)
throws RepositoryNotFoundException, ServiceNotEnabledException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/AbstractTreeIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/AbstractTreeIterator.java
index 3ef5b29a55..65b18086b4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/AbstractTreeIterator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/AbstractTreeIterator.java
@@ -718,7 +718,6 @@ public abstract class AbstractTreeIterator {
System.arraycopy(path, pathOffset, buffer, offset, pathLen - pathOffset);
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java
index 5c3f6aefe1..c6d50d35f1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java
@@ -191,7 +191,6 @@ public class CanonicalTreeParser extends AbstractTreeIterator {
reset(reader.open(id, OBJ_TREE).getCachedBytes());
}
- /** {@inheritDoc} */
@Override
public CanonicalTreeParser createSubtreeIterator(final ObjectReader reader,
final MutableObjectId idBuffer)
@@ -227,51 +226,43 @@ public class CanonicalTreeParser extends AbstractTreeIterator {
return p;
}
- /** {@inheritDoc} */
@Override
public CanonicalTreeParser createSubtreeIterator(ObjectReader reader)
throws IncorrectObjectTypeException, IOException {
return createSubtreeIterator(reader, new MutableObjectId());
}
- /** {@inheritDoc} */
@Override
public boolean hasId() {
return true;
}
- /** {@inheritDoc} */
@Override
public byte[] idBuffer() {
return raw;
}
- /** {@inheritDoc} */
@Override
public int idOffset() {
return nextPtr - OBJECT_ID_LENGTH;
}
- /** {@inheritDoc} */
@Override
public void reset() {
if (!first())
reset(raw);
}
- /** {@inheritDoc} */
@Override
public boolean first() {
return currPtr == 0;
}
- /** {@inheritDoc} */
@Override
public boolean eof() {
return currPtr == raw.length;
}
- /** {@inheritDoc} */
@Override
public void next(int delta) {
if (delta == 1) {
@@ -301,7 +292,6 @@ public class CanonicalTreeParser extends AbstractTreeIterator {
parseEntry();
}
- /** {@inheritDoc} */
@Override
public void back(int delta) {
if (delta == 1 && 0 <= prevPtr) {
@@ -376,6 +366,7 @@ public class CanonicalTreeParser extends AbstractTreeIterator {
* @return {@link org.eclipse.jgit.attributes.AttributesNode} for the
* current entry.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
*/
public AttributesNode getEntryAttributesNode(ObjectReader reader)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/EmptyTreeIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/EmptyTreeIterator.java
index 0661c9044a..32368dcfb8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/EmptyTreeIterator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/EmptyTreeIterator.java
@@ -57,75 +57,63 @@ public class EmptyTreeIterator extends AbstractTreeIterator {
pathLen = childPathOffset - 1;
}
- /** {@inheritDoc} */
@Override
public AbstractTreeIterator createSubtreeIterator(ObjectReader reader)
throws IncorrectObjectTypeException, IOException {
return new EmptyTreeIterator(this);
}
- /** {@inheritDoc} */
@Override
public boolean hasId() {
return false;
}
- /** {@inheritDoc} */
@Override
public ObjectId getEntryObjectId() {
return ObjectId.zeroId();
}
- /** {@inheritDoc} */
@Override
public byte[] idBuffer() {
return zeroid;
}
- /** {@inheritDoc} */
@Override
public int idOffset() {
return 0;
}
- /** {@inheritDoc} */
@Override
public void reset() {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public boolean first() {
return true;
}
- /** {@inheritDoc} */
@Override
public boolean eof() {
return true;
}
- /** {@inheritDoc} */
@Override
public void next(int delta) throws CorruptObjectException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void back(int delta) throws CorruptObjectException {
// Do nothing.
}
- /** {@inheritDoc} */
@Override
public void stopWalk() {
if (parent != null)
parent.stopWalk();
}
- /** {@inheritDoc} */
@Override
protected boolean needsStopWalk() {
return parent != null && parent.needsStopWalk();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/FileTreeIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/FileTreeIterator.java
index 60b92d7271..36fa72028e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/FileTreeIterator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/FileTreeIterator.java
@@ -175,7 +175,6 @@ public class FileTreeIterator extends WorkingTreeIterator {
init(entries());
}
- /** {@inheritDoc} */
@Override
public AbstractTreeIterator createSubtreeIterator(ObjectReader reader)
throws IncorrectObjectTypeException, IOException {
@@ -425,13 +424,11 @@ public class FileTreeIterator extends WorkingTreeIterator {
return ((FileEntry) current()).getFile();
}
- /** {@inheritDoc} */
@Override
protected byte[] idSubmodule(Entry e) {
return idSubmodule(getDirectory(), e);
}
- /** {@inheritDoc} */
@Override
protected String readSymlinkTarget(Entry entry) throws IOException {
return fs.readSymLink(getEntryFile());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/TreeWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/TreeWalk.java
index ece945232e..e0a8af1800 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/TreeWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/TreeWalk.java
@@ -548,7 +548,7 @@ public class TreeWalk implements AutoCloseable, AttributesProvider {
* <p>
* Retrieve the git attributes for the current entry.
*
- * <h3>Git attribute computation</h3>
+ * <h4>Git attribute computation</h4>
*
* <ul>
* <li>Get the attributes matching the current path entry from the info file
@@ -563,11 +563,10 @@ public class TreeWalk implements AutoCloseable, AttributesProvider {
* <li>In the end, completes the list of matching attributes using the
* global attribute file define in the configuration (see
* {@link AttributesNodeProvider#getGlobalAttributesNode()})</li>
- *
* </ul>
*
*
- * <h3>Iterator constraints</h3>
+ * <h4>Iterator constraints</h4>
*
* <p>
* In order to have a correct list of attributes for the current entry, this
@@ -960,6 +959,8 @@ public class TreeWalk implements AutoCloseable, AttributesProvider {
* iterators to manage only one list of items, with the diving handled by
* recursive trees.
*
+ * @param <T>
+ * Type of returned {@code AbstractTreeIterator}
* @param nth
* tree to obtain the current iterator of.
* @param clazz
@@ -1376,12 +1377,14 @@ public class TreeWalk implements AutoCloseable, AttributesProvider {
}
/**
- * Returns an AbstractTreeIterator from {@code trees} with the smallest name, and sets its
- * {@code matches} field. This may clobber {@code matches} in other {@code tree}s. Other iterators
- * at the same name will have their {@code matches} pointing to the same {@code min()} value.
+ * Returns an AbstractTreeIterator from {@code trees} with the smallest
+ * name, and sets its {@code matches} field. This may clobber
+ * {@code matches} in other {@code tree}s. Other iterators at the same name
+ * will have their {@code matches} pointing to the same {@code min()} value.
*
* @return the smallest tree iterator available.
* @throws CorruptObjectException
+ * if an object is corrupt
*/
@SuppressWarnings("unused")
AbstractTreeIterator min() throws CorruptObjectException {
@@ -1488,6 +1491,7 @@ public class TreeWalk implements AutoCloseable, AttributesProvider {
* {{@link #getSmudgeCommand(int)} instead.
* @return a filter command
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
*/
public String getFilterCommand(String filterCommandType)
@@ -1521,6 +1525,7 @@ public class TreeWalk implements AutoCloseable, AttributesProvider {
* of the tree the item to be smudged is in
* @return a filter command
* @throws java.io.IOException
+ * if an IO error occurred
* @since 6.1
*/
public String getSmudgeCommand(int index)
@@ -1536,6 +1541,7 @@ public class TreeWalk implements AutoCloseable, AttributesProvider {
* to use
* @return a filter command
* @throws java.io.IOException
+ * if an IO error occurred
* @since 6.1
*/
public String getSmudgeCommand(Attributes attributes) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
index b5d6610d52..98d0846612 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
@@ -25,6 +25,7 @@ import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetEncoder;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.text.MessageFormat;
import java.time.Instant;
@@ -68,6 +69,7 @@ import org.eclipse.jgit.util.Holder;
import org.eclipse.jgit.util.IO;
import org.eclipse.jgit.util.Paths;
import org.eclipse.jgit.util.RawParseUtils;
+import org.eclipse.jgit.util.SystemReader;
import org.eclipse.jgit.util.TemporaryBuffer;
import org.eclipse.jgit.util.TemporaryBuffer.LocalFile;
import org.eclipse.jgit.util.io.EolStreamTypeUtil;
@@ -270,7 +272,6 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
return state.walkIgnored;
}
- /** {@inheritDoc} */
@Override
public boolean hasId() {
if (contentIdFromPtr == ptr)
@@ -278,7 +279,6 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
return (mode & FileMode.TYPE_MASK) == FileMode.TYPE_FILE;
}
- /** {@inheritDoc} */
@Override
public byte[] idBuffer() {
if (contentIdFromPtr == ptr)
@@ -316,7 +316,6 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
return zeroid;
}
- /** {@inheritDoc} */
@Override
public boolean isWorkTree() {
return true;
@@ -549,13 +548,11 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
return repository;
}
- /** {@inheritDoc} */
@Override
public int idOffset() {
return contentIdOffset;
}
- /** {@inheritDoc} */
@Override
public void reset() {
if (!first()) {
@@ -565,19 +562,16 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
}
}
- /** {@inheritDoc} */
@Override
public boolean first() {
return ptr == 0;
}
- /** {@inheritDoc} */
@Override
public boolean eof() {
return ptr == entryCnt;
}
- /** {@inheritDoc} */
@Override
public void next(int delta) throws CorruptObjectException {
ptr += delta;
@@ -586,7 +580,6 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
}
}
- /** {@inheritDoc} */
@Override
public void back(int delta) throws CorruptObjectException {
ptr -= delta;
@@ -620,6 +613,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
*
* @return size of the content, in bytes
* @throws java.io.IOException
+ * if an IO error occurred
*/
public long getEntryContentLength() throws IOException {
if (canonLen == -1) {
@@ -772,6 +766,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
* @return the {@link org.eclipse.jgit.attributes.AttributesNode} for the
* current entry.
* @throws IOException
+ * if an IO error occurred
*/
public AttributesNode getEntryAttributesNode() throws IOException {
if (attributesNode instanceof PerDirectoryAttributesNode)
@@ -964,6 +959,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
* access to repository objects if necessary. Should not be null.
* @return true if content is most likely different.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.3
*/
public boolean isModified(DirCacheEntry entry, boolean forceContentCheck,
@@ -1070,6 +1066,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
* @return <code>true</code> if the content doesn't match,
* <code>false</code> if it matches
* @throws IOException
+ * if an IO error occurred
*/
private boolean contentCheck(DirCacheEntry entry, ObjectReader reader)
throws IOException {
@@ -1334,7 +1331,11 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
ConfigConstants.CONFIG_CORE_SECTION, null,
ConfigConstants.CONFIG_KEY_EXCLUDESFILE, fs, null, null);
if (path != null) {
- loadRulesFromFile(coreExclude, path.toFile());
+ if (Files.exists(path)) {
+ loadRulesFromFile(coreExclude, path.toFile());
+ }
+ } else {
+ loadRulesFromDefaultFile(coreExclude, fs);
}
if (coreExclude.getRules().isEmpty()) {
coreExclude = parent;
@@ -1344,7 +1345,9 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
coreExclude);
File exclude = fs.resolve(repository.getDirectory(),
Constants.INFO_EXCLUDE);
- loadRulesFromFile(infoExclude, exclude);
+ if (fs.exists(exclude)) {
+ loadRulesFromFile(infoExclude, exclude);
+ }
if (infoExclude.getRules().isEmpty()) {
infoExclude = null;
}
@@ -1366,9 +1369,19 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
private static void loadRulesFromFile(IgnoreNode r, File exclude)
throws FileNotFoundException, IOException {
- if (FS.DETECTED.exists(exclude)) {
- try (FileInputStream in = new FileInputStream(exclude)) {
- r.parse(exclude.getAbsolutePath(), in);
+ try (FileInputStream in = new FileInputStream(exclude)) {
+ r.parse(exclude.getAbsolutePath(), in);
+ }
+ }
+
+ private static void loadRulesFromDefaultFile(IgnoreNode r,
+ FS fileSystem) throws FileNotFoundException, IOException {
+ Path cfg = SystemReader.getInstance()
+ .getXdgConfigDirectory(fileSystem);
+ if (cfg != null) {
+ Path cfgPath = cfg.resolve("git").resolve("ignore"); //$NON-NLS-1$ //$NON-NLS-2$
+ if (Files.exists(cfgPath)) {
+ loadRulesFromFile(r, cfgPath.toFile());
}
}
}
@@ -1450,6 +1463,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
* @return the clean filter command for the current entry or
* <code>null</code> if no such command is defined
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
*/
public String getCleanFilterCommand() throws IOException {
@@ -1472,6 +1486,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
* {@link org.eclipse.jgit.treewalk.TreeWalk} is not based on a
* {@link org.eclipse.jgit.lib.Repository} then null is returned.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.3
*/
public EolStreamType getEolStreamType() throws IOException {
@@ -1486,6 +1501,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
* {@link TreeWalk} is not based on a {@link Repository} then null
* is returned.
* @throws IOException
+ * if an IO error occurred
*/
private EolStreamType getEolStreamType(OperationType opType)
throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ByteArraySet.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ByteArraySet.java
index cafa926ffc..c94160144e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ByteArraySet.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ByteArraySet.java
@@ -39,6 +39,7 @@ class ByteArraySet {
* Create an empty set.
*
* @param capacity
+ * initial capacity of the set
*/
ByteArraySet(int capacity) {
initTable(1 << Integer.highestOneBit((capacity * 2) - 1));
@@ -180,7 +181,6 @@ class ByteArraySet {
table = new byte[sz][];
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/IndexDiffFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/IndexDiffFilter.java
index 4731f345bc..699ff6b68b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/IndexDiffFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/IndexDiffFilter.java
@@ -106,7 +106,6 @@ public class IndexDiffFilter extends TreeFilter {
this.honorIgnores = honorIgnores;
}
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk tw) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -234,7 +233,6 @@ public class IndexDiffFilter extends TreeFilter {
return tw.getTree(workingTree, WorkingTreeIterator.class);
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
// We cannot compare subtrees in the working tree, so encourage
@@ -242,13 +240,11 @@ public class IndexDiffFilter extends TreeFilter {
return true;
}
- /** {@inheritDoc} */
@Override
public TreeFilter clone() {
return this;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "INDEX_DIFF_FILTER"; //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilter.java
index 163dc71daa..0c0b09e7bf 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilter.java
@@ -28,7 +28,6 @@ public final class InterIndexDiffFilter extends TreeFilter {
*/
public static final TreeFilter INSTANCE = new InterIndexDiffFilter();
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk walker) {
final int n = walker.getTreeCount();
@@ -57,19 +56,16 @@ public final class InterIndexDiffFilter extends TreeFilter {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
return false;
}
- /** {@inheritDoc} */
@Override
public TreeFilter clone() {
return this;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "INTERINDEX_DIFF"; //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotIgnoredFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotIgnoredFilter.java
index 7d04f27f3c..25947da08f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotIgnoredFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotIgnoredFilter.java
@@ -33,7 +33,6 @@ public class NotIgnoredFilter extends TreeFilter {
this.index = workdirTreeIndex;
}
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk tw) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -41,20 +40,17 @@ public class NotIgnoredFilter extends TreeFilter {
return i == null || !i.isEntryIgnored();
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
return false;
}
- /** {@inheritDoc} */
@Override
public TreeFilter clone() {
// immutable
return this;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotTreeFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotTreeFilter.java
index 4fb615321f..e9cd83c2e2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotTreeFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/NotTreeFilter.java
@@ -38,13 +38,11 @@ public class NotTreeFilter extends TreeFilter {
a = one;
}
- /** {@inheritDoc} */
@Override
public TreeFilter negate() {
return a;
}
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk walker)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -52,7 +50,6 @@ public class NotTreeFilter extends TreeFilter {
return matchFilter(walker) == 0;
}
- /** {@inheritDoc} */
@Override
public int matchFilter(TreeWalk walker)
throws MissingObjectException, IncorrectObjectTypeException,
@@ -69,20 +66,17 @@ public class NotTreeFilter extends TreeFilter {
return -1;
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
return a.shouldBeRecursive();
}
- /** {@inheritDoc} */
@Override
public TreeFilter clone() {
final TreeFilter n = a.clone();
return n == a ? this : new NotTreeFilter(n);
}
- /** {@inheritDoc} */
@Override
public String toString() {
return "NOT " + a.toString(); //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathFilter.java
index c94215fcb1..66ab8bb5be 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathFilter.java
@@ -11,6 +11,9 @@
package org.eclipse.jgit.treewalk.filter;
+import java.util.Optional;
+import java.util.Set;
+import java.util.HashSet;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.treewalk.TreeWalk;
@@ -45,7 +48,8 @@ public class PathFilter extends TreeFilter {
while (path.endsWith("/")) //$NON-NLS-1$
path = path.substring(0, path.length() - 1);
if (path.length() == 0)
- throw new IllegalArgumentException(JGitText.get().emptyPathNotPermitted);
+ throw new IllegalArgumentException(
+ JGitText.get().emptyPathNotPermitted);
return new PathFilter(path);
}
@@ -67,19 +71,16 @@ public class PathFilter extends TreeFilter {
return pathStr;
}
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk walker) {
return matchFilter(walker) <= 0;
}
- /** {@inheritDoc} */
@Override
public int matchFilter(TreeWalk walker) {
return walker.isPathMatch(pathRaw, pathRaw.length);
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
for (byte b : pathRaw)
@@ -88,13 +89,19 @@ public class PathFilter extends TreeFilter {
return false;
}
+ @Override
+ public Optional<Set<byte[]>> getPathsBestEffort() {
+ HashSet<byte[]> s = new HashSet<>();
+ s.add(pathRaw);
+ return Optional.of(s);
+ }
+
/** {@inheritDoc} */
@Override
public PathFilter clone() {
return this;
}
- /** {@inheritDoc} */
@Override
@SuppressWarnings("nls")
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathSuffixFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathSuffixFilter.java
index 3816d5ed00..ec25903211 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathSuffixFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/PathSuffixFilter.java
@@ -56,13 +56,11 @@ public class PathSuffixFilter extends TreeFilter {
pathRaw = Constants.encode(pathStr);
}
- /** {@inheritDoc} */
@Override
public TreeFilter clone() {
return this;
}
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk walker) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
@@ -82,7 +80,6 @@ public class PathSuffixFilter extends TreeFilter {
return super.matchFilter(walker);
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
return true;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/SkipWorkTreeFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/SkipWorkTreeFilter.java
index 1ed2ef32cd..e311523033 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/SkipWorkTreeFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/SkipWorkTreeFilter.java
@@ -36,7 +36,6 @@ public class SkipWorkTreeFilter extends TreeFilter {
this.treeIdx = treeIdx;
}
- /** {@inheritDoc} */
@Override
public boolean include(TreeWalk walker) {
DirCacheIterator i = walker.getTree(treeIdx, DirCacheIterator.class);
@@ -47,19 +46,16 @@ public class SkipWorkTreeFilter extends TreeFilter {
return e == null || !e.isSkipWorkTree();
}
- /** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
return false;
}
- /** {@inheritDoc} */
@Override
public TreeFilter clone() {
return this;
}
- /** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java
index 6dbd508e48..22d430bc27 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java
@@ -11,6 +11,8 @@
package org.eclipse.jgit.treewalk.filter;
import java.io.IOException;
+import java.util.Optional;
+import java.util.Set;
import org.eclipse.jgit.dircache.DirCacheIterator;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
@@ -188,10 +190,8 @@ public abstract class TreeFilter {
* as thrown by {@link #include(TreeWalk)}
* @since 4.7
*/
- public int matchFilter(TreeWalk walker)
- throws MissingObjectException, IncorrectObjectTypeException,
- IOException
- {
+ public int matchFilter(TreeWalk walker) throws MissingObjectException,
+ IncorrectObjectTypeException, IOException {
return include(walker) ? 0 : 1;
}
@@ -210,6 +210,19 @@ public abstract class TreeFilter {
public abstract boolean shouldBeRecursive();
/**
+ * If this filter checks that a specific set of paths have all been
+ * modified, returns that set of paths to be checked against a changed path
+ * filter. Otherwise, returns empty.
+ *
+ * @return a set of paths, or empty
+ *
+ * @since 6.7
+ */
+ public Optional<Set<byte[]>> getPathsBestEffort() {
+ return Optional.empty();
+ }
+
+ /**
* {@inheritDoc}
*
* Clone this tree filter, including its parameters.
@@ -220,7 +233,6 @@ public abstract class TreeFilter {
@Override
public abstract TreeFilter clone();
- /** {@inheritDoc} */
@Override
public String toString() {
String n = getClass().getName();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/BlockList.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/BlockList.java
index 527c5a69df..557e2cde3b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/BlockList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/BlockList.java
@@ -75,13 +75,11 @@ public class BlockList<T> extends AbstractList<T> {
tailBlock = directory[0];
}
- /** {@inheritDoc} */
@Override
public int size() {
return size;
}
- /** {@inheritDoc} */
@Override
public void clear() {
for (T[] block : directory) {
@@ -94,7 +92,6 @@ public class BlockList<T> extends AbstractList<T> {
tailBlock = directory[0];
}
- /** {@inheritDoc} */
@Override
public T get(int index) {
if (index < 0 || size <= index)
@@ -102,7 +99,6 @@ public class BlockList<T> extends AbstractList<T> {
return directory[toDirectoryIndex(index)][toBlockIndex(index)];
}
- /** {@inheritDoc} */
@Override
public T set(int index, T element) {
if (index < 0 || size <= index)
@@ -160,7 +156,6 @@ public class BlockList<T> extends AbstractList<T> {
}
}
- /** {@inheritDoc} */
@Override
public boolean add(T element) {
int i = tailBlkIdx;
@@ -191,7 +186,6 @@ public class BlockList<T> extends AbstractList<T> {
return true;
}
- /** {@inheritDoc} */
@Override
public void add(int index, T element) {
if (index == size) {
@@ -213,7 +207,6 @@ public class BlockList<T> extends AbstractList<T> {
}
}
- /** {@inheritDoc} */
@Override
public T remove(int index) {
if (index == size - 1) {
@@ -253,7 +246,6 @@ public class BlockList<T> extends AbstractList<T> {
tailBlock = directory[tailDirIdx];
}
- /** {@inheritDoc} */
@Override
public Iterator<T> iterator() {
return new MyIterator();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/CachedAuthenticator.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/CachedAuthenticator.java
index 5815c62e89..d8183eb8be 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/CachedAuthenticator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/CachedAuthenticator.java
@@ -32,7 +32,6 @@ public abstract class CachedAuthenticator extends Authenticator {
cached.add(ca);
}
- /** {@inheritDoc} */
@Override
protected final PasswordAuthentication getPasswordAuthentication() {
final String host = getRequestingHost();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/Equality.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/Equality.java
index da1684630b..ff136f7b3b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/Equality.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/Equality.java
@@ -13,22 +13,24 @@ package org.eclipse.jgit.util;
/**
* Equality utilities.
*
- * @since: 6.2
+ * @since 6.2
*/
public class Equality {
/**
- * Compare by reference
- *
- * @param a
- * First object to compare
- * @param b
- * Second object to compare
- * @return {@code true} if the objects are identical, {@code false}
- * otherwise
- *
- * @since 6.2
- */
+ * Compare by reference
+ *
+ * @param <T>
+ * type of the objects to compare
+ * @param a
+ * First object to compare
+ * @param b
+ * Second object to compare
+ * @return {@code true} if the objects are identical, {@code false}
+ * otherwise
+ *
+ * @since 6.2
+ */
@SuppressWarnings("ReferenceEquality")
public static <T> boolean isSameInstance(T a, T b) {
return a == b;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
index aef9e64e02..b8fc4fc1e2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
@@ -31,8 +31,6 @@ import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.security.AccessControlException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.text.MessageFormat;
import java.time.Duration;
import java.time.Instant;
@@ -118,6 +116,7 @@ public abstract class FS {
* Detect the file system
*
* @param cygwinUsed
+ * whether cygwin is used
* @return FS instance
*/
public FS detect(Boolean cygwinUsed) {
@@ -149,8 +148,11 @@ public abstract class FS {
/**
* @param stdout
+ * stdout stream
* @param stderr
+ * stderr stream
* @param rc
+ * return code
*/
public ExecutionResult(TemporaryBuffer stdout, TemporaryBuffer stderr,
int rc) {
@@ -263,7 +265,7 @@ public abstract class FS {
*/
private static final ExecutorService FUTURE_RUNNER = new ThreadPoolExecutor(
0, 5, 30L, TimeUnit.SECONDS,
- new LinkedBlockingQueue<Runnable>(),
+ new LinkedBlockingQueue<>(),
runnable -> {
Thread t = new Thread(runnable,
"JGit-FileStoreAttributeReader-" //$NON-NLS-1$
@@ -287,7 +289,7 @@ public abstract class FS {
*/
private static final ExecutorService SAVE_RUNNER = new ThreadPoolExecutor(
0, 1, 1L, TimeUnit.MILLISECONDS,
- new LinkedBlockingQueue<Runnable>(),
+ new LinkedBlockingQueue<>(),
runnable -> {
Thread t = new Thread(runnable,
"JGit-FileStoreAttributeWriter-" //$NON-NLS-1$
@@ -849,6 +851,7 @@ public abstract class FS {
* timestamp resolution
*
* @param fsTimestampResolution
+ * resolution of filesystem timestamps
*/
public FileStoreAttributes(
@NonNull Duration fsTimestampResolution) {
@@ -1074,6 +1077,7 @@ public abstract class FS {
* a {@link java.io.File} object.
* @return last modified time of f
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
* @deprecated use {@link #lastModifiedInstant(Path)} instead
*/
@@ -1120,6 +1124,7 @@ public abstract class FS {
* @param time
* last modified time
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
* @deprecated use {@link #setLastModified(Path, Instant)} instead
*/
@@ -1138,6 +1143,7 @@ public abstract class FS {
* @param time
* last modified time
* @throws java.io.IOException
+ * if an IO error occurred
* @since 5.1.9
*/
public void setLastModified(Path p, Instant time) throws IOException {
@@ -1152,6 +1158,7 @@ public abstract class FS {
* a {@link java.io.File} object.
* @return length of a file
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
*/
public long length(File path) throws IOException {
@@ -1164,7 +1171,7 @@ public abstract class FS {
* @param f
* a {@link java.io.File} object.
* @throws java.io.IOException
- * this may be a Java7 subclass with detailed information
+ * if an IO error occurred
* @since 3.3
*/
public void delete(File f) throws IOException {
@@ -1264,8 +1271,10 @@ public abstract class FS {
* Return all the attributes of a file, without following symbolic links.
*
* @param file
+ * the file
* @return {@link BasicFileAttributes} of the file
- * @throws IOException in case of any I/O errors accessing the file
+ * @throws IOException
+ * in case of any I/O errors accessing the file
*
* @since 4.5.6
*/
@@ -1283,11 +1292,10 @@ public abstract class FS {
}
private File defaultUserHomeImpl() {
- String home = AccessController.doPrivileged(
- (PrivilegedAction<String>) () -> System.getProperty("user.home") //$NON-NLS-1$
- );
- if (home == null || home.length() == 0)
+ String home = SystemReader.getInstance().getProperty("user.home"); //$NON-NLS-1$
+ if (StringUtils.isEmptyOrNull(home)) {
return null;
+ }
return new File(home).getAbsoluteFile();
}
@@ -1671,6 +1679,7 @@ public abstract class FS {
* a {@link java.io.File} object.
* @return target of link or null
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
*/
public String readSymLink(File path) throws IOException {
@@ -1684,6 +1693,7 @@ public abstract class FS {
* a {@link java.io.File} object.
* @return true if the path is a symbolic link (and we support these)
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
*/
public boolean isSymLink(File path) throws IOException {
@@ -1738,6 +1748,7 @@ public abstract class FS {
* @return true if path is hidden, either starts with . on unix or has the
* hidden attribute in windows
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
*/
public boolean isHidden(File path) throws IOException {
@@ -1752,6 +1763,7 @@ public abstract class FS {
* @param hidden
* whether to set the file hidden
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
*/
public void setHidden(File path, boolean hidden) throws IOException {
@@ -1766,6 +1778,7 @@ public abstract class FS {
* @param target
* target path of the symlink
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
*/
public void createSymLink(File path, String target) throws IOException {
@@ -1782,6 +1795,7 @@ public abstract class FS {
* @return <code>true</code> if the file was created, <code>false</code> if
* the file already existed
* @throws java.io.IOException
+ * if an IO error occurred
* @deprecated use {@link #createNewFileAtomic(File)} instead
* @since 4.5
*/
@@ -1852,6 +1866,7 @@ public abstract class FS {
* @return LockToken this token must be closed after the created file was
* deleted
* @throws IOException
+ * if an IO error occurred
* @since 4.7
*/
public LockToken createNewFileAtomic(File path) throws IOException {
@@ -2317,7 +2332,9 @@ public abstract class FS {
* The standard input stream passed to the process
* @return The result of the executed command
* @throws java.lang.InterruptedException
+ * if thread was interrupted
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
*/
public ExecutionResult execute(ProcessBuilder pb, InputStream in)
@@ -2441,8 +2458,10 @@ public abstract class FS {
* Constructor when there are issues with reading. All attributes except
* given will be set to the default values.
*
- * @param fs
* @param path
+ * file path
+ * @param fs
+ * FS to use
*/
public Attributes(File path, FS fs) {
this(fs, path, false, false, false, false, false, 0L, EPOCH, 0L);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java
index 1c113617f8..6f31847996 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java
@@ -418,6 +418,7 @@ public class FS_POSIX extends FS {
* @return LockToken this lock token must be held until the file is no
* longer needed
* @throws IOException
+ * if an IO error occurred
* @since 5.0
*/
@Override
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java
index ae73d3feb8..5926655b7b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java
@@ -58,43 +58,36 @@ public class FS_Win32 extends FS {
super(src);
}
- /** {@inheritDoc} */
@Override
public FS newInstance() {
return new FS_Win32(this);
}
- /** {@inheritDoc} */
@Override
public boolean supportsExecute() {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean canExecute(File f) {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean setExecute(File f, boolean canExec) {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean isCaseSensitive() {
return false;
}
- /** {@inheritDoc} */
@Override
public boolean retryFailedLockFileCommit() {
return true;
}
- /** {@inheritDoc} */
@Override
public Entry[] list(File directory, FileModeStrategy fileModeStrategy) {
if (!Files.isDirectory(directory.toPath(), LinkOption.NOFOLLOW_LINKS)) {
@@ -140,7 +133,6 @@ public class FS_Win32 extends FS {
return result.toArray(new Entry[0]);
}
- /** {@inheritDoc} */
@Override
protected File discoverGitExe() {
String path = SystemReader.getInstance().getenv("PATH"); //$NON-NLS-1$
@@ -171,7 +163,6 @@ public class FS_Win32 extends FS {
return gitExe;
}
- /** {@inheritDoc} */
@Override
protected File userHomeImpl() {
String home = SystemReader.getInstance().getenv("HOME"); //$NON-NLS-1$
@@ -194,7 +185,6 @@ public class FS_Win32 extends FS {
return super.userHomeImpl();
}
- /** {@inheritDoc} */
@Override
public ProcessBuilder runInShell(String cmd, String[] args) {
List<String> argv = new ArrayList<>(3 + args.length);
@@ -207,7 +197,6 @@ public class FS_Win32 extends FS {
return proc;
}
- /** {@inheritDoc} */
@Override
public Attributes getAttributes(File path) {
return FileUtils.getFileAttributesBasic(this, path);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java
index add5498175..635351ac84 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java
@@ -72,13 +72,11 @@ public class FS_Win32_Cygwin extends FS_Win32 {
super(src);
}
- /** {@inheritDoc} */
@Override
public FS newInstance() {
return new FS_Win32_Cygwin(this);
}
- /** {@inheritDoc} */
@Override
public File resolve(File dir, String pn) {
String useCygPath = System.getProperty("jgit.usecygpath"); //$NON-NLS-1$
@@ -99,7 +97,6 @@ public class FS_Win32_Cygwin extends FS_Win32 {
return super.resolve(dir, pn);
}
- /** {@inheritDoc} */
@Override
protected File userHomeImpl() {
final String home = AccessController.doPrivileged(
@@ -110,7 +107,6 @@ public class FS_Win32_Cygwin extends FS_Win32 {
return resolve(new File("."), home); //$NON-NLS-1$
}
- /** {@inheritDoc} */
@Override
public ProcessBuilder runInShell(String cmd, String[] args) {
List<String> argv = new ArrayList<>(4 + args.length);
@@ -129,14 +125,12 @@ public class FS_Win32_Cygwin extends FS_Win32 {
return QuotedString.BOURNE.quote(cmd.replace(File.separatorChar, '/'));
}
- /** {@inheritDoc} */
@Override
public String relativize(String base, String other) {
final String relativized = super.relativize(base, other);
return relativized.replace(File.separatorChar, '/');
}
- /** {@inheritDoc} */
@Override
public ProcessResult runHookIfPresent(Repository repository, String hookName,
String[] args, OutputStream outRedirect, OutputStream errRedirect,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java
index f013e7e095..9d052d13fa 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java
@@ -288,6 +288,7 @@ public class FileUtils {
* @throws java.nio.file.AtomicMoveNotSupportedException
* if file cannot be moved as an atomic file system operation
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.1
*/
public static void rename(final File src, final File dst,
@@ -446,6 +447,7 @@ public class FileUtils {
* the target of the symbolic link
* @return the path to the symbolic link
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.2
*/
public static Path createSymLink(File path, String target)
@@ -474,6 +476,7 @@ public class FileUtils {
* a {@link java.io.File} object.
* @return target path of the symlink, or null if it is not a symbolic link
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.0
*/
public static String readSymLink(File path) throws IOException {
@@ -499,6 +502,7 @@ public class FileUtils {
* The parent dir, can be null to use system default temp dir.
* @return the temp dir created.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 3.4
*/
public static File createTempDir(String prefix, String suffix, File dir)
@@ -749,7 +753,10 @@ public class FileUtils {
}
/**
+ * Check if file is a symlink
+ *
* @param file
+ * the file to be checked if it is a symbolic link
* @return {@code true} if the passed file is a symbolic link
*/
static boolean isSymlink(File file) {
@@ -757,10 +764,14 @@ public class FileUtils {
}
/**
+ * Get the lastModified attribute for a given file
+ *
* @param file
+ * the file
* @return lastModified attribute for given file, not following symbolic
* links
* @throws IOException
+ * if an IO error occurred
* @deprecated use {@link #lastModifiedInstant(Path)} instead which returns
* FileTime
*/
@@ -771,7 +782,10 @@ public class FileUtils {
}
/**
+ * Get last modified timestamp of a file
+ *
* @param path
+ * file path
* @return lastModified attribute for given file, not following symbolic
* links
*/
@@ -795,8 +809,10 @@ public class FileUtils {
* Return all the attributes of a file, without following symbolic links.
*
* @param file
+ * the file
* @return {@link BasicFileAttributes} of the file
- * @throws IOException in case of any I/O errors accessing the file
+ * @throws IOException
+ * in case of any I/O errors accessing the file
*
* @since 4.5.6
*/
@@ -808,8 +824,11 @@ public class FileUtils {
* Set the last modified time of a file system object.
*
* @param file
+ * the file
* @param time
+ * last modified timestamp
* @throws IOException
+ * if an IO error occurred
*/
@Deprecated
static void setLastModified(File file, long time) throws IOException {
@@ -820,8 +839,11 @@ public class FileUtils {
* Set the last modified time of a file system object.
*
* @param path
+ * file path
* @param time
+ * last modified timestamp of the file
* @throws IOException
+ * if an IO error occurred
*/
static void setLastModified(Path path, Instant time)
throws IOException {
@@ -830,6 +852,7 @@ public class FileUtils {
/**
* @param file
+ * the file
* @return {@code true} if the given file exists, not following symbolic
* links
*/
@@ -838,9 +861,13 @@ public class FileUtils {
}
/**
+ * Check if file is hidden (on Windows)
+ *
* @param file
+ * the file
* @return {@code true} if the given file is hidden
* @throws IOException
+ * if an IO error occurred
*/
static boolean isHidden(File file) throws IOException {
return Files.isHidden(toPath(file));
@@ -854,6 +881,7 @@ public class FileUtils {
* @param hidden
* a boolean.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.1
*/
public static void setHidden(File file, boolean hidden) throws IOException {
@@ -868,6 +896,7 @@ public class FileUtils {
* a {@link java.io.File}.
* @return length of the given file
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.1
*/
public static long getLength(File file) throws IOException {
@@ -879,7 +908,10 @@ public class FileUtils {
}
/**
+ * Check if file is directory
+ *
* @param file
+ * the file
* @return {@code true} if the given file is a directory, not following
* symbolic links
*/
@@ -888,7 +920,10 @@ public class FileUtils {
}
/**
+ * Check if File is a file
+ *
* @param file
+ * the file
* @return {@code true} if the given file is a file, not following symbolic
* links
*/
@@ -930,7 +965,9 @@ public class FileUtils {
/**
* @param fs
+ * a {@link org.eclipse.jgit.util.FS} object.
* @param file
+ * the file
* @return non null attributes object
*/
static Attributes getFileAttributesBasic(FS fs, File file) {
@@ -1079,6 +1116,7 @@ public class FileUtils {
* @param f
* the file to touch
* @throws IOException
+ * if an IO error occurred
* @since 5.1.8
*/
public static void touch(Path f) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/HttpSupport.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/HttpSupport.java
index e3ba606346..1942342c45 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/HttpSupport.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/HttpSupport.java
@@ -321,6 +321,7 @@ public class HttpSupport {
* a {@link org.eclipse.jgit.transport.http.HttpConnection}
* object.
* @throws java.io.IOException
+ * if an IO error occurred
* @since 4.3
*/
public static void disableSslVerify(HttpConnection conn)
@@ -346,7 +347,9 @@ public class HttpSupport {
* that have all available protocols enabled already, up to the one
* specified.
* <p>
+ * <br>
* <table>
+ * <caption>TLS versions</caption>
* <tr>
* <td>SSLContext.getInstance()</td>
* <td>OpenJDK</td>
@@ -354,16 +357,16 @@ public class HttpSupport {
* </tr>
* <tr>
* <td>"TLS"</td>
- * <td>Supported: TLSv1, TLSV1.1, TLSv1.2 (+ TLSv1.3)<br />
+ * <td>Supported: TLSv1, TLSV1.1, TLSv1.2 (+ TLSv1.3)<br>
* Enabled: TLSv1, TLSV1.1, TLSv1.2 (+ TLSv1.3)</td>
- * <td>Supported: TLSv1, TLSV1.1, TLSv1.2<br />
+ * <td>Supported: TLSv1, TLSV1.1, TLSv1.2<br>
* Enabled: TLSv1</td>
* </tr>
* <tr>
* <td>"TLSv1.2"</td>
- * <td>Supported: TLSv1, TLSV1.1, TLSv1.2<br />
+ * <td>Supported: TLSv1, TLSV1.1, TLSv1.2<br>
* Enabled: TLSv1, TLSV1.1, TLSv1.2</td>
- * <td>Supported: TLSv1, TLSV1.1, TLSv1.2<br />
+ * <td>Supported: TLSv1, TLSV1.1, TLSv1.2<br>
* Enabled: TLSv1.2</td>
* </tr>
* </table>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java
index 80877bbdc6..8cc5316271 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java
@@ -66,19 +66,7 @@ public class IO {
public static final byte[] readSome(File path, int limit)
throws FileNotFoundException, IOException {
try (SilentFileInputStream in = new SilentFileInputStream(path)) {
- byte[] buf = new byte[limit];
- int cnt = 0;
- for (;;) {
- int n = in.read(buf, cnt, buf.length - cnt);
- if (n <= 0)
- break;
- cnt += n;
- }
- if (cnt == buf.length)
- return buf;
- byte[] res = new byte[cnt];
- System.arraycopy(buf, 0, res, 0, cnt);
- return res;
+ return in.readNBytes(limit);
}
}
@@ -99,37 +87,10 @@ public class IO {
public static final byte[] readFully(File path, int max)
throws FileNotFoundException, IOException {
try (SilentFileInputStream in = new SilentFileInputStream(path)) {
- long sz = Math.max(path.length(), 1);
- if (sz > max)
+ byte[] buf = in.readNBytes(max);
+ if (in.read() != -1) {
throw new IOException(MessageFormat.format(
JGitText.get().fileIsTooLarge, path));
-
- byte[] buf = new byte[(int) sz];
- int valid = 0;
- for (;;) {
- if (buf.length == valid) {
- if (buf.length == max) {
- int next = in.read();
- if (next < 0)
- break;
-
- throw new IOException(MessageFormat.format(
- JGitText.get().fileIsTooLarge, path));
- }
-
- byte[] nb = new byte[Math.min(buf.length * 2, max)];
- System.arraycopy(buf, 0, nb, 0, valid);
- buf = nb;
- }
- int n = in.read(buf, valid, buf.length - valid);
- if (n < 0)
- break;
- valid += n;
- }
- if (valid < buf.length) {
- byte[] nb = new byte[valid];
- System.arraycopy(buf, 0, nb, 0, valid);
- buf = nb;
}
return buf;
}
@@ -157,26 +118,7 @@ public class IO {
*/
public static ByteBuffer readWholeStream(InputStream in, int sizeHint)
throws IOException {
- byte[] out = new byte[sizeHint];
- int pos = 0;
- while (pos < out.length) {
- int read = in.read(out, pos, out.length - pos);
- if (read < 0)
- return ByteBuffer.wrap(out, 0, pos);
- pos += read;
- }
-
- int last = in.read();
- if (last < 0)
- return ByteBuffer.wrap(out, 0, pos);
-
- try (TemporaryBuffer.Heap tmp = new TemporaryBuffer.Heap(
- Integer.MAX_VALUE)) {
- tmp.write(out);
- tmp.write(last);
- tmp.copy(in);
- return ByteBuffer.wrap(tmp.toByteArray());
- }
+ return ByteBuffer.wrap(in.readAllBytes());
}
/**
@@ -197,13 +139,9 @@ public class IO {
*/
public static void readFully(final InputStream fd, final byte[] dst,
int off, int len) throws IOException {
- while (len > 0) {
- final int r = fd.read(dst, off, len);
- if (r <= 0)
- throw new EOFException(JGitText.get().shortReadOfBlock);
- off += r;
- len -= r;
- }
+ int read = fd.readNBytes(dst, off, len);
+ if (read != len)
+ throw new EOFException(JGitText.get().shortReadOfBlock);
}
/**
@@ -271,14 +209,7 @@ public class IO {
*/
public static int readFully(InputStream fd, byte[] dst, int off)
throws IOException {
- int r;
- int len = 0;
- while (off < dst.length
- && (r = fd.read(dst, off, dst.length - off)) >= 0) {
- off += r;
- len += r;
- }
- return len;
+ return fd.readNBytes(dst, off, dst.length - off);
}
/**
@@ -300,6 +231,7 @@ public class IO {
*/
public static void skipFully(InputStream fd, long toSkip)
throws IOException {
+ // same as fd.skipNBytes(toSkip) of JDK 12;
while (toSkip > 0) {
final long r = fd.skip(toSkip);
if (r <= 0)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java
index 635dd6a1cc..6a5190c6a2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java
@@ -204,7 +204,6 @@ public class IntList {
entries = n;
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder r = new StringBuilder();
@@ -232,8 +231,8 @@ public class IntList {
* the first int to compare
* @param second
* the second int to compare
- * @return a negative number if first < second, 0 if first == second, or
- * a positive number if first > second
+ * @return a negative number if first &lt; second, 0 if first == second, or
+ * a positive number if first &gt; second
*/
int compare(int first, int second);
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/LfsFactory.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/LfsFactory.java
index 7456c71f5f..d0b7b9fd2b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/LfsFactory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/LfsFactory.java
@@ -105,6 +105,7 @@ public class LfsFactory {
* @return a loader for the actual data of a blob, or the original loader in
* case LFS is not applicable.
* @throws IOException
+ * if an IO error occurred
*/
public ObjectLoader applySmudgeFilter(Repository db,
ObjectLoader loader, Attribute attribute) throws IOException {
@@ -117,6 +118,7 @@ public class LfsFactory {
* @param repo
* the {@link Repository} the hook is applied to.
* @param outputStream
+ * output stream
* @return a {@link PrePushHook} implementation or <code>null</code>
*/
@Nullable
@@ -131,7 +133,9 @@ public class LfsFactory {
* @param repo
* the {@link Repository} the hook is applied to.
* @param outputStream
+ * output stream
* @param errorStream
+ * error stream
* @return a {@link PrePushHook} implementation or <code>null</code>
* @since 5.6
*/
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/LongList.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/LongList.java
index b2bdfc1fd7..47f38f4627 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/LongList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/LongList.java
@@ -140,7 +140,6 @@ public class LongList {
entries = n;
}
- /** {@inheritDoc} */
@Override
public String toString() {
final StringBuilder r = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawCharSequence.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawCharSequence.java
index 3de7a1587c..be4bd9e356 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawCharSequence.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawCharSequence.java
@@ -41,25 +41,21 @@ public final class RawCharSequence implements CharSequence {
endPtr = end;
}
- /** {@inheritDoc} */
@Override
public char charAt(int index) {
return (char) (buffer[startPtr + index] & 0xff);
}
- /** {@inheritDoc} */
@Override
public int length() {
return endPtr - startPtr;
}
- /** {@inheritDoc} */
@Override
public CharSequence subSequence(int start, int end) {
return new RawCharSequence(buffer, startPtr + start, startPtr + end);
}
- /** {@inheritDoc} */
@Override
public String toString() {
final int n = length();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
index 0e8e9b3d84..00e55f5bb3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
@@ -868,6 +868,26 @@ public final class RawParseUtils {
}
/**
+ * Parse the "encoding " header into a character set reference.
+ * <p>
+ * If unsuccessful, return UTF-8.
+ *
+ * @param buffer
+ * buffer to scan.
+ * @return the Java character set representation. Never null. Default to
+ * UTF-8.
+ * @see #parseEncoding(byte[])
+ * @since 6.7
+ */
+ public static Charset guessEncoding(byte[] buffer) {
+ try {
+ return parseEncoding(buffer);
+ } catch (IllegalCharsetNameException | UnsupportedCharsetException e) {
+ return UTF_8;
+ }
+ }
+
+ /**
* Parse a name string (e.g. author, committer, tagger) into a PersonIdent.
* <p>
* Leading spaces won't be trimmed from the string, i.e. will show up in the
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawSubStringPattern.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawSubStringPattern.java
index 57464f3c41..04fdcd0fa4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawSubStringPattern.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawSubStringPattern.java
@@ -98,7 +98,6 @@ public class RawSubStringPattern {
return needleString;
}
- /** {@inheritDoc} */
@Override
public String toString() {
return pattern();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/RefList.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/RefList.java
index 462bab081a..2a287cfe78 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/RefList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/RefList.java
@@ -43,6 +43,8 @@ public class RefList<T extends Ref> implements Iterable<Ref> {
/**
* Create an empty unmodifiable reference list.
*
+ * @param <T>
+ * type of reference being stored.
* @return an empty unmodifiable reference list.
*/
@SuppressWarnings("unchecked")
@@ -70,7 +72,6 @@ public class RefList<T extends Ref> implements Iterable<Ref> {
this.cnt = src.cnt;
}
- /** {@inheritDoc} */
@Override
public Iterator<Ref> iterator() {
return new Iterator<>() {
@@ -286,7 +287,6 @@ public class RefList<T extends Ref> implements Iterable<Ref> {
return add(idx, ref);
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder r = new StringBuilder();
@@ -305,6 +305,8 @@ public class RefList<T extends Ref> implements Iterable<Ref> {
/**
* Create a {@link Collector} for {@link Ref}.
*
+ * @param <T>
+ * type of reference being stored.
* @param mergeFunction
* if specified the result will be sorted and deduped.
* @return {@link Collector} for {@link Ref}
@@ -390,6 +392,7 @@ public class RefList<T extends Ref> implements Iterable<Ref> {
* after additions are complete using {@link #sort()}.
*
* @param ref
+ * reference to add
*/
public void add(T ref) {
if (list.length == size) {
@@ -404,6 +407,7 @@ public class RefList<T extends Ref> implements Iterable<Ref> {
* Add all items from another builder.
*
* @param other
+ * another builder
* @since 5.4
*/
public void addAll(Builder other) {
@@ -454,6 +458,7 @@ public class RefList<T extends Ref> implements Iterable<Ref> {
* Dedupe the refs in place. Must be called after {@link #sort}.
*
* @param mergeFunction
+ * function used for de-duplication
*/
@SuppressWarnings("unchecked")
void dedupe(BinaryOperator<T> mergeFunction) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/RefMap.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/RefMap.java
index c68a76cef4..a4d1fd5b70 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/RefMap.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/RefMap.java
@@ -119,13 +119,11 @@ public class RefMap extends AbstractMap<String, Ref> {
this.resolved = (RefList<Ref>) resolved;
}
- /** {@inheritDoc} */
@Override
public boolean containsKey(Object name) {
return get(name) != null;
}
- /** {@inheritDoc} */
@Override
public Ref get(Object key) {
String name = toRefName((String) key);
@@ -137,7 +135,6 @@ public class RefMap extends AbstractMap<String, Ref> {
return ref;
}
- /** {@inheritDoc} */
@Override
public Ref put(String keyName, Ref value) {
String name = toRefName(keyName);
@@ -165,7 +162,6 @@ public class RefMap extends AbstractMap<String, Ref> {
return prior;
}
- /** {@inheritDoc} */
@Override
public Ref remove(Object key) {
String name = toRefName((String) key);
@@ -189,13 +185,11 @@ public class RefMap extends AbstractMap<String, Ref> {
return res;
}
- /** {@inheritDoc} */
@Override
public boolean isEmpty() {
return entrySet().isEmpty();
}
- /** {@inheritDoc} */
@Override
public Set<Entry<String, Ref>> entrySet() {
if (entrySet == null) {
@@ -238,7 +232,6 @@ public class RefMap extends AbstractMap<String, Ref> {
return entrySet;
}
- /** {@inheritDoc} */
@Override
public String toString() {
StringBuilder r = new StringBuilder();
@@ -259,6 +252,7 @@ public class RefMap extends AbstractMap<String, Ref> {
* Create a {@link Collector} for {@link Ref}.
*
* @param mergeFunction
+ * merge function
* @return {@link Collector} for {@link Ref}
* @since 5.4
*/
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java
index e29704158d..42a76b5b16 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java
@@ -48,6 +48,7 @@ public class SshSupport {
* cases.
* @return The entire output read from stdout.
* @throws IOException
+ * if an IO error occurred
* @throws CommandFailedException
* if the ssh command execution failed, error message contains
* the content of stderr.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
index 917add3609..274706042b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
@@ -181,9 +181,9 @@ public final class StringUtils {
*
* @param stringValue
* the string to parse.
- * @return the boolean interpretation of {@code value}.
+ * @return the boolean interpretation of {@code stringValue}.
* @throws java.lang.IllegalArgumentException
- * if {@code value} is not recognized as one of the standard
+ * if {@code stringValue} is not recognized as one of the standard
* boolean names.
*/
public static boolean toBoolean(String stringValue) {
@@ -346,7 +346,7 @@ public final class StringUtils {
* allow negative numbers, too
* @return the value parsed
* @throws NumberFormatException
- * if the {@value} is not parseable, or beyond the range of
+ * if the {@code value} is not parseable, or beyond the range of
* {@link Long}
* @throws StringIndexOutOfBoundsException
* if the string is empty or contains only whitespace, or
@@ -420,7 +420,7 @@ public final class StringUtils {
* allow negative numbers, too
* @return the value parsed
* @throws NumberFormatException
- * if the {@value} is not parseable or beyond the range of
+ * if the {@code value} is not parseable or beyond the range of
* {@link Integer}
* @throws StringIndexOutOfBoundsException
* if the string is empty or contains only whitespace, or
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 a8a77904a2..4a48762710 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
@@ -39,6 +39,7 @@ import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectChecker;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.storage.file.FileBasedConfig;
+import org.eclipse.jgit.storage.file.UserConfigFile;
import org.eclipse.jgit.util.time.MonotonicClock;
import org.eclipse.jgit.util.time.MonotonicSystemClock;
import org.slf4j.Logger;
@@ -124,28 +125,20 @@ public abstract class SystemReader {
@Override
public FileBasedConfig openUserConfig(Config parent, FS fs) {
- return new FileBasedConfig(parent, new File(fs.userHome(), ".gitconfig"), //$NON-NLS-1$
- fs);
- }
-
- private Path getXDGConfigHome(FS fs) {
- String configHomePath = getenv(Constants.XDG_CONFIG_HOME);
- if (StringUtils.isEmptyOrNull(configHomePath)) {
- configHomePath = new File(fs.userHome(), ".config") //$NON-NLS-1$
- .getAbsolutePath();
- }
- try {
- return Paths.get(configHomePath);
- } catch (InvalidPathException e) {
- LOG.error(JGitText.get().logXDGConfigHomeInvalid,
- configHomePath, e);
+ File homeFile = new File(fs.userHome(), ".gitconfig"); //$NON-NLS-1$
+ Path xdgPath = getXdgConfigDirectory(fs);
+ if (xdgPath != null) {
+ Path configPath = xdgPath.resolve("git") //$NON-NLS-1$
+ .resolve(Constants.CONFIG);
+ return new UserConfigFile(parent, homeFile, configPath.toFile(),
+ fs);
}
- return null;
+ return new FileBasedConfig(parent, homeFile, fs);
}
@Override
public FileBasedConfig openJGitConfig(Config parent, FS fs) {
- Path xdgPath = getXDGConfigHome(fs);
+ Path xdgPath = getXdgConfigDirectory(fs);
if (xdgPath != null) {
Path configPath = xdgPath.resolve("jgit") //$NON-NLS-1$
.resolve(Constants.CONFIG);
@@ -391,6 +384,36 @@ public abstract class SystemReader {
}
/**
+ * Gets the directory denoted by environment variable XDG_CONFIG_HOME. If
+ * the variable is not set or empty, return a path for
+ * {@code $HOME/.config}.
+ *
+ * @param fileSystem
+ * {@link FS} to get the user's home directory
+ * @return a {@link Path} denoting the directory, which may exist or not, or
+ * {@code null} if the environment variable is not set and there is
+ * no home directory, or the path is invalid.
+ * @since 6.7
+ */
+ public Path getXdgConfigDirectory(FS fileSystem) {
+ String configHomePath = getenv(Constants.XDG_CONFIG_HOME);
+ if (StringUtils.isEmptyOrNull(configHomePath)) {
+ File home = fileSystem.userHome();
+ if (home == null) {
+ return null;
+ }
+ configHomePath = new File(home, ".config").getAbsolutePath(); //$NON-NLS-1$
+ }
+ try {
+ return Paths.get(configHomePath);
+ } catch (InvalidPathException e) {
+ LOG.error(JGitText.get().logXDGConfigHomeInvalid, configHomePath,
+ e);
+ }
+ return null;
+ }
+
+ /**
* Update config and its parents if they seem modified
*
* @param config
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFInputStream.java
index cedb159827..ccc19691b1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFInputStream.java
@@ -57,14 +57,12 @@ public class AutoCRLFInputStream extends InputStream {
this.detectBinary = detectBinary;
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
final int read = read(single, 0, 1);
return read == 1 ? single[0] & 0xff : -1;
}
- /** {@inheritDoc} */
@Override
public int read(byte[] bs, int off, int len) throws IOException {
if (len == 0)
@@ -103,7 +101,6 @@ public class AutoCRLFInputStream extends InputStream {
return n;
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
in.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java
index 305ccbd7e6..9fb316f28d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java
@@ -65,14 +65,12 @@ public class AutoCRLFOutputStream extends OutputStream {
this.detectBinary = detectBinary;
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
onebytebuf[0] = (byte) b;
write(onebytebuf, 0, 1);
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b) throws IOException {
int overflow = buffer(b, 0, b.length);
@@ -80,7 +78,6 @@ public class AutoCRLFOutputStream extends OutputStream {
write(b, b.length - overflow, overflow);
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b, int startOff, int startLen)
throws IOException {
@@ -151,7 +148,6 @@ public class AutoCRLFOutputStream extends OutputStream {
write(binbuf, 0, cachedLen);
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
if (binbufcnt <= binbuf.length) {
@@ -161,7 +157,6 @@ public class AutoCRLFOutputStream extends OutputStream {
out.flush();
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
flush();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFInputStream.java
index 7db882c074..2385865674 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFInputStream.java
@@ -185,14 +185,12 @@ public class AutoLFInputStream extends InputStream {
this.forCheckout = false;
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
final int read = read(single, 0, 1);
return read == 1 ? single[0] & 0xff : -1;
}
- /** {@inheritDoc} */
@Override
public int read(byte[] bs, int off, int len)
throws IOException {
@@ -242,7 +240,6 @@ public class AutoLFInputStream extends InputStream {
return isBinary;
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
in.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java
index a0e9fb68c5..e56991d43a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java
@@ -69,14 +69,12 @@ public class AutoLFOutputStream extends OutputStream {
this.detectBinary = detectBinary;
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
onebytebuf[0] = (byte) b;
write(onebytebuf, 0, 1);
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b) throws IOException {
int overflow = buffer(b, 0, b.length);
@@ -85,7 +83,6 @@ public class AutoLFOutputStream extends OutputStream {
}
}
- /** {@inheritDoc} */
@Override
public void write(byte[] b, int startOff, int startLen)
throws IOException {
@@ -164,7 +161,6 @@ public class AutoLFOutputStream extends OutputStream {
write(binbuf, 0, cachedLen);
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
if (binbufcnt <= binbuf.length) {
@@ -173,7 +169,6 @@ public class AutoLFOutputStream extends OutputStream {
out.flush();
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
flush();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/CountingOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/CountingOutputStream.java
index 782f3f4ca6..d0049d29de 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/CountingOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/CountingOutputStream.java
@@ -39,27 +39,23 @@ public class CountingOutputStream extends OutputStream {
return cnt;
}
- /** {@inheritDoc} */
@Override
public void write(int val) throws IOException {
out.write(val);
cnt++;
}
- /** {@inheritDoc} */
@Override
public void write(byte[] buf, int off, int len) throws IOException {
out.write(buf, off, len);
cnt += len;
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
out.flush();
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
out.close();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/DisabledOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/DisabledOutputStream.java
index f1bfbe29a5..03c25bb702 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/DisabledOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/DisabledOutputStream.java
@@ -27,7 +27,6 @@ public final class DisabledOutputStream extends OutputStream {
// more than one instance from being created.
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
// We shouldn't be writing output at this stage, there
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/IsolatedOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/IsolatedOutputStream.java
index 2bbdbefd38..1faf6ea9aa 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/IsolatedOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/IsolatedOutputStream.java
@@ -58,13 +58,11 @@ public class IsolatedOutputStream extends OutputStream {
new ArrayBlockingQueue<>(1), new NamedThreadFactory());
}
- /** {@inheritDoc} */
@Override
public void write(int ch) throws IOException {
write(new byte[] { (byte) ch }, 0, 1);
}
- /** {@inheritDoc} */
@Override
public void write(byte[] buf, int pos, int cnt)
throws IOException {
@@ -75,7 +73,6 @@ public class IsolatedOutputStream extends OutputStream {
});
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
checkClosed();
@@ -85,7 +82,6 @@ public class IsolatedOutputStream extends OutputStream {
});
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
if (!copier.isShutdown()) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/LimitedInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/LimitedInputStream.java
index 88006242d9..681a52988e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/LimitedInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/LimitedInputStream.java
@@ -47,21 +47,18 @@ public abstract class LimitedInputStream extends FilterInputStream {
this.limit = limit;
}
- /** {@inheritDoc} */
@Override
public int available() throws IOException {
return (int) Math.min(in.available(), left);
}
// it's okay to mark even if mark isn't supported, as reset won't work
- /** {@inheritDoc} */
@Override
public synchronized void mark(int readLimit) {
in.mark(readLimit);
mark = left;
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
if (left == 0) {
@@ -78,7 +75,6 @@ public abstract class LimitedInputStream extends FilterInputStream {
return result;
}
- /** {@inheritDoc} */
@Override
public int read(byte[] b, int off, int len) throws IOException {
if (left == 0) {
@@ -96,7 +92,6 @@ public abstract class LimitedInputStream extends FilterInputStream {
return result;
}
- /** {@inheritDoc} */
@Override
public synchronized void reset() throws IOException {
if (!in.markSupported())
@@ -109,7 +104,6 @@ public abstract class LimitedInputStream extends FilterInputStream {
left = mark;
}
- /** {@inheritDoc} */
@Override
public long skip(long n) throws IOException {
n = Math.min(n, left);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/MessageWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/MessageWriter.java
index 2637766153..8d5b8fdcba 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/MessageWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/MessageWriter.java
@@ -51,7 +51,6 @@ public class MessageWriter extends Writer {
enc = new OutputStreamWriter(getRawStream(), UTF_8);
}
- /** {@inheritDoc} */
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
synchronized (buf) {
@@ -71,20 +70,17 @@ public class MessageWriter extends Writer {
return buf;
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
// Do nothing, we are buffered with no resources.
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
// Do nothing, we are buffered with no resources.
}
/** @return string version of all buffered data. */
- /** {@inheritDoc} */
@Override
public String toString() {
return RawParseUtils.decode(buf.toByteArray());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java
index c0724e43f2..ed412fa6f5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java
@@ -67,7 +67,6 @@ public class StreamCopyThread extends Thread {
}
}
- /** {@inheritDoc} */
@Override
public void run() {
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeInputStream.java
index 56d0169f7d..96376bfc6a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeInputStream.java
@@ -46,7 +46,6 @@ public class TeeInputStream extends InputStream {
this.dst = dst;
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
byte[] b = skipBuffer();
@@ -54,7 +53,6 @@ public class TeeInputStream extends InputStream {
return n == 1 ? b[0] & 0xff : -1;
}
- /** {@inheritDoc} */
@Override
public long skip(long count) throws IOException {
long skipped = 0;
@@ -71,7 +69,6 @@ public class TeeInputStream extends InputStream {
return skipped;
}
- /** {@inheritDoc} */
@Override
public int read(byte[] b, int off, int len) throws IOException {
if (len == 0)
@@ -83,7 +80,6 @@ public class TeeInputStream extends InputStream {
return n;
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
byte[] b = skipBuffer();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeOutputStream.java
index e6fdd709b2..ab084a66f2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TeeOutputStream.java
@@ -34,35 +34,30 @@ public class TeeOutputStream extends OutputStream {
this.stream2 = stream2;
}
- /** {@inheritDoc} */
@Override
public void write(byte[] buf) throws IOException {
this.stream1.write(buf);
this.stream2.write(buf);
}
- /** {@inheritDoc} */
@Override
public void write(byte[] buf, int off, int len) throws IOException {
this.stream1.write(buf, off, len);
this.stream2.write(buf, off, len);
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
this.stream1.write(b);
this.stream2.write(b);
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
this.stream1.flush();
this.stream2.flush();
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/ThrowingPrintWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/ThrowingPrintWriter.java
index 3bc92d5bcd..4764676c88 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/ThrowingPrintWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/ThrowingPrintWriter.java
@@ -41,19 +41,16 @@ public class ThrowingPrintWriter extends Writer {
);
}
- /** {@inheritDoc} */
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
out.write(cbuf, off, len);
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
out.flush();
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
out.close();
@@ -62,8 +59,10 @@ public class ThrowingPrintWriter extends Writer {
/**
* Print a string and terminate with a line feed.
*
- * @param s a {@link java.lang.String} object.
+ * @param s
+ * a {@link java.lang.String} object.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void println(String s) throws IOException {
print(s + LF);
@@ -73,6 +72,7 @@ public class ThrowingPrintWriter extends Writer {
* Print a platform dependent new line
*
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void println() throws IOException {
print(LF);
@@ -81,8 +81,10 @@ public class ThrowingPrintWriter extends Writer {
/**
* Print a char
*
- * @param value a char.
+ * @param value
+ * a char.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void print(char value) throws IOException {
print(String.valueOf(value));
@@ -94,6 +96,7 @@ public class ThrowingPrintWriter extends Writer {
* @param value
* an int.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void print(int value) throws IOException {
print(String.valueOf(value));
@@ -102,8 +105,10 @@ public class ThrowingPrintWriter extends Writer {
/**
* Print a long as string
*
- * @param value a long.
+ * @param value
+ * a long.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void print(long value) throws IOException {
print(String.valueOf(value));
@@ -112,8 +117,10 @@ public class ThrowingPrintWriter extends Writer {
/**
* Print a short as string
*
- * @param value a short.
+ * @param value
+ * a short.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void print(short value) throws IOException {
print(String.valueOf(value));
@@ -128,6 +135,7 @@ public class ThrowingPrintWriter extends Writer {
* @param args
* objects.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void format(String fmt, Object... args) throws IOException {
print(String.format(fmt, args));
@@ -139,6 +147,7 @@ public class ThrowingPrintWriter extends Writer {
* @param any
* an object.
* @throws java.io.IOException
+ * if an IO error occurred
*/
public void print(Object any) throws IOException {
out.write(String.valueOf(any));
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutInputStream.java
index 1947b3bf04..4d9f83d233 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutInputStream.java
@@ -63,7 +63,6 @@ public class TimeoutInputStream extends FilterInputStream {
timeout = millis;
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
try {
@@ -76,13 +75,11 @@ public class TimeoutInputStream extends FilterInputStream {
}
}
- /** {@inheritDoc} */
@Override
public int read(byte[] buf) throws IOException {
return read(buf, 0, buf.length);
}
- /** {@inheritDoc} */
@Override
public int read(byte[] buf, int off, int cnt) throws IOException {
try {
@@ -95,7 +92,6 @@ public class TimeoutInputStream extends FilterInputStream {
}
}
- /** {@inheritDoc} */
@Override
public long skip(long cnt) throws IOException {
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutOutputStream.java
index 3fbf6ffdcb..afd798a1a2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/TimeoutOutputStream.java
@@ -65,7 +65,6 @@ public class TimeoutOutputStream extends OutputStream {
timeout = millis;
}
- /** {@inheritDoc} */
@Override
public void write(int b) throws IOException {
try {
@@ -78,13 +77,11 @@ public class TimeoutOutputStream extends OutputStream {
}
}
- /** {@inheritDoc} */
@Override
public void write(byte[] buf) throws IOException {
write(buf, 0, buf.length);
}
- /** {@inheritDoc} */
@Override
public void write(byte[] buf, int off, int len) throws IOException {
try {
@@ -97,7 +94,6 @@ public class TimeoutOutputStream extends OutputStream {
}
}
- /** {@inheritDoc} */
@Override
public void flush() throws IOException {
try {
@@ -110,7 +106,6 @@ public class TimeoutOutputStream extends OutputStream {
}
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/UnionInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/UnionInputStream.java
index 459888190f..b37f28b161 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/UnionInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/UnionInputStream.java
@@ -91,7 +91,6 @@ public class UnionInputStream extends InputStream {
return streams.isEmpty();
}
- /** {@inheritDoc} */
@Override
public int read() throws IOException {
for (;;) {
@@ -106,7 +105,6 @@ public class UnionInputStream extends InputStream {
}
}
- /** {@inheritDoc} */
@Override
public int read(byte[] b, int off, int len) throws IOException {
if (len == 0)
@@ -123,13 +121,11 @@ public class UnionInputStream extends InputStream {
}
}
- /** {@inheritDoc} */
@Override
public int available() throws IOException {
return head().available();
}
- /** {@inheritDoc} */
@Override
public long skip(long count) throws IOException {
long skipped = 0;
@@ -163,7 +159,6 @@ public class UnionInputStream extends InputStream {
return skipped;
}
- /** {@inheritDoc} */
@Override
public void close() throws IOException {
IOException err = null;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java
index 56e90d0636..0a56c83040 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java
@@ -193,7 +193,6 @@ public abstract class SHA1 {
* <p>
* Implementations not supporting collision detection always return
* {@code false}.
- * <p>
*
* @return {@code true} if a likely collision was detected.
*/
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/time/MonotonicSystemClock.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/time/MonotonicSystemClock.java
index 66857b5bf8..4e079f08b5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/time/MonotonicSystemClock.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/time/MonotonicSystemClock.java
@@ -37,7 +37,6 @@ public class MonotonicSystemClock implements MonotonicClock {
}
}
- /** {@inheritDoc} */
@Override
public ProposedTimestamp propose() {
final long u = nowMicros();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/time/ProposedTimestamp.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/time/ProposedTimestamp.java
index 8c20423bc6..a5ee1070d0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/time/ProposedTimestamp.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/time/ProposedTimestamp.java
@@ -162,7 +162,6 @@ public abstract class ProposedTimestamp implements AutoCloseable {
// Do nothing by default.
}
- /** {@inheritDoc} */
@Override
public String toString() {
return instant().toString();
diff --git a/pom.xml b/pom.xml
index 8cbd5d5b03..ad2135aa87 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
<packaging>pom</packaging>
- <version>6.6.2-SNAPSHOT</version>
+ <version>6.7.1-SNAPSHOT</version>
<name>JGit - Parent</name>
<url>${jgit-url}</url>
@@ -150,7 +150,7 @@
<java.version>11</java.version>
<bundle-manifest>${project.build.directory}/META-INF/MANIFEST.MF</bundle-manifest>
- <jgit-last-release-version>6.5.0.202303070854-r</jgit-last-release-version>
+ <jgit-last-release-version>6.6.0.202305301015-r</jgit-last-release-version>
<ant-version>1.10.12</ant-version>
<apache-sshd-version>2.10.0</apache-sshd-version>
<jsch-version>0.1.55</jsch-version>
@@ -169,7 +169,7 @@
<slf4j-version>1.7.36</slf4j-version>
<maven-javadoc-plugin-version>3.5.0</maven-javadoc-plugin-version>
<gson-version>2.10.1</gson-version>
- <bouncycastle-version>1.73</bouncycastle-version>
+ <bouncycastle-version>1.76</bouncycastle-version>
<spotbugs-maven-plugin-version>4.7.3.4</spotbugs-maven-plugin-version>
<maven-project-info-reports-plugin-version>3.4.3</maven-project-info-reports-plugin-version>
<maven-jxr-plugin-version>3.3.0</maven-jxr-plugin-version>
@@ -204,10 +204,6 @@
<url>https://repo.eclipse.org/content/repositories/cbi-releases/</url>
</pluginRepository>
<pluginRepository>
- <id>repo.eclipse.org.cbi-snapshots</id>
- <url>https://repo.eclipse.org/content/repositories/cbi-snapshots/</url>
- </pluginRepository>
- <pluginRepository>
<id>repo.eclipse.org.dash-releases</id>
<url>https://repo.eclipse.org/content/repositories/dash-licenses-releases/</url>
</pluginRepository>
@@ -262,7 +258,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
- <version>3.2.1</version>
+ <version>3.3.0</version>
</plugin>
<plugin>
@@ -285,7 +281,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
- <version>3.3.0</version>
+ <version>3.4.0</version>
</plugin>
<plugin>
@@ -331,7 +327,7 @@
<plugin>
<groupId>org.eclipse.cbi.maven.plugins</groupId>
<artifactId>eclipse-jarsigner-plugin</artifactId>
- <version>1.3.5</version>
+ <version>1.4.2</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
@@ -341,7 +337,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
- <version>3.12.1</version>
+ <version>4.0.0-M9</version>
<dependencies>
<dependency><!-- add support for ssh/scp -->
<groupId>org.apache.maven.wagon</groupId>
@@ -388,7 +384,7 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
- <version>2.7.11</version>
+ <version>2.7.13</version>
</plugin>
<plugin>
<groupId>org.eclipse.dash</groupId>
@@ -417,6 +413,19 @@
</rules>
</configuration>
</execution>
+ <execution>
+ <id>enforce-java</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <rules>
+ <requireJavaVersion>
+ <version>17</version>
+ </requireJavaVersion>
+ </rules>
+ </configuration>
+ </execution>
</executions>
</plugin>
@@ -465,13 +474,38 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
- <additionalJOption>-Xdoclint:-missing</additionalJOption>
+ <!-- We check javadoc when compiling with ecj (option -Pecj) and configurations
+ set in .settings/org.eclipse.jdt.core.prefs. This allows more fine grained
+ configuration and fails the build on missing javadoc for protected and
+ public but not for private classes, methods and fields. We don't want
+ to check javadoc on tests. We can reconsider to configure this on javadoc
+ when it starts supporting access specifiers so that we can set
+ -Xdoclint:all,-missing/private -->
+ <additionalJOption>-Xdoclint:none</additionalJOption>
<encoding>${project.build.sourceEncoding}</encoding>
<quiet>true</quiet>
+ <failOnWarnings>true</failOnWarnings>
<excludePackageNames>org.eclipse.jgit.http.test</excludePackageNames>
<links>
<link>https://docs.oracle.com/en/java/javase/11/docs/api</link>
</links>
+ <tags>
+ <tag>
+ <name>apiNote</name>
+ <placement>a</placement>
+ <head>API Note:</head>
+ </tag>
+ <tag>
+ <name>implSpec</name>
+ <placement>a</placement>
+ <head>Implementation Requirements:</head>
+ </tag>
+ <tag>
+ <name>implNote</name>
+ <placement>a</placement>
+ <head>Implementation Note:</head>
+ </tag>
+ </tags>
</configuration>
<executions>
<execution>
@@ -589,7 +623,32 @@
</reportSet>
</reportSets>
<configuration>
- <additionalJOption>-Xdoclint:-missing</additionalJOption>
+ <failOnWarnings>false</failOnWarnings>
+ <additionalJOption>-Xdoclint:none</additionalJOption>
+ <encoding>${project.build.sourceEncoding}</encoding>
+ <quiet>true</quiet>
+ <failOnWarnings>false</failOnWarnings>
+ <excludePackageNames>org.eclipse.jgit.http.test</excludePackageNames>
+ <links>
+ <link>https://docs.oracle.com/en/java/javase/11/docs/api</link>
+ </links>
+ <tags>
+ <tag>
+ <name>apiNote</name>
+ <placement>a</placement>
+ <head>API Note:</head>
+ </tag>
+ <tag>
+ <name>implSpec</name>
+ <placement>a</placement>
+ <head>Implementation Requirements:</head>
+ </tag>
+ <tag>
+ <name>implNote</name>
+ <placement>a</placement>
+ <head>Implementation Note:</head>
+ </tag>
+ </tags>
</configuration>
</plugin>
<plugin>
@@ -890,7 +949,7 @@
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>ecj</artifactId>
- <version>3.33.0</version>
+ <version>3.34.0</version>
</dependency>
</dependencies>
</plugin>