blob: 091accd7f339781fdebc35e52bd6577acfa59925 [file] [log] [blame] [view]
Matthias Sohn76111492019-02-18 01:11:57 +01001# Java Git
Git Development Community1a6964c2009-09-29 16:47:03 -07002
Robin Stocker9fbe88a2012-09-28 23:21:22 +02003An implementation of the Git version control system in pure Java.
4
Matthias Sohn76111492019-02-18 01:11:57 +01005This project is licensed under the __EDL__ (Eclipse Distribution
Robin Rosenbergf84fb602012-08-01 23:25:20 +02006License).
Git Development Community1a6964c2009-09-29 16:47:03 -07007
Matthias Sohn76111492019-02-18 01:11:57 +01008JGit can be imported straight into Eclipse and built and tested from
9there. It can be built from the command line using
10[Maven](https://maven.apache.org/) or [Bazel](https://bazel.build/).
11The CI builds use Maven and run on [Jenkins](https://ci.eclipse.org/jgit/).
Robin Rosenberg2475d952014-07-16 01:53:50 +020012
Matthias Sohn76111492019-02-18 01:11:57 +010013- __org.eclipse.jgit__
Git Development Community1a6964c2009-09-29 16:47:03 -070014
15 A pure Java library capable of being run standalone, with no
Robin Stocker9fbe88a2012-09-28 23:21:22 +020016 additional support libraries. It provides classes to read and
17 write a Git repository and operate on a working directory.
Git Development Community1a6964c2009-09-29 16:47:03 -070018
Robin Rosenberg2475d952014-07-16 01:53:50 +020019 All portions of JGit are covered by the EDL. Absolutely no GPL,
Git Development Community1a6964c2009-09-29 16:47:03 -070020 LGPL or EPL contributions are accepted within this package.
21
Matthias Sohn76111492019-02-18 01:11:57 +010022- __org.eclipse.jgit.ant__
Robin Stocker9fbe88a2012-09-28 23:21:22 +020023
24 Ant tasks based on JGit.
25
Matthias Sohn76111492019-02-18 01:11:57 +010026- __org.eclipse.jgit.archive__
Robin Rosenberg2475d952014-07-16 01:53:50 +020027
28 Support for exporting to various archive formats (zip etc).
29
Matthias Sohn76111492019-02-18 01:11:57 +010030- __org.eclipse.jgit.http.apache__
Robin Rosenberg2475d952014-07-16 01:53:50 +020031
Matthias Sohn76111492019-02-18 01:11:57 +010032 [Apache httpclient](https://hc.apache.org/httpcomponents-client-ga/) support.
Robin Rosenberg2475d952014-07-16 01:53:50 +020033
Matthias Sohn76111492019-02-18 01:11:57 +010034- __org.eclipse.jgit.http.server__
Robin Stocker9fbe88a2012-09-28 23:21:22 +020035
Matthias Sohn76111492019-02-18 01:11:57 +010036 Server for the smart and dumb
37 [Git HTTP protocol](https://github.com/git/git/blob/master/Documentation/technical/http-protocol.txt).
Robin Stocker9fbe88a2012-09-28 23:21:22 +020038
Matthias Sohn76111492019-02-18 01:11:57 +010039- __org.eclipse.jgit.lfs__
Robin Stocker9fbe88a2012-09-28 23:21:22 +020040
Matthias Sohn76111492019-02-18 01:11:57 +010041 Support for [LFS](https://git-lfs.github.com/) (Large File Storage).
Robin Stocker9fbe88a2012-09-28 23:21:22 +020042
Matthias Sohn76111492019-02-18 01:11:57 +010043- __org.eclipse.jgit.lfs.server__
44
45 Basic LFS server support.
46
47- __org.eclipse.jgit.packaging__
Robin Rosenberg2475d952014-07-16 01:53:50 +020048
49 Production of Eclipse features and p2 repository for JGit. See the JGit
50 Wiki on why and how to use this module.
51
Matthias Sohn76111492019-02-18 01:11:57 +010052- __org.eclipse.jgit.pgm__
Robin Rosenberg2475d952014-07-16 01:53:50 +020053
Matthias Sohn76111492019-02-18 01:11:57 +010054 Command-line interface Git commands implemented using JGit
55 ("pgm" stands for program).
Robin Rosenberg2475d952014-07-16 01:53:50 +020056
Matthias Sohn76111492019-02-18 01:11:57 +010057- __org.eclipse.jgit.ssh.apache__
Robin Rosenberg2475d952014-07-16 01:53:50 +020058
Matthias Sohn76111492019-02-18 01:11:57 +010059 Client support for the ssh protocol based on
60 [Apache Mina sshd](https://mina.apache.org/sshd-project/).
Robin Stocker6b74aff2012-09-08 19:58:37 +020061
Matthias Sohn76111492019-02-18 01:11:57 +010062- __org.eclipse.jgit.ui__
Git Development Community1a6964c2009-09-29 16:47:03 -070063
Matthias Sohn76111492019-02-18 01:11:57 +010064 Simple UI for displaying git log.
Robin Rosenberg2475d952014-07-16 01:53:50 +020065
Matthias Sohn76111492019-02-18 01:11:57 +010066## Tests
Robin Stocker6b74aff2012-09-08 19:58:37 +020067
Matthias Sohn76111492019-02-18 01:11:57 +010068- __org.eclipse.jgit.junit__, __org.eclipse.jgit.junit.http__,
69__org.eclipse.jgit.junit.ssh__: Helpers for unit testing
70- __org.eclipse.jgit.ant.test__: Unit tests for org.eclipse.jgit.ant
71- __org.eclipse.jgit.http.test__: Unit tests for org.eclipse.jgit.http.server
72- __org.eclipse.jgit.lfs.server.test__: Unit tests for org.eclipse.jgit.lfs.server
73- __org.eclipse.jgit.lfs.test__: Unit tests for org.eclipse.jgit.lfs
74- __org.eclipse.jgit.pgm.test__: Unit tests for org.eclipse.jgit.pgm
75- __org.eclipse.jgit.ssh.apache.test__: Unit tests for org.eclipse.jgit.ssh.apache
76- __org.eclipse.jgit.test__: Unit tests for org.eclipse.jgit
Git Development Community1a6964c2009-09-29 16:47:03 -070077
Matthias Sohn76111492019-02-18 01:11:57 +010078## Warnings/Caveats
79
80- Native symbolic links are supported, provided the file system supports
81 them. For Windows you must use a non-administrator account and have the SeCreateSymbolicLinkPrivilege.
Git Development Community1a6964c2009-09-29 16:47:03 -070082
David Pursehouse368b5192019-02-19 08:33:11 +090083- Only the timestamp of the index is used by JGit if the index is
Robin Rosenberg2475d952014-07-16 01:53:50 +020084 dirty.
Git Development Community1a6964c2009-09-29 16:47:03 -070085
David Pursehouse67da5632017-02-10 15:58:26 +090086- JGit requires at least a Java 8 JDK.
Git Development Community1a6964c2009-09-29 16:47:03 -070087
Matthias Sohn76111492019-02-18 01:11:57 +010088- CRLF conversion is performed depending on the `core.autocrlf` setting,
Robin Rosenbergbf41eb02012-04-29 00:37:54 +020089 however Git for Windows by default stores that setting during
90 installation in the "system wide" configuration file. If Git is not
91 installed, use the global or repository configuration for the
92 core.autocrlf setting.
93
94- The system wide configuration file is located relative to where C
95 Git is installed. Make sure Git can be found via the PATH
96 environment variable. When installing Git for Windows check the "Run
97 Git from the Windows Command Prompt" option. There are other options
Sebastian Schuberthd7a44732015-05-19 11:43:30 +020098 like Eclipse settings that can be used for pointing out where C Git
99 is installed. Modifying PATH is the recommended option if C Git is
100 installed.
Robin Rosenbergbf41eb02012-04-29 00:37:54 +0200101
Matthias Sohn76111492019-02-18 01:11:57 +0100102- We try to use the same notation of `$HOME` as C Git does. On Windows
103 this is often not the same value as the `user.home` system property.
Git Development Community1a6964c2009-09-29 16:47:03 -0700104
Matthias Sohn76111492019-02-18 01:11:57 +0100105## Features
Git Development Community1a6964c2009-09-29 16:47:03 -0700106
Matthias Sohn76111492019-02-18 01:11:57 +0100107- __org.eclipse.jgit__
108 - Read loose and packed commits, trees, blobs, including
109 deltafied objects.
110 - Read objects from shared repositories
111 - Write loose commits, trees, blobs.
112 - Write blobs from local files or Java InputStreams.
113 - Read blobs as Java InputStreams.
114 - Copy trees to local directory, or local directory to a tree.
115 - Lazily loads objects as necessary.
116 - Read and write .git/config files.
117 - Create a new repository.
118 - Read and write refs, including walking through symrefs.
119 - Read, update and write the Git index.
120 - Checkout in dirty working directory if trivial.
121 - Walk the history from a given set of commits looking for commits
Git Development Community1a6964c2009-09-29 16:47:03 -0700122 introducing changes in files under a specified path.
Matthias Sohn76111492019-02-18 01:11:57 +0100123 - Object transport
Git Development Community1a6964c2009-09-29 16:47:03 -0700124
Git Development Community1a6964c2009-09-29 16:47:03 -0700125 Fetch via ssh, git, http, Amazon S3 and bundles.
126 Push via ssh, git and Amazon S3. JGit does not yet deltify
127 the pushed packs so they may be a lot larger than C Git packs.
128
Matthias Sohn76111492019-02-18 01:11:57 +0100129 - Garbage collection
130 - Merge
131 - Rebase
132 - And much more
Robin Rosenberg2475d952014-07-16 01:53:50 +0200133
Matthias Sohn76111492019-02-18 01:11:57 +0100134- __org.eclipse.jgit.pgm__
135 - Assorted set of command line utilities. Mostly for ad-hoc testing of jgit
Git Development Community1a6964c2009-09-29 16:47:03 -0700136 log, glog, fetch etc.
Matthias Sohn76111492019-02-18 01:11:57 +0100137- __org.eclipse.jgit.ant__
138 - Ant tasks
139- __org.eclipse.jgit.archive__
140 - Support for Zip/Tar and other formats
141- __org.eclipse.http__
142 - HTTP client and server support
Git Development Community1a6964c2009-09-29 16:47:03 -0700143
Matthias Sohn76111492019-02-18 01:11:57 +0100144## Missing Features
Git Development Community1a6964c2009-09-29 16:47:03 -0700145
Robin Stocker9fbe88a2012-09-28 23:21:22 +0200146There are some missing features:
Git Development Community1a6964c2009-09-29 16:47:03 -0700147
Matthias Sohn76111492019-02-18 01:11:57 +0100148- verifying signed commits
149- signing tags
150- signing push
Git Development Community1a6964c2009-09-29 16:47:03 -0700151
Matthias Sohn76111492019-02-18 01:11:57 +0100152## Support
Robin Stocker6b74aff2012-09-08 19:58:37 +0200153
Matthias Sohn76111492019-02-18 01:11:57 +0100154Post questions, comments or discussions to the jgit-dev@eclipse.org mailing list.
155You need to be [subscribed](https://dev.eclipse.org/mailman/listinfo/jgit-dev)
156to post. File bugs and enhancement requests in
157[Bugzilla](https://wiki.eclipse.org/EGit/Contributor_Guide#Filing_Bugs).
Git Development Community1a6964c2009-09-29 16:47:03 -0700158
Matthias Sohn76111492019-02-18 01:11:57 +0100159## Contributing
Robin Stocker9fbe88a2012-09-28 23:21:22 +0200160
David Pursehouse368b5192019-02-19 08:33:11 +0900161See the [EGit Contributor Guide](http://wiki.eclipse.org/EGit/Contributor_Guide).
Git Development Community1a6964c2009-09-29 16:47:03 -0700162
Matthias Sohn76111492019-02-18 01:11:57 +0100163## About Git
Git Development Community1a6964c2009-09-29 16:47:03 -0700164
Robin Stocker9fbe88a2012-09-28 23:21:22 +0200165More information about Git, its repository format, and the canonical
Matthias Sohn76111492019-02-18 01:11:57 +0100166C based implementation can be obtained from the
167[Git website](http://git-scm.com/).