JGit

Git attributes support

Implement git attributes support for

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

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.

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

Repo command

Miscellaneous

Build and Release Engineering