4.8.0
Features
- Allow DfsReader to be subclassed
- Track read IO statistics for DfsReader
- Support pulling remote branches to apply them on detached HEAD (Bug 485396).
- Reset ObjectWalker when it starts a new walk
- Clone: add --recurse-submodules option
- Add parseCommit(AnyObjectId) method to Repository.
- RepoCommand: Add linkfile support.
- BundleWriter: Allow constructing from only an ObjectReader
- Support creating Mergers without a Repository using an ObjectInserter and a config that declares a diff algorithm.
- Run auto GC in the background. Execute gc at maximum once per day if number of loose unreachable objects which didn't expire yet exceeds gc.auto limit.
- Allow to use an external ExecutorService for background auto-gc
- Use a dedicated executor to run auto-gc in command line interface
- Fetch: Add --recurse-submodules and --no-recurse-submodules options
Performance
- Exclude refs/tags from bitmap commit selection to reduce the number of bitmaps created and reduce the memory pressure on the GC task.
- Reduce fetch bandwidth cost when objects described by the client are missing on the server
Build and Release Engineering
- Upgrade maven plugins
- Update jetty to 9.4.5 (Bug 516514)
- Update Orbit dependencies to the Oxygen version R20170516192513
Bug Fixes
- Checkout should not use too long filenames (Bug 508823)
- Clean up the disk when cloning fails (Bug 516303)
- Add shutdown hook to cleanup unfinished clone when JVM is killed (Bug 516303)
- Fix stack overflow in MergeBaseGenerator
- DfsGarbageCollector: Delete expired garbage even when there is no GC pack present.
- When looping through alternates, prevent visiting the same object directory twice.
- Fix RepoCommand to allow for relative URLs
- PackWriterBitmapWalker: only throw MissingObjectException when necessary
- Archive TarFormat: Use commit time as timestamp for entries
- Make diff locations more consistent fixing incorrectly removed or duplicated lines in 3-way merge (Bug 514095).
- Fix out-of-bounds exception in RepoCommand#relative
- Fix null return from FS.readPipe when command fails to launch