|
|
|
# Java Git
|
|
|
|
|
|
|
|
An implementation of the Git version control system in pure Java.
|
|
|
|
|
|
|
|
This project is licensed under the __EDL__ (Eclipse Distribution
|
|
|
|
License).
|
|
|
|
|
|
|
|
JGit can be imported straight into Eclipse and built and tested from
|
|
|
|
there. It can be built from the command line using
|
|
|
|
[Maven](https://maven.apache.org/) or [Bazel](https://bazel.build/).
|
|
|
|
The CI builds use Maven and run on [Jenkins](https://ci.eclipse.org/jgit/).
|
|
|
|
|
|
|
|
- __org.eclipse.jgit__
|
|
|
|
|
|
|
|
A pure Java library capable of being run standalone, with no
|
|
|
|
additional support libraries. It provides classes to read and
|
|
|
|
write a Git repository and operate on a working directory.
|
|
|
|
|
|
|
|
All portions of JGit are covered by the EDL. Absolutely no GPL,
|
|
|
|
LGPL or EPL contributions are accepted within this package.
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.ant__
|
|
|
|
|
|
|
|
Ant tasks based on JGit.
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.archive__
|
|
|
|
|
|
|
|
Support for exporting to various archive formats (zip etc).
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.http.apache__
|
|
|
|
|
|
|
|
[Apache httpclient](https://hc.apache.org/httpcomponents-client-ga/) support.
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.http.server__
|
|
|
|
|
|
|
|
Server for the smart and dumb
|
|
|
|
[Git HTTP protocol](https://github.com/git/git/blob/master/Documentation/technical/http-protocol.txt).
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.lfs__
|
|
|
|
|
|
|
|
Support for [LFS](https://git-lfs.github.com/) (Large File Storage).
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.lfs.server__
|
|
|
|
|
|
|
|
Basic LFS server support.
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.packaging__
|
|
|
|
|
|
|
|
Production of Eclipse features and p2 repository for JGit. See the JGit
|
|
|
|
Wiki on why and how to use this module.
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.pgm__
|
|
|
|
|
|
|
|
Command-line interface Git commands implemented using JGit
|
|
|
|
("pgm" stands for program).
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.ssh.apache__
|
|
|
|
|
|
|
|
Client support for the ssh protocol based on
|
|
|
|
[Apache Mina sshd](https://mina.apache.org/sshd-project/).
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.ui__
|
|
|
|
|
|
|
|
Simple UI for displaying git log.
|
|
|
|
|
|
|
|
## Tests
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.junit__, __org.eclipse.jgit.junit.http__,
|
|
|
|
__org.eclipse.jgit.junit.ssh__: Helpers for unit testing
|
|
|
|
- __org.eclipse.jgit.ant.test__: Unit tests for org.eclipse.jgit.ant
|
|
|
|
- __org.eclipse.jgit.http.test__: Unit tests for org.eclipse.jgit.http.server
|
|
|
|
- __org.eclipse.jgit.lfs.server.test__: Unit tests for org.eclipse.jgit.lfs.server
|
|
|
|
- __org.eclipse.jgit.lfs.test__: Unit tests for org.eclipse.jgit.lfs
|
|
|
|
- __org.eclipse.jgit.pgm.test__: Unit tests for org.eclipse.jgit.pgm
|
|
|
|
- __org.eclipse.jgit.ssh.apache.test__: Unit tests for org.eclipse.jgit.ssh.apache
|
|
|
|
- __org.eclipse.jgit.test__: Unit tests for org.eclipse.jgit
|
|
|
|
|
|
|
|
## Warnings/Caveats
|
|
|
|
|
|
|
|
- Native symbolic links are supported, provided the file system supports
|
|
|
|
them. For Windows you must use a non-administrator account and have the SeCreateSymbolicLinkPrivilege.
|
|
|
|
|
|
|
|
- Only the timestamp of the index is used by JGit if the index is
|
|
|
|
dirty.
|
|
|
|
|
|
|
|
- JGit requires at least a Java 8 JDK.
|
|
|
|
|
|
|
|
- CRLF conversion is performed depending on the `core.autocrlf` setting,
|
|
|
|
however Git for Windows by default stores that setting during
|
|
|
|
installation in the "system wide" configuration file. If Git is not
|
|
|
|
installed, use the global or repository configuration for the
|
|
|
|
core.autocrlf setting.
|
|
|
|
|
|
|
|
- The system wide configuration file is located relative to where C
|
|
|
|
Git is installed. Make sure Git can be found via the PATH
|
|
|
|
environment variable. When installing Git for Windows check the "Run
|
|
|
|
Git from the Windows Command Prompt" option. There are other options
|
|
|
|
like Eclipse settings that can be used for pointing out where C Git
|
|
|
|
is installed. Modifying PATH is the recommended option if C Git is
|
|
|
|
installed.
|
|
|
|
|
|
|
|
- We try to use the same notation of `$HOME` as C Git does. On Windows
|
|
|
|
this is often not the same value as the `user.home` system property.
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
- __org.eclipse.jgit__
|
|
|
|
- Read loose and packed commits, trees, blobs, including
|
|
|
|
deltafied objects.
|
|
|
|
- Read objects from shared repositories
|
|
|
|
- Write loose commits, trees, blobs.
|
|
|
|
- Write blobs from local files or Java InputStreams.
|
|
|
|
- Read blobs as Java InputStreams.
|
|
|
|
- Copy trees to local directory, or local directory to a tree.
|
|
|
|
- Lazily loads objects as necessary.
|
|
|
|
- Read and write .git/config files.
|
|
|
|
- Create a new repository.
|
|
|
|
- Read and write refs, including walking through symrefs.
|
|
|
|
- Read, update and write the Git index.
|
|
|
|
- Checkout in dirty working directory if trivial.
|
|
|
|
- Walk the history from a given set of commits looking for commits
|
|
|
|
introducing changes in files under a specified path.
|
|
|
|
- Object transport
|
|
|
|
|
|
|
|
Fetch via ssh, git, http, Amazon S3 and bundles.
|
|
|
|
Push via ssh, git and Amazon S3. JGit does not yet deltify
|
|
|
|
the pushed packs so they may be a lot larger than C Git packs.
|
|
|
|
|
|
|
|
- Garbage collection
|
|
|
|
- Merge
|
|
|
|
- Rebase
|
|
|
|
- And much more
|
|
|
|
|
|
|
|
- __org.eclipse.jgit.pgm__
|
|
|
|
- Assorted set of command line utilities. Mostly for ad-hoc testing of jgit
|
|
|
|
log, glog, fetch etc.
|
|
|
|
- __org.eclipse.jgit.ant__
|
|
|
|
- Ant tasks
|
|
|
|
- __org.eclipse.jgit.archive__
|
|
|
|
- Support for Zip/Tar and other formats
|
|
|
|
- __org.eclipse.http__
|
|
|
|
- HTTP client and server support
|
|
|
|
|
|
|
|
## Missing Features
|
|
|
|
|
|
|
|
There are some missing features:
|
|
|
|
|
|
|
|
- verifying signed commits
|
|
|
|
- signing tags
|
|
|
|
- signing push
|
|
|
|
|
|
|
|
## Support
|
|
|
|
|
|
|
|
Post questions, comments or discussions to the jgit-dev@eclipse.org mailing list.
|
|
|
|
You need to be [subscribed](https://dev.eclipse.org/mailman/listinfo/jgit-dev)
|
|
|
|
to post. File bugs and enhancement requests in
|
|
|
|
[Bugzilla](https://wiki.eclipse.org/EGit/Contributor_Guide#Filing_Bugs).
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
|
|
|
|
See the [EGit Contributor Guide](http://wiki.eclipse.org/EGit/Contributor_Guide).
|
|
|
|
|
|
|
|
## About Git
|
|
|
|
|
|
|
|
More information about Git, its repository format, and the canonical
|
|
|
|
C based implementation can be obtained from the
|
|
|
|
[Git website](http://git-scm.com/).
|