Over the last 3 years Han-Wen has contributed a stream of high quality patches [1].
Most notably he implemented reftable [2] for FileRepository [3] which provides a number
of advantages over the traditional storage format of loose and packed refs:
* 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.
He is also is working on a corresponding Go and C implementation [4] to ensure support for
the new storage format in all major git implementations.
Hence I think it's overdue that we welcome Han-Wen as a committer on the project.
[1]
* 7386f73bb - Remove reftree and ketch (5 weeks ago)<Han-Wen Nienhuys>
* 30fb4808f - Update reftable storage repo layout (11 months ago)<Han-Wen Nienhuys>
* 753fbaf11 - Simplify ReftableCompactor (11 months ago)<Han-Wen Nienhuys>
* c217d33ff - Documentation/technical/reftable: improve repo layout (12 months ago)<Han-Wen Nienhuys>
* 79266a1fe - reftable: don't check deadline on the first try (12 months ago)<Han-Wen Nienhuys>
* 936a031ca - reftable: clarify comment (12 months ago)<Han-Wen Nienhuys>
* 8c9f7656c - reftable: clear cache on full compaction (12 months ago)<Han-Wen Nienhuys>
* dd203f03c - reftable: remove outdated comment (12 months ago)<Han-Wen Nienhuys>
* 0bf256443 - reftable: clarify that LogCursor may return a null ReflogEntry (12 months ago)<Han-Wen Nienhuys>
* 00252730d - Add ReftableNumbersNotIncreasingException#toString (1 year ago)<Han-Wen Nienhuys>
* 5185d288c - Introduce RefDatabase#hasFastTipsWithSha1 (1 year, 2 months ago)<Han-Wen Nienhuys>
* 9cb8e2f31 - RepositoryCache: don't require HEAD in git repositories (1 year, 2 months ago)<Han-Wen Nienhuys>
* e0744891f - FileRepository: cleanup refs outside refs/ on reftable conversion (1 year, 2 months ago)<Han-Wen Nienhuys>
* 0356613f4 - pgm: add write stats to BenchmarkReftable (1 year, 2 months ago)<Han-Wen Nienhuys>
* a8f4bf6ab - pgm: add command to convert repo to reftable (1 year, 2 months ago)<Han-Wen Nienhuys>
* 38586d54d - file: implement FileReftableDatabase (1 year, 2 months ago)<Han-Wen Nienhuys>
* 63fba337b - Run Eclipse formatter on BatchRefUpdateTest (1 year, 2 months ago)<Han-Wen Nienhuys>
* 74bfec411 - Move KetchSystem.delay to FileUtils. (1 year, 2 months ago)<Han-Wen Nienhuys>
* 7c75a68b9 - reftable: enforce ascending order in sortAndWriteRefs (1 year, 3 months ago)<Han-Wen Nienhuys>
* cf11a03bc - Documentation/technical/reftable: change suggested file names (1 year, 3 months ago)<Han-Wen Nienhuys>
* e4fd171da - reftable: remove assert calls (1 year, 3 months ago)<Han-Wen Nienhuys>
* 2b1e94272 - reftable: split off generic code from DFS code (1 year, 3 months ago)<Han-Wen Nienhuys>
* 218bacdc1 - reftable: fix lookup by ID in merged reftables (1 year, 3 months ago)<Han-Wen Nienhuys>
* a358d0c53 - reftable: move AutoCloseable to ReftableReader (1 year, 4 months ago)<Han-Wen Nienhuys>
* c517725b8 - Documentation/technical/reftable: document rename in reflog. (1 year, 5 months ago)<Han-Wen Nienhuys>
* e5880d953 - reftable: pass OutputStream at construction time (1 year, 4 months ago)<Han-Wen Nienhuys>
* d75a6b5d8 - dfs: rename ReftableStack to DfsReftableStack (1 year, 4 months ago)<Han-Wen Nienhuys>
* 33dc08c16 - reftable: add maxUpdateIndex to Reftable (1 year, 4 months ago)<Han-Wen Nienhuys>
* c78fbf23a - dfs: use ReftableConfig() constructor in DfsReftableDatabase (1 year, 4 months ago)<Han-Wen Nienhuys>
* 434e6c732 - dfs: use RefDatabase API for exactRef in ReftableBatchRefUpdate (1 year, 4 months ago)<Han-Wen Nienhuys>
* 5c390cf9d - reftable: add OutputStream argument to ReftableWriter constructor (1 year, 4 months ago)<Han-Wen Nienhuys>
* 90efbd216 - reftable: read file footer in ReftableReader#allRefs (1 year, 4 months ago)<Han-Wen Nienhuys>
* 726bcc4fd - reftable: add ReftableReflogReader (1 year, 4 months ago)<Han-Wen Nienhuys>
* 0e3d4a273 - BatchRefUpdate: repro racy atomic update, and fix it (1 year, 5 months ago)<Han-Wen Nienhuys>
* d7ee5aafe - reftable: increment pointer *after* reading uint16 (1 year, 5 months ago)<Han-Wen Nienhuys>
* 81801d6f9 - reftable: test absense of prefix matching in Reflog (1 year, 5 months ago)<Han-Wen Nienhuys>
* 9f9163cbc - reftable: enforce ordering for ref and log writes (1 year, 5 months ago)<Han-Wen Nienhuys>
* ca3b4b608 - reftable: add some more comments (1 year, 5 months ago)<Han-Wen Nienhuys>
* ca9107d16 - reftable: fix seeking to refs in reflog implementation (1 year, 5 months ago)<Han-Wen Nienhuys>
* e60b9e187 - FileSnapshot: fix bug with timestamp thresholding (1 year, 6 months ago)<Han-Wen Nienhuys>
* 84e6c24e5 - FileSnapshot#equals: consider UNKNOWN_SIZE (1 year, 6 months ago)<Han-Wen Nienhuys>
* bbff3ff00 - Clarify error message for invalid Windows characters (1 year, 10 months ago)<Han-Wen Nienhuys>
* 8a5b044a9 - InternalPushConnection: don't swallow RuntimeException (2 years, 3 months ago)<Han-Wen Nienhuys>
* d1dc49e96 - Use a TreeMap to construct the list of renamed projects (2 years, 5 months ago)<Han-Wen Nienhuys>
* f3ec7cf3f - Remove further unnecessary 'final' keywords (2 years, 8 months ago)<Han-Wen Nienhuys>
* 6d370d837 - Remove 'final' in parameter lists (2 years, 8 months ago)<Han-Wen Nienhuys>
* f6873ffe5 - Fixup javadoc and formatting in RawText and RawParseUtils (2 years, 8 months ago)<Han-Wen Nienhuys>
* 08d2e0188 - Introduce new RawText constructor and RawParseUtils.lineMapOrBinary (2 years, 8 months ago)<Han-Wen Nienhuys>
* 6a420613f - RepoCommand: generate relative submodule URLs from absolute URLs. (2 years, 11 months ago)<Han-Wen Nienhuys>
* 3214171de - RepoCommand: don't record new commit if tree did not change (2 years, 11 months ago)<Han-Wen Nienhuys>
* 446a7096e - RepoCommand: persist unreadable submodules in .gitmodules (2 years, 11 months ago)<Han-Wen Nienhuys>
* 35bb7ccc4 - Declare LFS dependency on GSON for Bazel build (2 years, 11 months ago)<Han-Wen Nienhuys>
* f40ebed12 - Make SideBandInputStream public (3 years ago)<Han-Wen Nienhuys>
* dc24383b6 - Revert "Throw BinaryBlobException from RawParseUtils#lineMap." (3 years, 3 months ago)<Han-Wen NIenhuys>
* f5ae26f74 - Fix typo in comment (3 years, 3 months ago)<Han-Wen Nienhuys>
* f2e64cd89 - Throw BinaryBlobException from RawParseUtils#lineMap. (3 years, 3 months ago)<Han-Wen Nienhuys>
* ced658c44 - Avoid loading and merging binary data in ResolveMerger (3 years, 3 months ago)<Han-Wen Nienhuys>
* 2b444d781 - Introduce ObjectLoader.Filter for delegation (3 years, 3 months ago)<Han-Wen Nienhuys>
* ea2a4e3ab - Introduce RawText#load. (3 years, 3 months ago)<Han-Wen Nienhuys>
* a551b6469 - Treat RawText of binary data as file with one single line. (3 years, 6 months ago)<Han-Wen Nienhuys>
* ab0eedcea - Trim boilerplate in RawParseUtils_LineMapTest. (3 years, 6 months ago)<Han-Wen Nienhuys>
* 832808bd5 - Fix out-of-bounds exception in RepoCommand#relative (3 years, 8 months ago)<Han-Wen Nienhuys>
* fe5437e96 - Fix RepoCommand to allow for relative URLs (3 years, 9 months ago)<Han-Wen Nienhuys>
* f17ec3928 - Cleanup and test trailing slash handling in ManifestParser (3 years, 9 months ago)<Han-Wen Nienhuys>
* 84d855cda - ManifestParser: Throw exception if remote does not have fetch attribute (3 years, 9 months ago)<Han-Wen Nienhuys>
* f32d65759 - Document the intended use of RepoCommand#setURI() (3 years, 10 months ago)<Han-Wen Nienhuys>
* 6e652846f - Noop changes to ManifestParser (3 years, 10 months ago)<Han-Wen Nienhuys>
* 27b05c7d7 - Consistently use 'path' for the path to a subrepo in RepoCommand (3 years, 10 months ago)<Han-Wen Nienhuys>
[2] https://github.com/eclipse/jgit/blob/master/Documentation/technical/ref…
[3] https://git.eclipse.org/r/c/jgit/jgit/+/146568
[4] https://github.com/google/reftable
Voter | Vote | Comments |
---|---|---|
Matthias Sohn | +1 | +1 implied by nomination |
Christian Halstrick | +1 | |
Terry Parker | +1 | |
Sasa Zivkov | +1 |
PMC Approval
- Gunnar Wagenknecht (+1) Welcome!