James Moger
2013-12-09 5e3521f8496511db4df45f011ea72f25623ad90f
commit | author | age
85c2e6 1 ## Design Principles
JM 2 1. [Keep It Simple, Stupid](http://en.wikipedia.org/wiki/KISS_principle)
3 2. Offer useful features for serving Git repositories.  If feature is complex, refer to #1.
325310 4 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 automate the setup of developer environments.
85c2e6 5
JM 6 ## Architecture
7
8 ![block diagram](architecture.png "Gitblit Architecture")
9
10 ### Bundled Dependencies
11 The following dependencies are bundled with Gitblit.
12
8c5d72 13 - [Bootstrap](http://twitter.github.com/bootstrap) (Apache 2.0)
3cc6e2 14 - [GLYPHICONS](http://glyphicons.com) (Creative Commons CC-BY)
325310 15 - [Iconic](http://somerandomdude.com/work/iconic) (Creative Commons Share Alike 3.0)
cf17b2 16 - [AngularJS](http://angularjs.org) (MIT)
3b6904 17 - [Clippy](https://github.com/mojombo/clippy) (MIT)
85c2e6 18 - [google-code-prettify](http://code.google.com/p/google-code-prettify) (Apache 2.0)
d39680 19 - [Commons Daemon](http://commons.apache.org/daemon) (Apache 2.0)
85c2e6 20 - magnifying glass search icon courtesy of [Gnome](http://gnome.org) (Creative Commons CC-BY)
0cf876 21 - Git logo originally designed by [Jason Long](http://git-scm.com/downloads/logos)
85c2e6 22 - modified Git logo originally designed by [Henrik Nyh](http://henrik.nyh.se/2007/06/alternative-git-logo-and-favicon)
c721a5 23 - fork icon courtesy of [Ember.js](http://emberjs.com)
85c2e6 24 - other icons courtesy of [FatCow Hosting](http://www.fatcow.com/free-icons) (Creative Commons CC-BY)
JM 25
26 ### Downloaded Dependencies
27 The following dependencies are automatically downloaded by Gitblit GO (or already bundled with the WAR) from the Apache Maven repository and from the Eclipse Maven repository when Gitblit is launched for the first time.
28
29 - [JGit][jgit] (EDL 1.0)
30 - [Wicket](http://wicket.apache.org) (Apache 2.0)
31 - [WicketStuff GoogleCharts](https://github.com/wicketstuff/core/wiki/GoogleCharts) (Apache 2.0)
32 - [Jetty](http://eclipse.org/jetty) (Apache 2.0, EPL 1.0)
33 - [SLF4J](http://www.slf4j.org) (MIT/X11)
325310 34 - [Log4j](http://logging.apache.org/log4j) (Apache 2.0)
85c2e6 35 - [JCommander](http://jcommander.org) (Apache 2.0)
JM 36 - [BouncyCastle](http://www.bouncycastle.org) (MIT/X11)
37 - [JSch - Java Secure Channel](http://www.jcraft.com/jsch) (BSD)
38 - [Rome](http://rome.dev.java.net) (Apache 1.1)
39 - [jdom](http://www.jdom.org) (Apache-style JDOM license)
831469 40 - [google-gson](http://code.google.com/google-gson) (Apache 2.0)
JM 41 - [javamail](http://kenai.com/projects/javamail) (CDDL-1.0, BSD, GPL-2.0, GNU-Classpath)
fa54be 42 - [Groovy](http://groovy.codehaus.org) (Apache 2.0)
ff3f0e 43 - [Lucene](http://lucene.apache.org) (Apache 2.0)
f3b625 44 - [UnboundID](http://www.unboundid.com) (LGPL 2.1)
e4547f 45 - [Ivy](http://ant.apache.org/ivy) (Apache 2.0)
f09f24 46 - [JCalendar](http://www.toedter.com/en/jcalendar) (LGPL 2.1)
9e1aa2 47 - [Commons-Compress](http://commons.apache.org/compress) (Apache 2.0)
JM 48 - [XZ for Java](http://tukaani.org/xz/java.html) (Public Domain)
430496 49 - [FreeMarker](http://www.freemarker.org) (modified BSD)
73c76b 50 - [Waffle](http://dblock.github.io/waffle) (EPL 1.0)
JM 51 - [JNA](https://github.com/twall/jna) (LGPL 2.1)
52 - [Guava](https://code.google.com/p/guava-libraries) (Apache 2.0)
7ad6d3 53 - [libpam4j](https://github.com/kohsuke/libpam4j) (MIT)
a0c34e 54 - [commons-codec](http://commons.apache.org/proper/commons-codec) (Apache 2.0)
0365f6 55 - [pegdown](https://github.com/sirthias/pegdown) (Apache 2.0)
5e3521 56 - [jedis](https://github.com/xetorthio/jedis) (MIT)
85c2e6 57
JM 58 ### Other Build Dependencies
59 - [Fancybox image viewer](http://fancybox.net) (MIT and GPL dual-licensed)
60 - [JUnit](http://junit.org) (Common Public License)
f6b200 61 - [Moxie](http://moxie.gitblit.com) (Apache 2.0)
85c2e6 62
JM 63 ## Building from Source
64 [Eclipse](http://eclipse.org) is recommended for development as the project settings are preconfigured.
65
66 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.
67
68 1. Clone the git repository from [Github][gitbltsrc].
325310 69 2. Import the gitblit project into your Eclipse workspace.
85c2e6 70 *There will be lots of build errors.*
325310 71 3. Using Ant, execute the `build.xml` script in the project root.
85c2e6 72 *This will download all necessary build dependencies and will also generate the Keys class for accessing settings.*
JM 73 4. Select your gitblit project root and **Refresh** the project, this should correct all build problems.
325310 74 5. Using JUnit, execute the `com.gitblit.tests.GitBlitSuite` test suite.
85c2e6 75 *This will clone some repositories from the web and run through the unit tests.*
8c99a7 76 6. Execute the *com.gitblit.GitBlitServer* class to start Gitblit.
85c2e6 77
JM 78
79 ## Contributing
f6b200 80 Pull requests are preferred.  Patches are welcome.
85c2e6 81
JM 82 Contributions must be your own original work and must licensed under the [Apache License, Version 2.0][apachelicense], the same license used by Gitblit.
83
84 [jgit]: http://eclipse.org/jgit "Eclipse JGit Site"
85 [git]: http://git-scm.com "Official Git Site"
86 [gitbltsrc]: http://github.com/gitblit "gitblit git repository"
87 [googlecode]: http://code.google.com/p/gitblit "gitblit project management"
325310 88 [apachelicense]: http://www.apache.org/licenses/LICENSE-2.0 "Apache License, Version 2.0"