1# Java Git 2 3An implementation of the Git version control system in pure Java. 4 5This project is licensed under the __EDL__ (Eclipse Distribution 6License). 7 8JGit 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/). 12 13- __org.eclipse.jgit__ 14 15 A pure Java library capable of being run standalone, with no 16 additional support libraries. It provides classes to read and 17 write a Git repository and operate on a working directory. 18 19 All portions of JGit are covered by the EDL. Absolutely no GPL, 20 LGPL or EPL contributions are accepted within this package. 21 22- __org.eclipse.jgit.ant__ 23 24 Ant tasks based on JGit. 25 26- __org.eclipse.jgit.archive__ 27 28 Support for exporting to various archive formats (zip etc). 29 30- __org.eclipse.jgit.http.apache__ 31 32 [Apache httpclient](https://hc.apache.org/httpcomponents-client-ga/) support. 33 34- __org.eclipse.jgit.http.server__ 35 36 Server for the smart and dumb 37 [Git HTTP protocol](https://github.com/git/git/blob/master/Documentation/technical/http-protocol.txt). 38 39- __org.eclipse.jgit.lfs__ 40 41 Support for [LFS](https://git-lfs.github.com/) (Large File Storage). 42 43- __org.eclipse.jgit.lfs.server__ 44 45 Basic LFS server support. 46 47- __org.eclipse.jgit.packaging__ 48 49 Production of Eclipse features and p2 repository for JGit. See the JGit 50 Wiki on why and how to use this module. 51 52- __org.eclipse.jgit.pgm__ 53 54 Command-line interface Git commands implemented using JGit 55 ("pgm" stands for program). 56 57- __org.eclipse.jgit.ssh.apache__ 58 59 Client support for the ssh protocol based on 60 [Apache Mina sshd](https://mina.apache.org/sshd-project/). 61 62- __org.eclipse.jgit.ui__ 63 64 Simple UI for displaying git log. 65 66## Tests 67 68- __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 77 78## 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. 82 83- Only the timestamp of the index is used by JGit if the index is 84 dirty. 85 86- JGit requires at least a Java 8 JDK. 87 88- CRLF conversion is performed depending on the `core.autocrlf` setting, 89 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 98 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. 101 102- 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. 104 105## Features 106 107- __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 122 introducing changes in files under a specified path. 123 - Object transport 124 125 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 129 - Garbage collection 130 - Merge 131 - Rebase 132 - And much more 133 134- __org.eclipse.jgit.pgm__ 135 - Assorted set of command line utilities. Mostly for ad-hoc testing of jgit 136 log, glog, fetch etc. 137- __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 143 144## Missing Features 145 146There are some missing features: 147 148- verifying signed commits 149- signing tags 150- signing push 151 152## Support 153 154Post 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). 158 159## Contributing 160 161See the [EGit Contributor Guide](http://wiki.eclipse.org/EGit/Contributor_Guide). 162 163## About Git 164 165More information about Git, its repository format, and the canonical 166C based implementation can be obtained from the 167[Git website](http://git-scm.com/). 168