Merge branch 'master' into next

* master:
  Prepare 7.7.0-SNAPSHOT builds
  JGit v7.7.0.202605201743-m3
  TemporaryBuffer.LocalFile: use Files.newInputStream()
  Update docs for logAllRefUpdates
  DfsPackDescription: New method getTotalFileSize()
  MidxPackList: Add a builder to edit the pack list
  Update slf4j to 2.0.18
  Update Jetty to 12.1.9
  Update commons-io to 2.22.0
  Update commons-codec to 1.22.0
  Update gson to 2.14.0
  Revert "DfsPackCompactor: Accept DfsPackDescription as input"
  Pack/PackMidx: mark as @Nullable methods that deserve it
  PackMidx: Style fixes like unused throws
  Update urllib3 to at least 2.7.0 to fix CVE-2026-44432
  Update python used to deploy release to maven central to 3.14
  DfsPackCompactor: Accept DfsPackDescription as input
  DfsPackFileMidx tests: Compare byte[] for checksum
  TestProtocolTest: Cover additional fetch edge cases
  DfsPackCompacterTest: Add test for compacting only data in a pack
  FetchProcess: Report lock failure when destination ref changes
  MidxWriter: List instead of Collection and method references
  Add regression test on non-forced fetch and local updates
  Prepare 7.7.0-SNAPSHOT builds
  PullResult: Improve toString by implementing for children.
  pack-refs: Add fully-peeled flag
  pack-refs: Fix buggy way of marking peeled trait
  gitrepo: update git-repo URL in javadocs
  JGit v7.7.0.202604291911-m2
  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself
  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself
  pack-refs: Correctly define peeled trait
  ReceivePack: Add missing @since tag for new API method
  TreeWalkConnectivityChecker: Support non-commit objects in refs
  ReceivePack: make getClientShallowCommits protected
  DfsObjDatabase: Make createDfsPackFile public
  DfsPackCompactor: add a pre-commit hook to plug midx calculation
  Update bouncycastle to 1.84
  [ssh] Reject host certificates if the certified key is revoked
  Add new TreeWalkConnectivityChecker
  Make the PackParser.needNewObjectIds method public
  orbit: update org.apache.ant to 1.10.17.v20260410-1000
  MidxMetadataReader: add private constructor and adjust method visibility
  MidxWriter: Write to tmp files and use atomic rename to commit
  Instrument ReceivePack to track time spent in pre-receive hooks
  parse-packed-refs: Check to sort only when header is not present
  pack-refs: Always add sorted trait
  Prepare 7.7.0-SNAPSHOT builds
  JGit v7.7.0.202604061937-m1
  Update jetty to 12.1.8
  Update bytebuddy to 1.18.8
  push: Report fatal server errors during pack writing
  Revert "push: Report fatal server errors during pack writing"
  PushConnectionTest: Introducing the limitPackSize() test
  MidxWriter: Do not accept midx to build new midx
  PackDirectory: Integrate Multi-Pack Index (MIDX) support
  PackMidx: A Pack subclass that uses midx
  PackBitmapIndexRemapper: Throw exception with details in size mismatches
  Bazel: bump to 8.6.0 and switch to pure Bzlmod
  MidxMetadataReader: Helper to read only selected fields in the midx
  WindowCursor/Pack: Move bitmap coverage calculation to the pack
  [version.sh] Don't use the pager for the git diff command
  PackBitmapIndexRemapper: Do not remap if the object order is the same
  DfsMidxWriter: Do not accept midx as input to build midx
  javadoc: Mention midx order in the javadoc
  MidxPackList: getAllPlainPacks returns object-lookup order
  MidxPackListTest: Use fake packs for easier test setup
  Slightly reword prunePackExpire docs
  MultiPackIndex: write midx bitmaps from cli tool
  MidxWriter: write bitmaps with the midx
  Update org.tukaani:xz to 1.12
  Update mockito to 5.23.0
  Update Jetty to 12.1.7
  Update bytebuddy to 1.18.7
  Update commons-logging to 1.3.6
  Add jgit-4.40 target platform for next simrel 2026-06
  Use releases p2 repo in jgit-4.39 target platform
  Add timing metrics to ReceivedPackStatistics
  MultiPackIndexWriter: typo in logging (is chunks, not chuncks)
  Add CLAUDE.md to gitignore file
  MultiPackIndexWriter: Encode checksum in base64
  DfsMidxWriter: Use the input data instead of rereading the midx
  DfsMidxWriter: Add a param to toggle bitmap writing
  PullCommandTest: Remove unused variable
  Update URL used to download artifacts from repo.eclipse.org
  Fix path of jgit artifacts in local maven repository
  MultiPackIndexWriter: report also the checksum in the result
  RefAdvancerWalk: Move to revwalk package
  pgm.MultiPackIndex: Move writing code to MidxWriter
  Allow extending TernarySearchTree
  MultiPackIndexWriter: Report progress writing chunks
  PackIndexMerger: Add progress monitor to the building process
  Bump minimum dependency for Bouncy Castle to 1.83.0
  Update version of last JGit release to 7.6.0.202603022253-r
  DfsMidxWriter: Split writing midx and its bitmaps
  MultiPackIndexLoader: report what chunk is going over size
  Prepare 7.7.0-SNAPSHOT builds
  Prepare 7.6.1-SNAPSHOT builds
  DfsPackFileMidx: Pass the right pack when building single-pack midx
  JGit v7.6.0.202603022253-r
  Add AddCommand #addFilepatterns methods
  Bazel: Pin jcl-over-slf4j to SLF4J_VERSION
  Prepare 7.6.0-SNAPSHOT builds
  JGit v7.6.0.202602242313-rc1
  Support diff3 conflict style in merges
  RebaseCommand: Honor the commit message cleanup configuration
  Remove the option to create 'blank issues' in GitHub
  Refactor handlePackError method to improve readability
  PackIndexMerger: Accept a midx as input to build another midx
  DfsPackFileMidxNPacks: Use only the list of packs in midx order
  DfsMidxWriterTest: Rename to DfsMidxWriterBitmapsTest
  Update jetty to 12.1.6
  Update bytebuddy to 1.18.5
  Update commons-codec to 1.21.0
  Orbit: update org.objenesis to 3.5.0
  DfsMidxWriter: Pass the PackIndexMerger instead of a Map of sources
  MidxIterators join: compare shifted packId
  DfsPackFileMidx: Offer localIterator
  Prepare 7.6.0-SNAPSHOT builds
  JGit v7.6.0.202602181523-m3
  PackIndexMerger: replace constructor with Builder
  JGit v7.6.0.202602172005-m3
  MidxIterator: Add reset method
  PackIndexMerger: remove rawIterator() method
  PackIndexMerge: Use deduped iterators instead of deduping while reading
  PackIndexMerger: use MidxIterators instead of its own
  MidxIterators: Helpers around the MidxIterator
  Do not log packfiles moved away or pruned
  Bazel: align JGit with shared external_deps repository
  Bazel: bump rules_jvm_external to 6.10
  MultiPackIndex: Offer an iterator over the entries in the midx
  RevWalk: abort computation of merged commits if the monitor is canceled
  [cli] Add options --pack-refs and --no-pack-refs to Gc command
  Add missing LF at the end of GarbageCollectCommandTest
  Add GarbageCollectCommand#setGcConfig
  GC: add flag to control whether gc should pack all refs
  Downgrade spring-boot-maven-plugin to 3.5.10
  pack-refs: Add sorted flag
  Bazel: enforce strict MODULE.bazel.lock synchronization
  DfsPackFileMidxSingle: No need to set ints to 0 in constructor
  MidxPackFilter: Remove debug printlns
  DfsMidxWriter: add writing bitmaps to the newly created midx
  RefAdvancer: helper to find when a branch enters a pack
  Throw IOException if API tries to use destroyed TemporaryBuffer
  Update com.google.errorprone:error_prone_type_annotations to 2.46.0
  Update Apache sshd to 2.17.1
  Prepare 7.6.0-SNAPSHOT builds
  DfsPackFileMidx: offer local objects as ObjectToPack
  JGit v7.6.0.202601262032-m2
  Update org.assertj:assertj-core to 3.27.7
  DfsPackFileMidxNPacks: getBitmapIndex tries to load midx bitmaps
  PackBitmapIndexBuilderTest: add test to the bitmap builder storage
  Update bytebuddy to 1.18.4
  Update org.objectweb.asm to 9.9.1
  PackBitmapCalculator: Move code to calculate bitmaps out of PackWriter
  DfsPackFileMidx: expose the checksum of the midx
  DfsPackFile: Use getPackIndex while loading bitmaps
  DfsMidxWriter: set file size for the midx extension
  DfsPackFileMidx*Test: Use MidxTestUtils when possible
  DfsPackFileMidx: Implement PackReverseIndex over midx
  DfsPackFileMidx: Implement PackIndex over midx
  MultiPackIndex: add the checksum to the midx
  DfsPackFileMidx: Add method to translate midx position to objectId
  MultiPackIndex: Add #getObjectAt to translate position to id
  MultiPackIndex: implement methods for the reverse index
  Update python dependencies of download_release.py
  Prepare 7.6.0-SNAPSHOT builds
  JGit v7.6.0.202601071437-m1
  Update Maven plugins
  Update compiler versions
  MultiPackIndexLoader: do not ignore the ridx chunk
  MultiPackIndexWriter: write "bitmapped packfiles" chunk
  Add target platform jgit-4.39 for 2025-03
  Switch to 4.38 release URL of release train p2 repo
  Update mockito to 5.21.0
  Fix invalid HTML closing tag in javadoc
  Document how to test new release staged on Maven Central Portal
  MidxPackFilter: Keep max one midx in the stack
  Update jetty to 12.1.5
  Consume rbe_autoconfig as bazel module
  MODULE.bazel: Move dependencies from WORKSPACE to bazel modules
  Add missing reference to commons-io
  Fix invalid HTML tags in javadoc
  DfsPackFileMidx: Introduce single-pack midx
  DfsPackFileMidx: Move implementation to subclass
  Update bouncycastle to 1.83
  Update bytebuddy to 1.18.2
  Update version of last JGit release to 7.5.0.202512021534-r
  Prepare 7.6.0-SNAPSHOT builds
  Prepare 7.5.1-SNAPSHOT builds
  JGit v7.5.0.202512021534-r
  [ignore patterns] Backslash is a general escape
  Prepare 7.5.0-SNAPSHOT builds
  JGit v7.5.0.202511251519-rc1
  Do not always refresh packed-refs during ref updates
  Update Maven plugins
  Update org.eclipse.jdt:ecj to 3.43.0
  Update plexus-compiler to 2.16.0
  Update org.tukaani:xz to 1.11
  chore: Add sbom generation and upload workflow
  Prepare 7.5.0-SNAPSHOT builds
  JGit v7.5.0.202511181624-m3
  Update jetty to 12.1.4
  Update commons-lang3 to 3.20.0
  Update bytebuddy to 1.18.1
  Silence non-externalized String warning
  Document empty blocks
  BlameRegionMerger: externalize error message
  Remove unnecessary semicolon
  MidxPackList: Methods to find the top midx and uncovered packs
  Update commons-codec:commons-codec to 1.20.0
  Update commons-io:commons-io to 2.21.0
  HttpConnection: add missing @since tag
  Avoid reading packed-refs concurrently sometimes
  Improve flaky InterruptTimerTests
  Improve the README
  LfsPrePushHook: recognize 201 as successful response from LFS server
  Revert "PackList: keep the list of unused midxs"
  DfsGarbageCollector: Ignore midxs, commitPack() takes care of them
  DfsGarbageCollectorTest: Assert there are not midxs in the db
  DfsObjDatabase: delete affected midxs when covered packs are deleted
  [debug logging] Escape control characters other than TAB, CR, or LF
  Refine time unit parsing to throw exception on invalid values
  [ssh] Simplify code
  PackList: keep the list of unused midxs
  DfsObjDatabase: Move midx pack mangling to getPacks()
  Prepare 7.5.0-SNAPSHOT builds
  JGit v7.5.0.202510290248-m2
  InterruptTimer: don't use Yoda-style condition
  InterruptTimer: avoid expensive notify when begin is soon after end
  InterruptTimer: avoid unneeded notify for end()
  Disable MergeToolTest#testEmptyToolName
  Fix hamcrest version to 3.0.0 in target platform
  Add InterruptTimer Tests
  Update slf4j to 2.0.17
  Update org.hamcrest to 3.0.0
  DfsPackFile: asObjectIdSet() when only inclusion is needed.
  DfsObjDatabase: read reftables from midx covered packs
  Update jetty to 12.1.3
  Fix signed push failing when using push options
  DfsReader/PackFile: Move bitmap inclusion check to the packfile
  Use generic Map interface in signature of internal API methods
  Allow to discover bitmap on disk created after the packfile
  DfsPackCompactor: add toPrune method
  MidxPackList: Helper to get packs/midx and overlaps between them
  DfsPackFileMidx: make the class public
  [ssh] Fix order of keys in pubkey auth if an agent is used
  Update bytebuddy to 1.17.8
  Update jetty to 12.1.2
  DfsPackCompactor: Move #autoAdd to the tests (its only caller)
  DfsPackFileMidx: add #getAllCoveredPacks() method
  DfsGarbageCollector: handle pack lists with multipack indexes
  DfsPackFileMidx: Return bitmap from any underlying pack
  midx: caller chooses the order of packs in the midx
  DfsObjDatabase: make #setUseMultipackIndex public
  MidxPackFilterTest: Remove unused import
  DfsObjDatabase: move pack mangling to helper MidxPackFilter
  Document how to test a release staged in Maven Central Portal
  DfsMidxWriter: helper class to create a pack with an midx
  DfsObjDatabase: make useMultipackIndex getter/setter protected
  Update Maven plugins
  Prepare 7.5.0-SNAPSHOT builds
  DfsObjDatabase: introduce multipack index
  JGit v7.5.0.202510071400-m1
  Add jgit-4.38 target platform for Eclipse 2025-12
  Update jna to 5.18.1
  Migrate deployment to Maven Central to use Central Portal API
  DfsPackFileMidx: getters for the midx covered packs and base
  DfsPackFileMidx: support a chain of multi-pack indexes
  DfsPackFileMidx: A packfile using the multipack index
  Checkout: don't fail if no commitish was given
  Remove unnecessary else clause
  Remove redundant null check
  Remove unused API error filters
  Fix discouraged access warnings
  Fix boxing warnings
  Suppress some boxing warnings
  Suppress some unboxing warnings
  Remove unnecessary semicolon
  Silence API error for constant CoreConfig.DEFAULT_MULTIPACK_INDEX_ENABLE
  Update org.mockito:mockito-core to 5.20.0
  Update jetty to 12.1.1
  Update bouncycastle to 1.82
  Update org.assertj:assertj-core to 3.27.6
  Update org.apache.commons:commons-lang3 to 3.19.0
  Update jna to 5.18.0
  Update com.google.code.gson:gson to 2.13.2
  ConfigConstants: Add constant for multipack index
  Support unshallow request in Boundary/TopoSortGenerators
  Make UNSHALLOW a globally available static RevFlag
  DfsPackDescription: make covered packs non-null
  Disable BOUNDARY and TOPO sort for unshallow fetches
  BasePackWriterTest: Increase test coverage for unshallow fetches
  IndexDiffWithSymlinkTest: Java 20+ stores NFC, not NFD
  DfsPackDescription: Add fields for multipack index
  BasePackWriterTest: Improve assertion of unexpected items in pack
  BasePackWriterTest: use assertThrows instead of @Test(expected=...)
  [releng] Bump japicmp base version to 7.4.0.202509020913-r
  BasePackWriterTest: Fix message on pack index content assertion
  BasePackWriterTest: Use @expected instead of catching exceptions
  BasePackWriterTest: Prefer use of Java native sort vs. Collections
  Provide specific test for HPE NonStop OSS file system long file names.
  Prepare 7.5.0-SNAPSHOT builds
  Prepare 7.4.1-SNAPSHOT builds
  Fix NPE when calling GC.prune(Set<ObjectId>)
  JGit v7.4.0.202509020913-r
  MultiPackIndex.resolve: handle correctly last object
  MultiPackIndexWriter: report also object count and ordered packs
  MultiPackIndex: add getObjectCount() method
  MultiPackIndex: add findPosition method
  MultipackIndex.PackOffset: add public static constructor
  RevWalk: use SystemReader instead of System.getProperty()
  PendingGenerator: drop only buffers loaded in the generator
  Prepare 5.13.6-SNAPSHOT builds
  JGit v5.13.5.202508271544-r
  Prepare 7.4.0-SNAPSHOT builds
  JGit v7.4.0.202508261455-rc1
  Update apache sshd to 2.16.0
  Do not include 3rd party dependencies in features
  Ensure pack files are closed after git.close()
  Prepare 7.4.0-SNAPSHOT builds
  JGit v7.4.0.202508191000-m3
  Update mockito to 5.19.0
  Update jetty to 12.1.0
  Update org.assertj:assertj-core to 3.27.4
  Update bytebuddy to 1.17.7
  Remove resolver option from target-platform-configuration
  Add missing release property to maven build
  Suppress API errors for minor API changes in service releases
  Remove unnecessary casts
  util.Iterators: suppress warning about object arrays
  util.Iterators: private constructor for utility class
  pgm: new command for the object size index
  WindowCursor: honor pack.useObjectSizeIndex
  Prevent CommitGraphWriter.write() from closing its stream
  Make CancellableDigestOutputStream extend FilterOutputStream
  Shortcut PackWriter reuse selection when possible
  Update org.apache.commons:commons-compress to 1.28.0
  SmartHttpFetchConnection: suppress errors on close()
  Mark Git(Repository repo, boolean closeRepo) public
  Use volatiles for bitmap and revIndex in Pack
  Fix performance regression in Pack.idx()
  Don't use Yoda style conditions to improve readability
  Use LocalObjectToPack representation more
  Use representation from LocalObjectToPack if possible
  Avoid conditional in LocalObjectRepresentation.wasDeltaAttempted
  Prepare 7.4.0-SNAPSHOT builds
  Update commons-lang3 to 3.18.0
  Update commons-io to 2.20.0
  Update commons-codec to 1.19.0
  JGit v7.4.0.202507290921-m2
  Add 4.37 target platform for Eclipse IDE 2025-09
  Use chunked encoding when uploading LFS objects
  Add Bundle-SCM header to OSGi manifests
  WindowCursor: Use the object size index when possible
  GC: Write object size index if config says so
  MergeToolTest: update expected error from the tool
  Add dash license check for 3rd party dependencies
  ObjectDirectoryPackParser: Write object-size index with the pack
  PackInserter: write object-size index with the pack
  Pack: getter for the indexed object size (when available)
  Prepare 5.13.5-SNAPSHOT builds
  JGit v5.13.4.202507202350-r
  AmazonS3: Do not accept DOCTYPE and entities
  ManifestParser: Do not accept DOCTYPE and entities
  AdvertisedRequestValidator: fix WantNotValidException caused by race
  Prepare 5.13.4-SNAPSHOT builds
  Fix packaging build
  [releng] Fix maven builds on JVM 21 and with newer git on MacOS
  Restore WORKSPACE and Bazel 7.6.1
  Prepare 7.4.0-SNAPSHOT builds
  JGit v7.4.0.202507080956-m1
  Fix JGit version exposed in bazel module
  MODULE.bazel: Include version in the jgit module
  Update jetty to 12.0.23
  Update bytebuddy to 1.17.6
  Lock reftable auto-refresh to ensure consistency
  DfsObjDatabase.PackList: Remove PackListImpl subclass
  DfsObjDatabase.PackList: Remove dirty flag setters
  DfsPackFile: Delete #getIndexedObjectSize for ObjectId
  MultiPackIndexLoader: Add NON-NLS annotation to message
  ChangedPathFilter: Suppress nls warnings in toString
  JGitText.properties: Use {n} instead %s in messages
  DfsReader: Reuse index position when looking up object size
  DfsReader: Use new findPack instead of findPackWithObject
  DfsReader: return idx position when looking up object in packs
  DfsReader: Handle correctly invalid object-size indexes
  Fix: Close the "preserved" PackDirectory
  Update jetty to 12.0.22
  Update bouncycastle to 1.81
  Update last jgit release to 7.3.0.202506031305-r
  Prepare 7.4.0-SNAPSHOT builds
  Prepare 7.3.1-SNAPSHOT builds
  JGit v7.3.0.202506031305-r
  Update maven plugins
  Use the same ordering/locking in delete() as C git
  Prepare 7.3.0-SNAPSHOT builds
  JGit v7.3.0.202505281347-rc1
  Prepare 7.1.2-SNAPSHOT builds
  JGit v7.1.1.202505221757-r
  Prepare 7.0.2-SNAPSHOT builds
  JGit v7.0.1.202505221510-r
  Prepare 6.10.2-SNAPSHOT builds
  JGit v6.10.1.202505221210-r
  AmazonS3: Do not accept DOCTYPE and entities
  ManifestParser: Do not accept DOCTYPE and entities
  Update mockito to 5.18.0
  Update Jetty to 12.0.21
  Update com.google.code.gson:gson to 2.13.1
  Prepare 7.3.0-SNAPSHOT builds
  JGit v7.3.0.202505211123-m3
  FS.getFileStoreAttributes: cancel failed task executed asynchronously
  DfsReader/PackFile: Move represention to the packfile
  DfsPackFile: Remove unused getObjectCount method
  Prepare 7.2.2-SNAPSHOT builds
  JGit v7.2.1.202505142326-r
  AmazonS3: Do not accept DOCTYPE and entities
  ManifestParser: Do not accept DOCTYPE and entities
  FileReftableStack: ensure new reftable files aren't missed on NFS
  Encapsulate layout of reftable stack in FileReftableStack
  Prepare 7.3.0-SNAPSHOT builds
  JGit v7.3.0.202505070700-m2
  DfsInserter: Remove checkExisting setter and parameter
  PlotRefComparator: fix #timeof
  PlotWalk: Replace call to deprecated method in PersonIdent
  midx: Fix license header from Google Inc. to LLC
  Remove option to enable bzlmod
  Update bazel to 8.2.1
  Update bazel to 7.6.1
  MODULE.bazel: Move dependencies from WORKSPACE to bazel modules
  Update commons-io:commons-io to 2.19.0
  Update com.google.code.gson:gson to 2.13.0
  PackExt: Add value for the multipack index
  MultiPackIndex: Add and implement #resolve() method
  MultiPackIndexWriter: Handle empty packs
  MultiPackIndexWriter: return bytes written
  MultiPackIndexV1: Calculate memsize with long
  Prepare 7.3.0-SNAPSHOT builds
  MultiPackIndexV1: Reorder methods and add NON-NLS annotations
  MultiPackIndex: add #getMemorySize() method
  midx: reader for the multipack index
  JGit v7.3.0.202504081226-m1
  Update mockito to 5.17.0
  Update jetty to 12.0.19
  Update bytebuddy to 1.17.5
  DfsPackFile.PackIndexes: pass primary index to reverse index
  tools/BUILD: Make AssertEqualsArgumentOrder a warning
  PullCommandTest: remove unnecessary method reference
  Fix package name of spring boot JarLauncher class in jgit.sh
  tests: avoid assertEquals on same instance
  Update bytebuddy to 1.17.3
  Update mockito to 5.16.1
  Update jna to 5.17.0
  Update jetty to 12.0.18
  SystemReader: Add support for XDG_CACHE_HOME
  Removed redundant TreeFilter.ANY_DIFF in LogCommand.
  Bump minimum dependency for Bouncy Castle to 1.80.0
  BlameResult: Let generator decide when to use the blame cache
  exttst: Pass encoding to InputStreamReader
  Update last jgit release version to 7.2.0.202503040940-r
  Update scm url in pom.xml to refer to gerrit homepage of jgit repo
  TreeRevFilter: enable Bloom Filter usage with ChangedPathTreeFilter
  ReftableCompactor: Use instant to set the reflog expire time
  GC: Use new java.time API in PersonIdent
  reftable.BlockWriter: Use time API methods from PersonIdent
  Add target platform jgit-4.36 for eclipse 2025-06
  Checkout: Handle InvalidRefNameException
  BlameGenerator: Use cache only for candidates modifying the path
  Update maven plugins
  Update spotbugs-maven-plugin to 4.9.2.0
  Update mockito to 5.16.0
  Update jetty to 12.0.17
  Update bytebuddy to 1.17.2
  FileReftableDatabase: mark autoRefresh volatile

Change-Id: I5a2d2096f2159806193aa1914623cc8a5f047506
tree: 81012f89690f716f0e73c61b4a4baa49c1b82292
  1. .github/
  2. .mvn/
  3. .settings/
  4. Documentation/
  5. lib/
  6. org.eclipse.jgit/
  7. org.eclipse.jgit.ant/
  8. org.eclipse.jgit.ant.test/
  9. org.eclipse.jgit.archive/
  10. org.eclipse.jgit.benchmarks/
  11. org.eclipse.jgit.coverage/
  12. org.eclipse.jgit.gpg.bc/
  13. org.eclipse.jgit.gpg.bc.test/
  14. org.eclipse.jgit.http.apache/
  15. org.eclipse.jgit.http.server/
  16. org.eclipse.jgit.http.test/
  17. org.eclipse.jgit.junit/
  18. org.eclipse.jgit.junit.http/
  19. org.eclipse.jgit.junit.ssh/
  20. org.eclipse.jgit.lfs/
  21. org.eclipse.jgit.lfs.server/
  22. org.eclipse.jgit.lfs.server.test/
  23. org.eclipse.jgit.lfs.test/
  24. org.eclipse.jgit.packaging/
  25. org.eclipse.jgit.pgm/
  26. org.eclipse.jgit.pgm.test/
  27. org.eclipse.jgit.ssh.apache/
  28. org.eclipse.jgit.ssh.apache.agent/
  29. org.eclipse.jgit.ssh.apache.test/
  30. org.eclipse.jgit.ssh.jsch/
  31. org.eclipse.jgit.ssh.jsch.test/
  32. org.eclipse.jgit.test/
  33. org.eclipse.jgit.ui/
  34. tools/
  35. .bazelrc
  36. .bazelversion
  37. .gitattributes
  38. .gitignore
  39. .mailmap
  40. BUILD
  41. CODE_OF_CONDUCT.md
  42. CONTRIBUTING.md
  43. LICENSE
  44. MODULE.bazel
  45. MODULE.bazel.lock
  46. pom.xml
  47. README.md
  48. SECURITY.md
README.md

Eclipse JGit

An implementation of the Git version control system in pure Java.

License

License
JGit is licensed under the Eclipse Distribution License 1.0 (BSD-3-Clause).

Latest Release

Maven Central javadoc Java

Support

Issues Discussions
Post questions, comments or discussions to the jgit-dev@eclipse.org mailing list. You need to be subscribed to post.

Contributing

Contributors Last commit Commit activity the past week, 4 weeks Commits since
See the JGit and EGit Contributor Guide.

Build

JGit can be imported straight into Eclipse and built and tested from there. It can be built from the command line using Maven or Bazel. The CI builds use Maven and run on Jenkins.

Modules

  • org.eclipse.jgit

    A pure Java library capable of being run standalone, with no additional support libraries. It provides classes to read and write a Git repository and operate on a working directory.

    All portions of JGit are covered by the EDL. Absolutely no GPL, LGPL or EPL contributions are accepted within this package.

  • org.eclipse.jgit.ant

    Ant tasks based on JGit.

  • org.eclipse.jgit.archive

    Support for exporting to various archive formats (zip etc).

  • org.eclipse.jgit.http.apache

    Apache httpclient support.

  • org.eclipse.jgit.http.server

    Server for the smart and dumb Git HTTP protocol.

  • org.eclipse.jgit.lfs

    Support for LFS (Large File Storage).

  • org.eclipse.jgit.lfs.server

    Basic LFS server support.

  • org.eclipse.jgit.packaging

    Production of Eclipse features and p2 repository for JGit. See the JGit Wiki on why and how to use this module.

  • org.eclipse.jgit.pgm

    Command-line interface Git commands implemented using JGit (“pgm” stands for program).

  • org.eclipse.jgit.ssh.apache

    Client support for the SSH protocol based on Apache Mina sshd.

  • org.eclipse.jgit.ssh.apache.agent

    Optional support for SSH agents for org.eclipse.jgit.ssh.apache.

  • org.eclipse.jgit.ui

    Simple UI for displaying git log.

Tests

  • org.eclipse.jgit.junit, org.eclipse.jgit.junit.http, org.eclipse.jgit.junit.ssh: Helpers for unit testing
  • org.eclipse.jgit.ant.test: Unit tests for org.eclipse.jgit.ant
  • org.eclipse.jgit.http.test: Unit tests for org.eclipse.jgit.http.server
  • org.eclipse.jgit.lfs.server.test: Unit tests for org.eclipse.jgit.lfs.server
  • org.eclipse.jgit.lfs.test: Unit tests for org.eclipse.jgit.lfs
  • org.eclipse.jgit.pgm.test: Unit tests for org.eclipse.jgit.pgm
  • org.eclipse.jgit.ssh.apache.test: Unit tests for org.eclipse.jgit.ssh.apache
  • org.eclipse.jgit.test: Unit tests for org.eclipse.jgit

Warnings/Caveats

  • Native symbolic links are supported, provided the file system supports them. For Windows you must use a non-administrator account and have the SeCreateSymbolicLinkPrivilege.

  • Only the timestamp of the index is used by JGit if the index is dirty.

  • JGit 6.0 and newer requires at least Java 11. Older versions require at least Java 1.8.

  • CRLF conversion is performed depending on the core.autocrlf setting, however Git for Windows by default stores that setting during installation in the “system wide” configuration file. If Git is not installed, use the global or repository configuration for the core.autocrlf setting.

  • The system wide configuration file is located relative to where C Git is installed. Make sure Git can be found via the PATH environment variable. When installing Git for Windows check the “Run Git from the Windows Command Prompt” option. There are other options like Eclipse settings that can be used for pointing out where C Git is installed. Modifying PATH is the recommended option if C Git is installed.

  • We try to use the same notation of $HOME as C Git does. On Windows this is often not the same value as the user.home system property.

Features

  • org.eclipse.jgit

    • Read loose and packed commits, trees, blobs, including deltafied objects.

    • Read objects from shared repositories

    • Write loose commits, trees, blobs.

    • Write blobs from local files or Java InputStreams.

    • Read blobs as Java InputStreams.

    • Copy trees to local directory, or local directory to a tree.

    • Lazily loads objects as necessary.

    • Read and write .git/config files.

    • Create a new repository.

    • Read and write refs, including walking through symrefs.

    • Read, update and write the Git index.

    • Checkout in dirty working directory if trivial.

    • Walk the history from a given set of commits looking for commits introducing changes in files under a specified path.

    • Object transport

      Fetch via ssh, git, http, Amazon S3 and bundles. Push via ssh, git, http, and Amazon S3. JGit does not yet deltify the pushed packs so they may be a lot larger than C Git packs.

    • Garbage collection

    • Merge

    • Rebase

    • And much more

  • org.eclipse.jgit.pgm

    • Assorted set of command line utilities. Mostly for ad-hoc testing of jgit log, glog, fetch etc.
  • org.eclipse.jgit.ant

    • Ant tasks
  • org.eclipse.jgit.archive

    • Support for Zip/Tar and other formats
  • org.eclipse.http

    • HTTP client and server support

Missing Features

There are some missing features:

  • signing push
  • shallow and partial cloning
  • support for remote helpers
  • support for credential helpers
  • support for multiple working trees (git-worktree)
  • using external diff tools
  • support for HTTPS client certificates
  • SHA-256 object IDs
  • git protocol V2 (client side): packfile-uris
  • multi-pack index
  • split index

About Git

More information about Git, its repository format, and the canonical C based implementation can be obtained from the Git website.