summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.pgm/src/org
diff options
context:
space:
mode:
authorHan-Wen Nienhuys <hanwen@google.com>2019-08-12 17:33:51 +0200
committerMatthias Sohn <matthias.sohn@sap.com>2019-11-16 23:16:01 -0800
commit38586d54d0a2da26d574fec831fce8964205db50 (patch)
treef725df7edde7b3c86d4f3dd3946018dc44672a62 /org.eclipse.jgit.pgm/src/org
parent7b73d5eec746f58972585ba5f6364190704a7519 (diff)
downloadjgit-38586d54d0a2da26d574fec831fce8964205db50.tar.gz
jgit-38586d54d0a2da26d574fec831fce8964205db50.zip
file: implement FileReftableDatabase
Reftable is a binary, block-based storage format for the ref-database. It provides several advantages over the traditional packed + loose 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. For testing, a FileReftableTest (mirroring RefUpdateTest) is added to check for Reftable specific behavior. This must be done separately, as reflogs have different semantics. Add a reftable flavor of BatchRefUpdateTest. Add a FileReftableStackTest to exercise compaction. Add FileRepository#convertToReftable so existing testdata can be reused. CQ: 21007 Change-Id: I1837f268e91c6b446cb0155061727dbaccb714b8 Signed-off-by: Han-Wen Nienhuys <hanwen@google.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit.pgm/src/org')
0 files changed, 0 insertions, 0 deletions