## Overview
Git:Blit 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.
Of course, since its pure Java it should run with any JVM on any platform, but there are already [many compelling Git solutions](https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools) for non-Windows environments.
### Current Version
[{0}](http://gitblit.com/{1}) based on [{2}][jgit] (*{3}*)
sources @ [Github][gitbltsrc]
### Design Principles
1. [KISS](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 repository.
This is to ensure authenticity of dependencies and to keep the Git:Blit 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
- ![anonymous](blank.png) *Anonymous View, Clone & Push*
- ![push](lock_go_16x16.png) *Authenticated Push*
- ![clone](lock_pull_16x16.png) *Authenticated Clone & Push*
- ![view](shield_16x16.png) *Authenticated View, Clone & Push*
- ![freeze](cold_16x16.png) Freeze repository (i.e. deny push, make read-only)
- 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
- 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
- ![docs](book_16x16.png) Docs page which enumerates all Markdown files within a repository
- ![tickets](bug_16x16.png) Ticgit ticket pages *(based on last MIT release bf57b032 2009-01-27)*
### 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
- Git:Blit is an integrated, full-stack solution. There is no WAR build at this time.
### Todo List
- Manual certificate generation with BouncyCastle
- User list with edit and delete links
- Review spots where Git:Blit can cache data instead of abusing the disk
- stats
- users.properties access
- available repositories
- etc
- Download zip feature
- Site documentation
- 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 feature (waiting for the [JGit][jgit] team to do the hard part)
### License
TBD
### Inspirations
- [Gitweb](http://www.git-scm.com)
- [Fossil](http://www.fossil-scm.org)
## Architecture
![block diagram](architecture.png "Git Blit Architecture")
### Bundled Dependencies
The following dependencies are bundled with the Git:Blit 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)
- icons courtesy of [FatCow Hosting](http://www.fatcow.com/free-icons) (Creative Commons CC-BY)
- magnifying glass search icon courtesy of [Gnome](http://gnome.org) (Creative Commons CC-BY)
### Downloaded Dependencies
The following dependencies are automatically downloaded from the Apache Maven repository and from the Eclipse Maven repository when Git:Blit 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)
## Building
[Eclipse](http://eclipse.org) is recommended for development as the project settings are preconfigured.
1. Clone the git repository from [Github][gitbltsrc].
2. Import the gitblit project into your Eclipse workspace.
*There will be lots of build errors.*
3. Using Ant, execute the `build.xml` script in the project root.
*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.
Make sure you set an appropriate value for *git.repositoriesFolder*.
6. Execute the *com.gitblit.Launcher* class to start Git:Blit.
[jgit]: http://eclipse.org/jgit "Eclipse JGit Site"
[git]: http://git-scm.com "Official Git Site"
[gitbltsrc]: http://somewhere.com "gitblit git repository"