Description
Features
Reftable
- Implement FileReftableDatabase
Reftable is a binary, block-based storage format for the ref-database. It provides several advantages over the traditional packed + loose refs storage
Storage format:
- O(1) write performance, even for deletions and transactions.
- atomic updates to the ref database.
- O(log N) lookup and prefix scans
- free from restrictions imposed by the file system: it is case-sensitive even on case-insensitive file systems, and has no inherent limitations for directory/file conflicts
- prefix compression reduces space usage for repetitive ref names, such as gerrit's refs/changes/xx/xxxxx format.
- FileReftableDatabase is based on FileReftableStack, which does compactions inline. This is simple, and has good median performance, but every so often it will rewrite the entire ref database.
- Add FileRepository#convertToReftable so existing testdata can be reused.
- pgm: add write stats to BenchmarkReftable
- pgm: add command to convert repo to reftable
- reftable: enforce ascending order in sortAndWriteRefs
- Documentation/technical/reftable: document rename in reflog
- Introduce RefDatabase#hasFastTipsWithSha1
Other Features
- 553471 Add ability to redirect stderr from git hooks
- 553469 Add possibility to get pure stderr output from AbortedByHookException
- 500266 Support for core.hooksPath
- JGit pgm: Add support for excluding paths from Git log command
- JGit pgm: Format blame output to match canonical git
- 552173 pgm: Add --mirror option to clone command
- 552173 Implement mirror option in CloneCommand
- RepositoryCache: don't require HEAD in git repositories using reftable
- 552467 DiffFormatter: support core.quotePath = false
- 550878 IndexDiff/SubmoduleWalk: make the RepositoryBuilder configurable
- transport: Merge BaseReceivePack into ReceivePack
- 551850 Store filesystem timestamp resolution in extra jgit config $XDG_CONFIG_HOME/jgit/config
- 550335 GPG: implement more OpenPGP UserId matching formats
- ProtocolV2Parser: Introduce advertise sideband-all option
- PackWriter/Statistics: Report offloaded size
- CachedPackUriProvider: Add size to the pack information
- http: Allow specifying a custom error handler for UploadPack
- UploadPack: Introduce ErrorWriter
- 549832 Apache HTTP: support proxy authentication
- DfsCachedPack: Add accessor for packfile object
- dfs: Take size as long instead of int in the DfsBlockCache
Performance and memory consumption improvements
- BitmappedReachabilityChecker: Use only one bitmap for the whole check
- checkNotAdvertisedWants: Be lazy converting Ref to RevCommit to reduce the latency for reachability checks over big sets of references
- UploadPack: Prioritize references for non-advertised wants checks
Bug Fixes
- 434330 Make blame work correctly on merge conflicts
- [spotbugs] Fix potential NPE in FSTest
- UploadPackTest: Fix unused parameter in checkUnadvertisedIfUnallowed
- TopoSortGenerator: simplify first-parent handling
- 552160 RewriteGenerator: avoid adding null parent to avoid NPE
- 521613 IndexDiff/SubmoduleWalk: handle submodule.<name>.ignore correctly
- BaseReceivePack: Add hasReceivedPack method to enable avoiding IllegalStateException if getPackSize is called when the pack size is not set
- 551850 Prepend hostname to config subsection used to store file timestamp resolution
- 552636 WorkingTreeModifiedEvent: must be fired explicitly after merge
- 549690 HttpSupport.proxyFor(): use only scheme, host, and port
- 552288 GpgKeyLocator: Return a signing key for a user instead of the master key
- 552288 GpgKeyLocator: Return subkeys instead of the first key for subkeys
- AppServer: Stop using deprecated SslContextFactory constructor
- IndexDiff: close SubmoduleWalk and use already loaded DirCache
- CachedPackUriProvider: size should be a long (not an int)
- 551664 Fix parsing of core.logAllRefUpdates
- Fix NPE in DfsPackCompactor.compactReftables
- Fire WorkingTreeModifiedEvent if cherry-pick failed with conflicts
- Remove an old work-around for core.autocrlf = input
- ReceivePack: Prevent pointing a branch to a non-commit object
Build and Release Engineering
- Update bouncycastle version to 1.64
- Upgrade Jetty to 9.4.22.v20191022
- Use Java 8 source and target in Maven
- Update Orbit to R20191126223242 for 2019-12
- Upgrade maven-enforcer-plugin to 3.0.0-M3
- Upgrade maven-jar-plugin to 3.2.0
- Upgrade maven-source-plugin to 3.2.0
- Upgrade jacoco-maven-plugin to 0.8.5
- Upgrade ecj plugin to 3.19.0
- Upgrade eclipse-jarsigner-plugin to 1.1.7
- Upgrade wagon-ssh to 3.3.4
- Update Tycho to 1.5.1
- Require Maven version 3.6.2
- Bazel: Bump bazel version to 1.0.0
- Bazel: Use java_plugin and java_binary from @rules_java in jmh.bzl
- Bazel: Reuse version from .bazelversion for minimum used version check
- Move KetchSystem.delay to FileUtils.
- Fix benchmark pom.xml to include distribution managment config
- Run JMH benchmarks using bazel
- Benchmark for creating files and FileSnapshots
- Implement benchmark for looking up FileStore of a given Path
- JMH benchmark for SimpleLruCache
- Create 4.14 staging target platform
- Rename servlet-api-3_1 to match Gerrit master
- Update Eclipse SUA to latest 2.0 version
Conforms To UI/UX Guidelines
Not verified
This release is part of
Eclipse IDE 2019-12