Paul Martin
2016-04-30 a502d96a860456ec5e8c96761db70f7cabb74751
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)
e2dfad 20 - [jQuery](https://jquery.org) (MIT)
JM 21 - [flotr2](http://humblesoftware.com/flotr2) (BSD)
85c2e6 22 - magnifying glass search icon courtesy of [Gnome](http://gnome.org) (Creative Commons CC-BY)
0cf876 23 - Git logo originally designed by [Jason Long](http://git-scm.com/downloads/logos)
85c2e6 24 - modified Git logo originally designed by [Henrik Nyh](http://henrik.nyh.se/2007/06/alternative-git-logo-and-favicon)
c721a5 25 - fork icon courtesy of [Ember.js](http://emberjs.com)
85c2e6 26 - other icons courtesy of [FatCow Hosting](http://www.fatcow.com/free-icons) (Creative Commons CC-BY)
JM 27
28 ### Downloaded Dependencies
29 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.
30
31 - [JGit][jgit] (EDL 1.0)
32 - [Wicket](http://wicket.apache.org) (Apache 2.0)
33 - [Jetty](http://eclipse.org/jetty) (Apache 2.0, EPL 1.0)
34 - [SLF4J](http://www.slf4j.org) (MIT/X11)
325310 35 - [Log4j](http://logging.apache.org/log4j) (Apache 2.0)
50380b 36 - [args4j](http://args4j.kohsuke.org) (Apache 2.0)
85c2e6 37 - [BouncyCastle](http://www.bouncycastle.org) (MIT/X11)
JM 38 - [JSch - Java Secure Channel](http://www.jcraft.com/jsch) (BSD)
39 - [Rome](http://rome.dev.java.net) (Apache 1.1)
40 - [jdom](http://www.jdom.org) (Apache-style JDOM license)
831469 41 - [google-gson](http://code.google.com/google-gson) (Apache 2.0)
JM 42 - [javamail](http://kenai.com/projects/javamail) (CDDL-1.0, BSD, GPL-2.0, GNU-Classpath)
fa54be 43 - [Groovy](http://groovy.codehaus.org) (Apache 2.0)
ff3f0e 44 - [Lucene](http://lucene.apache.org) (Apache 2.0)
f3b625 45 - [UnboundID](http://www.unboundid.com) (LGPL 2.1)
e4547f 46 - [Ivy](http://ant.apache.org/ivy) (Apache 2.0)
f09f24 47 - [JCalendar](http://www.toedter.com/en/jcalendar) (LGPL 2.1)
9e1aa2 48 - [Commons-Compress](http://commons.apache.org/compress) (Apache 2.0)
JM 49 - [XZ for Java](http://tukaani.org/xz/java.html) (Public Domain)
430496 50 - [FreeMarker](http://www.freemarker.org) (modified BSD)
73c76b 51 - [Waffle](http://dblock.github.io/waffle) (EPL 1.0)
JM 52 - [JNA](https://github.com/twall/jna) (LGPL 2.1)
53 - [Guava](https://code.google.com/p/guava-libraries) (Apache 2.0)
7ad6d3 54 - [libpam4j](https://github.com/kohsuke/libpam4j) (MIT)
a0c34e 55 - [commons-codec](http://commons.apache.org/proper/commons-codec) (Apache 2.0)
0365f6 56 - [pegdown](https://github.com/sirthias/pegdown) (Apache 2.0)
5e3521 57 - [jedis](https://github.com/xetorthio/jedis) (MIT)
8ec063 58 - [Mina SSHD](https://mina.apache.org) (Apache 2.0)
JM 59 - [pf4j](https://github.com/decebals/pf4j) (Apache 2.0)
e6ae53 60 - [google-guice](https://code.google.com/p/google-guice) (Apache 2.0)
85c2e6 61
JM 62 ### Other Build Dependencies
63 - [Fancybox image viewer](http://fancybox.net) (MIT and GPL dual-licensed)
64 - [JUnit](http://junit.org) (Common Public License)
f6b200 65 - [Moxie](http://moxie.gitblit.com) (Apache 2.0)
85c2e6 66
JM 67 ## Building from Source
68 [Eclipse](http://eclipse.org) is recommended for development as the project settings are preconfigured.
69
70 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.
71
72 1. Clone the git repository from [Github][gitbltsrc].
325310 73 2. Import the gitblit project into your Eclipse workspace.
85c2e6 74 *There will be lots of build errors.*
325310 75 3. Using Ant, execute the `build.xml` script in the project root.
85c2e6 76 *This will download all necessary build dependencies and will also generate the Keys class for accessing settings.*
JM 77 4. Select your gitblit project root and **Refresh** the project, this should correct all build problems.
325310 78 5. Using JUnit, execute the `com.gitblit.tests.GitBlitSuite` test suite.
85c2e6 79 *This will clone some repositories from the web and run through the unit tests.*
8c99a7 80 6. Execute the *com.gitblit.GitBlitServer* class to start Gitblit.
85c2e6 81
JM 82
83 ## Contributing
f6b200 84 Pull requests are preferred.  Patches are welcome.
85c2e6 85
JM 86 Contributions must be your own original work and must licensed under the [Apache License, Version 2.0][apachelicense], the same license used by Gitblit.
87
88 [jgit]: http://eclipse.org/jgit "Eclipse JGit Site"
89 [git]: http://git-scm.com "Official Git Site"
90 [gitbltsrc]: http://github.com/gitblit "gitblit git repository"
91 [googlecode]: http://code.google.com/p/gitblit "gitblit project management"
325310 92 [apachelicense]: http://www.apache.org/licenses/LICENSE-2.0 "Apache License, Version 2.0"