Skip to main content
  • Log in
  • Manage Cookies
projects.eclipse.org
Download
  • Projects
  • Working Groups
  • Members
  • Community
    • Marketplace
    • Events
    • Planet Eclipse
    • Newsletter
    • Videos
    • Blogs
  • Participate
    • Report a Bug
    • Forums
    • Mailing Lists
    • Wiki
    • IRC
    • Research
  • Eclipse IDE
    • Download
    • Learn More
    • Documentation
    • Getting Started / Support
    • How to Contribute
    • IDE and Tools
    • Newcomer Forum
  • More
      • Community

      • Marketplace
      • Events
      • Planet Eclipse
      • Newsletter
      • Videos
      • Blogs
      • Participate

      • Report a Bug
      • Forums
      • Mailing Lists
      • Wiki
      • IRC
      • Research
      • Eclipse IDE

      • Download
      • Learn More
      • Documentation
      • Getting Started / Support
      • How to Contribute
      • IDE and Tools
      • Newcomer Forum
    • Search

  1. Home
  2. Projects
  3. Eclipse Technology
  4. Eclipse JGit™: Java...
  5. 4.3

Eclipse JGit™: Java implementation of Git 4.3

Primary tabs

  • Overview(active tab)
  • Release Plan
  • Review Information

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

 

Release Date: 
Wednesday, April 6, 2016
Review: 
4.3 Release Review
Release Type: 
Minor release

Project Links

  • Website
Eclipse JGit™: Java implementation of Git

Related Projects

Related Projects:

  • Eclipse Technology
    • Eclipse EGit™: Git Integration for Eclipse

Project Hierarchy:

  • Eclipse Technology
  • Eclipse JGit™: Java implementation of Git

Tags

Technology Types
  • OSGi
  • Tools
Build Technologies
  • Jenkins
  • Maven
  • Tycho

Eclipse Foundation

  • About Us
  • Contact Us
  • Sponsor
  • Members
  • Governance
  • Code of Conduct
  • Logo and Artwork
  • Board of Directors
  • Careers

Legal

  • Privacy Policy
  • Terms of Use
  • Copyright Agent
  • Eclipse Public License
  • Legal Resources

Useful Links

  • Report a Bug
  • Documentation
  • How to Contribute
  • Mailing Lists
  • Forums
  • Marketplace

Other

  • IDE and Tools
  • Projects
  • Working Groups
  • Research@Eclipse
  • Report a Vulnerability
  • Service Status

Copyright © Eclipse Foundation. All Rights Reserved.

Back to the top