| ## Overview | |
| Gitblit is an open-source, integrated pure Java stack for managing, viewing, and serving [Git][git] repositories. | |
| Its designed primarily as a tool for small workgroups who want to host [Git][git] repositories on a Windows machine. Having said that, it works equally well on any standard Linux distribution. | |
| ### Current Release | |
| [%VERSION%](http://gitblit.com/%DISTRIBUTION%) based on [%JGIT%][jgit] (*%BUILDDATE%*) | |
| sources @ [Github][gitbltsrc] | |
| ### Design Principles | |
| 1. [Keep It Simple, Stupid](http://en.wikipedia.org/wiki/KISS_principle) | |
| 2. Offer useful features for serving Git repositories. If feature is complex, refer to #1. | |
| 3. All dependencies must be retrievable from a publicly accessible [Maven](http://maven.apache.org) repository.<br/>This is to ensure authenticity of dependencies and to keep the Gitblit distribution svelte. | |
| ### Features | |
| - Out-of-the-box integrated stack requiring minimal configuration | |
| - JGit SmartHTTP servlet | |
| - Browser and git client authentication | |
| - Four repository access control configurations and a Read-Only flag | |
| <ul class='noBullets'> | |
| <li> *Anonymous View, Clone & Push*</li> | |
| <li> *Authenticated Push*</li> | |
| <li> *Authenticated Clone & Push*</li> | |
| <li> *Authenticated View, Clone & Push*</li> | |
| <li> Freeze repository (i.e. deny push, make read-only) | |
| </ul> | |
| - Gitweb inspired UI | |
| - Administrators may create, edit, rename, or delete repositories through the web UI | |
| - Administrators may create, edit, rename, or delete users through the web UI | |
| - Repository Owners may edit repositories through the web UI | |
| - Automatically generates a self-signed certificate for https communications | |
| - Dates can optionally be displayed using the browser's reported timezone | |
| - Author and Committer email address display can be controlled | |
| - Dynamic zip downloads feature | |
| - Markdown view support | |
| - Syntax highlighting | |
| - Customizable regular expression handling for commit messages | |
| - Single text file for server configuration | |
| - Single text file for users configuration | |
| - Simple repository stats and activity graph (uses Google Charts) | |
| - Optional utility pages | |
| <ul class='noBullets'> | |
| <li> Docs page which enumerates all Markdown files within a repository</li> | |
| <li> Ticgit ticket pages *(based on last MIT release bf57b032 2009-01-27)*</li> | |
| </ul> | |
| ### Limitations | |
| - HTTP/HTTPS are the only supported protocols | |
| - Access controls are not path-based, they are repository-based | |
| - Only Administrators can create, rename or delete repositories | |
| - Gitblit is an integrated, full-stack solution. There is no WAR build at this time. | |
| ### Todo List | |
| - Review spots where Gitblit can cache data instead of abusing the disk | |
| - stats | |
| - users.properties access | |
| - available repositories | |
| - etc | |
| - Code documentation | |
| - Unit testing | |
| ### Idea List | |
| - Ticgit activity/timeline | |
| - Ticgit query feature with paging support | |
| - Ticgit ticket change history | |
| - View images on Blob page | |
| - View other binary files on Blob page | |
| - Markdown editing feature | |
| - Blame (waiting for the [JGit][jgit] team to do the hard part) | |
| ### License | |
| Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) | |
| ### Inspirations | |
| - [Gitweb](http://www.git-scm.com) | |
| - [Fossil](http://www.fossil-scm.org) | |
| ## Architecture | |
|  | |
| ### Bundled Dependencies | |
| The following dependencies are bundled with the Gitblit zip distribution file. | |
| - [google-code-prettify](http://code.google.com/p/google-code-prettify) (Apache 2.0) | |
| - [JavaService](http://forge.ow2.org/projects/javaservice) (BSD and LGPL) | |
| - magnifying glass search icon courtesy of [Gnome](http://gnome.org) (Creative Commons CC-BY) | |
| - modified Git logo originally designed by [Henrik Nyh](http://henrik.nyh.se/2007/06/alternative-git-logo-and-favicon) | |
| - other icons courtesy of [FatCow Hosting](http://www.fatcow.com/free-icons) (Creative Commons CC-BY) | |
| ### Downloaded Dependencies | |
| The following dependencies are automatically downloaded from the Apache Maven repository and from the Eclipse Maven repository when Gitblit is launched for the first time. | |
| - [JGit][jgit] (EDL 1.0) | |
| - [Wicket](http://wicket.apache.org) (Apache 2.0) | |
| - [WicketStuff GoogleCharts](https://github.com/wicketstuff/core/wiki/GoogleCharts) (Apache 2.0) | |
| - [MarkdownPapers](http://markdown.tautua.org) (Apache 2.0) | |
| - [Jetty](http://eclipse.org/jetty) (Apache 2.0, EPL 1.0) | |
| - [SLF4J](http://www.slf4j.org) (MIT/X11) | |
| - [Log4j](http://logging.apache.org/log4j) (Apache 2.0) | |
| - [JCommander](http://jcommander.org) (Apache 2.0) | |
| - [BouncyCastle](http://www.bouncycastle.org) (MIT/X11) | |
| ### Other Build Dependencies | |
| - [Fancybox image viewer](http://fancybox.net) (MIT and GPL dual-licensed) | |
| - [JSch - Java Secure Channel](http://www.jcraft.com/jsch) (BSD) | |
| - [JUnit](http://junit.org) (Common Public License) | |
| ## Building | |
| [Eclipse](http://eclipse.org) is recommended for development as the project settings are preconfigured. | |
| Additionally, [Google CodePro AnalytiX](http://code.google.com/javadevtools), [eclipse-cs](http://eclipse-cs.sourceforge.net), and [FindBugs](http://findbugs.sourceforge.net) are recommended development tools. | |
| 1. Clone the git repository from [Github][gitbltsrc]. | |
| 2. Import the gitblit project into your Eclipse workspace.<br/> | |
| *There will be lots of build errors.* | |
| 3. Using Ant, execute the `build.xml` script in the project root.<br/> | |
| *This will download all necessary build dependencies and will also generate the Keys class for accessing settings.* | |
| 4. Select your gitblit project root and **Refresh** the project, this should correct all build problems. | |
| 5. Review the settings in `gitblit.properties` in your project root.<br/> | |
| Make sure you set an appropriate value for *git.repositoriesFolder*. | |
| 6. Execute the *com.gitblit.Launcher* class to start Gitblit. | |
| [jgit]: http://eclipse.org/jgit "Eclipse JGit Site" | |
| [git]: http://git-scm.com "Official Git Site" | |
| [gitbltsrc]: http://somewhere.com "gitblit git repository" |