Jeroen Baten
2013-01-04 4c44e5d31618ae009cfee040fb995b1c63701d93
docs/01_features.mkd
@@ -1,51 +1,41 @@
## Why Gitblit?
### Single-Stack Solution
*Gitblit GO* is an integrated, single-stack solution for serving and browsing Git repositories with a per-repository authentication and authorization mechanism.
You do not need Apache httpd, Perl, Git, Gitweb, or Gitolite.  Should you want to use some or all of those, you still can; Gitblit plays nice with the other kids on the block.  It should be noted that Gitblit does not currently offer fine-grained access controls like [Gitolite](http://sitaramc.github.com/gitolite).
*Gitblit WAR = Gitblit GO - integrated Jetty*
You provide the servlet container (e.g. Tomcat, Resin, etc) and deploy the WAR like any other webapp.  Gitblit WAR offers all the same capabilities as the GO integrated stack except as noted below.
### You decide how to use Gitblit
Gitblit can be used as a dumb repository viewer with no administrative controls or user accounts.
Gitblit can be used as a complete Git stack for cloning, pushing, and repository access control.
### Easy Web Management
Administrators can create and manage all repositories & user accounts from the *web UI*.
Administrators can create and manage all repositories & user accounts from the *JSON RPC interface* using the [Gitblit Manager](http://code.google.com/p/gitblit/downloads/detail?name=%MANAGER%) or your own custom tooling.
### Integration
Gitblit has a pluggable user service mechanism which allows you to implement your own authentication, authorization, and user management.
Gitblit offers RSS feeds, a JSON-based RPC mechanism, and a [Java Client API library](http://code.google.com/p/gitblit/downloads/detail?name=%API%) which allows you to integrate Gitblit into your systems.
### Backup Strategy
Gitblit includes a backup mechanism (*federation*) which can be used to backup repositories and, optionally, user accounts & server settings from your Gitblit instance to another Gitblit instance or to a [Gitblit Federation Client](http://code.google.com/p/gitblit/downloads/detail?name=%FEDCLIENT%).  Similarly, you can use the federation mechanism to aggregate individual workspace Gitblit instances to a common, centralized server.
## Standard Features (GO/WAR)
- JGit SmartHTTP servlet
- Browser and git client authentication
- Four *per-repository* access control configurations with a Read-Only control flag
- Four *per-repository* access restriction configurations with a Read-Only control 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)
- Six *per-user/team* repository access permissions
    - **V** (view in web ui, RSS feeds, download zip)
    - **R** (clone)
    - **RW** (clone and push)
    - **RWC** (clone and push with ref creation)
    - **RWD** (clone and push with ref creation, deletion)
    - **RW+** (clone and push with ref creation, deletion, rewind)
- Optional feature to allow users to create personal repositories
- Optional feature to fork a repository to a personal repository
- Optional feature to create a repository on push
- *Experimental* built-in Garbage Collection
- Ability to federate with one or more other Gitblit instances
- RSS/JSON RPC interface
- Java/Swing Gitblit Manager tool 
- Gitweb inspired web UI
- Responsive web UI that subtracts elements to be usable on phones, tablets, and desktop browsers
- Groovy pre- and post- push hook scripts, per-repository or globally for all repositories
- Email push notifications *(via sendmail.groovy push script)*
- Lucene indexing of specified repository branches
- Administrators may create, edit, rename, or delete repositories through the web UI or RPC interface
- Administrators may create, edit, rename, or delete users through the web UI or RPC interface
- Administrators may create, edit, rename, or delete teams through the web UI or RPC interface
- Repository Owners may edit repositories through the web UI
- Administrators and Repository Owners may set the default branch through the web UI or RPC interface
- LDAP authentication and optional LDAP-controlled Team memberships
- Gravatar integration
- Git-notes display support
- Submodule support
- gh-pages display support (Jekyll is not supported)
- Branch metrics (uses Google Charts)
- HEAD and Branch RSS feeds
- Blame annotations view
@@ -59,25 +49,25 @@
- Single text file for users configuration
- 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)*
    - ![tickets](bug_16x16.png) **readonly** Ticgit ticket pages *(based on last MIT release bf57b032 2009-01-27)*
- Translations
    - English
    - Japanese
    - Spanish
    - Polish
    - Korean
   - Brazilian Portuguese
## Gitblit GO Features
- Out-of-the-box integrated stack requiring minimal configuration
- Automatically generates a self-signed certificate for *localhost* https communications
    (includes script to generate a self-signed certificate for *your hostname*, see [setup](/setup.html) for details)
- Automatic generation of ssl certificate for https communications
- Integrated GUI tool to facilitate x509 PKI including ssl and client certificate generation, client certificate revocation, and client certificate distribution
- Single text file for configuring server and gitblit
- A Windows service installation script and configuration tool
- Built-in AJP connector for Apache httpd
## Limitations
- HTTP/HTTPS are the only supported Git protocols
- Access controls are not path-based, they are repository-based
- Only Administrators can create, rename or delete repositories
- Only Administrators can create, modify or delete users
- Commit hooks are not supported
- Native Git may be needed to periodically run git-gc as [JGit][jgit] does not fully support the git-gc featureset.
- Built-in access controls are not path-based, they are repository-based.
### Caveats
- Gitblit may eat your data.  Use at your own risk.
- Gitblit may have security holes.  Patches welcome.  :)
[jgit]: http://eclipse.org/jgit "Eclipse JGit Site"
[jgit]: http://eclipse.org/jgit "Eclipse JGit Site"