Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "JGit/New and Noteworthy/4.3"

(Bug Fixes)
(Contributors)
Line 62: Line 62:
  
 
= Contributors =
 
= Contributors =
The following developers worked on this release of JGit :
+
The following 19 developers worked on this release of JGit :
 +
Chris Gavin
 +
Christian Halstrick
 +
David Ostrovsky
 +
David Pursehouse
 +
Hugo Arès
 +
Ivan Motsch
 +
Jonathan Nieder
 +
Laurent Delaigue
 +
Matthias Sohn
 +
Mike Williams
 +
Philipp Marx
 +
Preben Ingvaldsen
 +
Rüdiger Herrmann
 +
Saša Živkov
 +
Shawn Pearce
 +
Terry Parker
 +
Thomas Wolf
 +
Yuxuan 'fishy' Wang
 +
XinTong Wang

Revision as of 08:59, 7 April 2016

JGit

Git attributes support

Implement git attributes support for

  • text attributes
  • eol attributes
  • macros
  • binary macro

Large File Storage (LFS) Extension

Git Large File Storage (LFS) is a Git extension for versioning large files

LFS replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote LFS server.

In 4.3 the following features to support LFS in JGit were implemented

  • SHA-256 abstraction
  • command line command debug-lfs-store to run LFS test server
  • LFS server: support LFS protocol and a file system based LFS storage (used in Gerrit lfs-storage-fs plugin)
  • LFS server: support Amazon S3 based storage for LFS (used in Gerrit lfs-storage-s3 plugin)
  • fix FileLfsRepository to make it thread safe

RefTree

RefTree enables JGit to version refs (branches, tags and symbolic refs) in a Git tree and enables atomic push which is a precondition to implement Git Ketch.

A group of updates can be applied by updating the tree in one step, writing out a new root tree, and storing its SHA-1. If references are stored in RefTrees, comparing two repositories is a matter of checking if two SHA-1s are identical. Without RefTrees comparing two repositories requires listing all references and comparing the sets.

Track the "refs/" directory as a root tree by storing references that point directly at an object as a GITLINK entry in the tree. For example "refs/heads/master" is written as "heads/master".

Annotated tags also store their peeled value with ^{} suffix, using "tags/v1.0" and "tags/v1.0^{}" GITLINK entries.

Symbolic references are written as SYMLINK entries with the blob of the symlink carrying the name of the symbolic reference target.

  • HEAD is outside of "refs/" namespace so it is stored as a special "..HEAD" entry.
  • debug-rebuild-ref-tree command line command to migrate refs to RefTreeDatabase
  • copy HEAD into RefTree
  • RefTreeDatabase: Allow ORIG_HEAD, etc. on non-bare repositories
  • RefTreeDatabase: Expose bootstrap refs in getAdditionalRefs

Git Ketch

Git Ketch is a multi-master Git repository management system. Writes are successful only if a majority of participant servers agree. Acknowledged writes are durable against server failures as a majority of the participants store all required objects.

Git Ketch is modeled on the Raft Consensus Algorithm. A ketch sailing vessel is faster and more nimble than a raft. It can also carry more source codes. Git Ketch front-loads replication costs, which vaguely resembles a ketch sailing vessel's distinguishing feature of the main mast on the front of the ship.

In 4.3 the following Ketch features were implemented

  • basic replication system
  • simple map of running leader instances
  • intercept push and route it through Ketch
  • daemon: Add --ketch=LEADER flag

Repo command

  • add ignoreRemoteFailures option to RepoCommand
  • support revision in remote tag

Miscellaneous

  • implement configuration option DIR_NO_GITLINKS

Build and Release Engineering

  • Enable building JGit and Gerrit in the same Buck build to speed up build for features spanning JGit and Gerrit

Bug Fixes

3 Bugs and 3 enhancement requests were closed

Contributors

The following 19 developers worked on this release of JGit : Chris Gavin Christian Halstrick David Ostrovsky David Pursehouse Hugo Arès Ivan Motsch Jonathan Nieder Laurent Delaigue Matthias Sohn Mike Williams Philipp Marx Preben Ingvaldsen Rüdiger Herrmann Saša Živkov Shawn Pearce Terry Parker Thomas Wolf Yuxuan 'fishy' Wang XinTong Wang

Back to the top