## 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.
This is to ensure authenticity of dependencies and to automate the setup of developer environments. ## Architecture ![block diagram](architecture.png "Gitblit Architecture") ### Bundled Dependencies The following dependencies are bundled with Gitblit. - [Bootstrap](http://twitter.github.com/bootstrap) (Apache 2.0) - [GLYPHICONS](http://glyphicons.com) (Creative Commons CC-BY) - [Iconic](http://somerandomdude.com/work/iconic) (Creative Commons Share Alike 3.0) - [AngularJS](http://angularjs.org) (MIT) - [clipboard.js](https://github.com/zenorocha/clipboard.js) (MIT) - [google-code-prettify](https://github.com/googlearchive/code-prettify) (Apache 2.0) - [Commons Daemon](http://commons.apache.org/daemon) (Apache 2.0) - [jQuery](https://jquery.org) (MIT) - [flotr2](http://humblesoftware.com/flotr2) (BSD) - magnifying glass search icon courtesy of [Gnome](http://gnome.org) (Creative Commons CC-BY) - Git logo originally designed by [Jason Long](http://git-scm.com/downloads/logos) - modified Git logo originally designed by [Henrik Nyh](http://henrik.nyh.se/2007/06/alternative-git-logo-and-favicon) - fork icon courtesy of [Ember.js](http://emberjs.com) - other icons courtesy of [FatCow Hosting](http://www.fatcow.com/free-icons) (Creative Commons CC-BY) - [JGit][jgit] (EDL 1.0) - [Wicket](http://wicket.apache.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) - [args4j](http://args4j.kohsuke.org) (Apache 2.0) - [BouncyCastle](http://www.bouncycastle.org) (MIT/X11) - [JSch - Java Secure Channel](http://www.jcraft.com/jsch) (BSD) - [Rome](http://rome.dev.java.net) (Apache 1.1) - [jdom](http://www.jdom.org) (Apache-style JDOM license) - [google-gson](https://github.com/google/gson) (Apache 2.0) - [javamail](http://kenai.com/projects/javamail) (CDDL-1.0, BSD, GPL-2.0, GNU-Classpath) - [Groovy](http://groovy.codehaus.org) (Apache 2.0) - [Lucene](http://lucene.apache.org) (Apache 2.0) - [UnboundID](http://www.unboundid.com) (LGPL 2.1) - [Ivy](http://ant.apache.org/ivy) (Apache 2.0) - [JCalendar](http://www.toedter.com/en/jcalendar) (LGPL 2.1) - [Commons-Compress](http://commons.apache.org/compress) (Apache 2.0) - [XZ for Java](http://tukaani.org/xz/java.html) (Public Domain) - [FreeMarker](http://www.freemarker.org) (modified BSD) - [Waffle](http://dblock.github.io/waffle) (EPL 1.0) - [JNA](https://github.com/twall/jna) (LGPL 2.1) - [Guava](https://github.com/google/guava) (Apache 2.0) - [libpam4j](https://github.com/kohsuke/libpam4j) (MIT) - [commons-codec](http://commons.apache.org/proper/commons-codec) (Apache 2.0) - [pegdown](https://github.com/sirthias/pegdown) (Apache 2.0) - [jedis](https://github.com/xetorthio/jedis) (MIT) - [Mina SSHD](https://mina.apache.org) (Apache 2.0) - [pf4j](https://github.com/decebals/pf4j) (Apache 2.0) - [google-guice](https://github.com/google/guice) (Apache 2.0) ### Other Build Dependencies - [Fancybox image viewer](http://fancybox.net) (MIT and GPL dual-licensed) - [JUnit](http://junit.org) (Common Public License) - [Moxie](http://moxie.gitblit.com) (Apache 2.0) ## Building from Source [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), [FindBugs](http://findbugs.sourceforge.net), and [EclEmma](http://www.eclemma.org) are recommended development tools. 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. Using JUnit, execute the `com.gitblit.tests.GitBlitSuite` test suite. *This will clone some repositories from the web and run through the unit tests.* 6. Execute the *com.gitblit.GitBlitServer* class to start Gitblit. ## Contributing Pull requests are preferred. Patches are welcome. Contributions must be your own original work and must licensed under the [Apache License, Version 2.0][apachelicense], the same license used by Gitblit. [jgit]: http://eclipse.org/jgit "Eclipse JGit Site" [git]: http://git-scm.com "Official Git Site" [gitbltsrc]: http://github.com/gitblit-org/gitblit "gitblit git repository" [apachelicense]: http://www.apache.org/licenses/LICENSE-2.0 "Apache License, Version 2.0"