#
# ${project.version} release
#
r27: {
    title: ${project.name} ${project.version} released
    id: ${project.version}
    date: ${project.buildDate}
    note: ~
    html: ~
    text: ''
          The new gitblit.properties file "includes" defaults.properties which is the original
          gitblit.properties file. You may continue using your existing gitblit.properties file
          as before, however, you might find future upgrades simpler by adopting the new "include"
          design.
          ''
    security: ~
    fixes:
    - Fix exception when viewing a ticket with a patchset where the integration branch does not exist (issue-521, ticket-212)
    - Fix exception when deleting a repository using the FileTicketService (issue-522, ticket-213)
    - Do not inject team repository permissions as explicit user permissoins when editing a user (issue-462, ticket-214)
    - Whitelist the target link attribute in the XSS filter (ticket-216)
    changes:
    - Replaced Dagger with Guice (ticket-80)
    - Use release name as root directory in Gitblit GO artifacts (ticket-109)
    - Split gitblit.properties into gitblit.properties & defaults.properties (ticket-110)
    - Show team type in teams page (pr-217, ticket-168)
    additions:
    - Add GitHub Octicons (ticket-106)
    - Support for chain-loading properties files (ticket-110) 
    - Add Priority & Severity fields for tickets (pr-220, ticket-157)
    - Add Maintenance ticket type (pr-223, ticket-206)    
    dependencyChanges:
    - Guice 4.0-beta5 (ticket-80, ticket-219)
    - SLF4j 1.7.7 (ticket-122)
    - gson 2.2.2 (ticket-123)
    - Freemarker 2.3.20 (ticket-124)
    - Lucene 4.10.0 (ticket-159)
    - SSHD 0.13.0 (ticket-218)
    settings:
    - { name: web.displayUserPanel, defaultValue: 'true' }
    contributors:
    - James Moger
    - David Ostrovsky
    - Alex Lewis
    - Florian Zschocke
    - Paul Martin
    - razzard
    - Alexander Zabluda
}

#
# 1.6.2 release
#
r26: {
    title: Gitblit 1.6.2 released
    id: 1.6.2
    date: 2014-10-28
    note: ~
    html: ~
    text: ~
    security: ~
    fixes:
    - Fix French translation (pr-224, ticket-210)
    - Fix raw servlet trashing paths with spaces (ticket-211)
    - Fix PluginManager not properly respecting --noverify (ticket-209)
    changes: ~
    additions: ~
    dependencyChanges: ~
    contributors:
    - Pierre Templier
    - Barry Roberts 
    - Jan Šmucr
}

#
# 1.6.1 release
#
r25: {
    title: Gitblit 1.6.1 released
    id: 1.6.1
    date: 2014-10-20
    note: ''
          The next major release (v1.7.0) will focus on:
          * ticket-75: making projects more useful including the concept of project ownership
          
          This improvement will require a NON-BACKWARDS-COMPATIBLE migration of repository ownership from the RpeositoryModel to the UserModel
          
          * ticket-55: facilitating usage of tickets & git-flow in the web ui
          ''
    html: ~
    text: ''
          Highlights:
          
          * Dependency updates
          * Many bug fixes
          * GITBLIT_HOME environment variable support
          ''
    security:
    - Sanitize page parameters, form fields, and markup for XSS vulnerabilities (issue-496, ticket-164)
    - Fix flash security risk (issue-498, ticket-165)
    - Fix XRF vulnerability (issue-500, ticket-166)
    - Prohibit new forks from inadvertently disclosing view-restricted contents (issue-495, ticket-167)
    - Restrict Gitblit's cookie to the context path (issue-507, ticket-187)
    fixes:
    - Fix NPE when two repository names differ only in case (pr-204, ticket-108)
    - Fix API documentation links (issue-449, ticket-111)
    - Fix internal error when specifying a blob url without a path (ticket-113)
    - Fix milestone queries for hyphentated names (ticket-115)
    - Fix duplicate repositories on dashboards (issue-454, ticket-117)
    - Fix lower-case project names in RepositoryNamePanel (issue-509, ticket-118)
    - Fix ticket notifications not sent when author doesn't have an email address (issue-423, ticket-132)
    - Fix regression in create-ticket-on-push & clarify reported explanation (ticket-135)
    - Fix redirects after ajax form submissions with Tomcat (issue-455, ticket-136)
    - Fix potential NPE in Raw servlet (ticket-137)
    - Fix Raw link path generation that does not respect web.forwardSlashCharacter (ticket-139)
    - Do not log query parameter passwords when Redmine authentication fails (pr-215, ticket-466)
    - Fix NPE in RepositoryNamePanel for anonymous admins (issue-490, ticket-147)
    - Fix repo creation with initial commit when the creator does not have an email address (issue-458, ticket-149)
    - Fix Edit Repository page missing owners from owners list (issue-480, ticket-150)
    - Fix NPEs when handling tickets with non-existent milestones (ticket-152)
    - Quote all Lucene query args that have non-alphanumberic characters (issue-483, issue-469, ticket-153)
    - Fix 0-length files from raw servlet when file does not exist (issue-489, ticket-154)
    - Fix raw servlet failures with long project names (issue-478, ticket-163)
    - New ticket responsible selections are missing users with RW access (issue-476, ticket-170)
    - Fix NPE in TicketListPanel due to missing repository (issue-451, ticket-171)
    - Fix MigrateTickets failure for view-restricted repositories (issue-475, ticket-173)
    - Fix repository deletion bug where the Lucene ticket index was not purged (issue-468, ticket-174)
    - Fix Jenkins post-receive script repository url (pr-219, ticket-175)
    - Fix potential NPE in retrieving a ticket comment (issue-503, ticket-179)
    - Fix bug in migrating tickets to the BranchTicketService (issue-474, ticket-183)
    - Fix failure to clear/delete a ticket topic and description (issue-505, ticket-188)
    - Fix cropped ticket status indicators (ticket-197)
    - Fix bug in raw servlet extracting repository out of the path (pr-222, ticket-203)
    - Improve relative path determiniation using Java 7 Paths (issue-511, ticket-204)
    changes:
    - Remove git.streamFileThreshold setting and documentation (ticket-119)    
    - Update Korean translation (pr-206, ticket-120)
    - Add additional documentation for web.canonicalUrl (pr-205, issue-453, ticket-121)
    - Remove Wicket references from non-Wicket packages (ticket-129)
    - LDAP user accounts now clear email address when unset in LDAP (issue-456, ticket-134)
    - Update French translation (pr-210, ticket-140)
    - Update authentication documentation (pr-213, ticket-142)
    - Pretty print Perl modules (pr-216, ticket-144)
    - Pretty print C/C++ headers (pr-207, ticket-145)
    - Do not stamp raw servlet responses with cache-control headers (issue-489, ticket-148)
    - Treat UTF-9 and UTF-18 (both fake encodings) as UTF-8 (issue-486, ticket-151)
    - Allow Lucene indexing period to be configurable (ticket-161)
    - Do not display stacktraces for bad requests in servlets (issue-497, ticket-169)
    - Preserve branch ref in commits, tree, and docs navbar links (issue-501, ticket-176)
    - Disable Edit User Page permission checkboxes if admin/fork/create permission is inherited (issue-196, ticket-177)
    - Explicitly declare page subclasses that reference commits (issue-503, ticket-180)
    - Explicitly attempt to register BouncyCastle as a JCE provider (ticket-194)
    - Treat .ico and .jpeg files as images (pr-221, ticket-202)
    additions:
    - Add support for GITBLIT_HOME as a -D system property (pr-212, ticket-141, ticket-185)
    - Add support for GITBLIT_HOME as an environment variable (ticket-193)
    - Add install script for Fedora (pr-207, ticket-146)
    - Add NO CHANGE REQUIRED ticket status (ticket-182)
    dependencyChanges:
    - JGit 3.5.1
    - Jetty 9.2.3
    - SSHD 0.12.0
    contributors:
    - Sascha Vogt
    - Ron Smits
    - Eric Fairon
    - Johnny Hughes
    - Revi
    - Kyle Gottfried
    - Berke Viktor
    - David Ostrovsky
    - Romain Gagnaire
    - Koen Serry
    - Anthony O.
    - mereth
    - Michael Legart
    - Soeren Grunewald
    - Simon Santoro
    - fgeorges
    - robindengen
    - Robert M. Roberson Jr.
    - 1988porsche944
    - Steffen Gebert
    - gibwar
    - gato84b
    - jakob@jboysen
    - ThanksForAllTheFish
    - Stephan Krull
    - jliedy
    - Michael Glauche
}

#
# 1.6.0 release
#
r24: {
    title: Gitblit 1.6.0 released
    id: 1.6.0
    date: 2014-06-16
    note: ''
          The next major release (v1.7.0) will focus on:
          * ticket-75: making projects more useful including the concept of project ownership
          
          This improvement will require a NON-BACKWARDS-COMPATIBLE migration of repository ownership from the RpeositoryModel to the UserModel
          
          * ticket-55: facilitating usage of tickets & git-flow in the web ui
          ''
    html: ~
    text: ''
          Highlights:
          
          * My Tickets page
          * User Preferences web ui
          * SSH key management web ui
          * Basic CRUD pages for ticket milestones
          * Overhaul repository creation, editing, and empty repository pages
          
          If you are upgrading, you might consider copying the data/gitignore folder to your ${baseFolder} to allow selection & injection of a .gitignore when creating a repository.
          
          The OpenShift Express build has been dropped. You can deploy GO or WAR on Express so this build is no longer necessary.
          ''
    security: ~
    fixes:
    - Allow ticket responsible selection if anonymous push is enabled (issue-425, ticket-71)
    - Fix failure to generate SSH server keys on ARM (issue-426, ticket-70)
    - Fix flotr2 chart generation failure if a label contained a single-quote (ticket-77)
    - Fix repository cache refresh after ref deletion/addition (issue-433, ticket-82)
    - Fixed cache miss on repository model retrieval (pr-185, ticket-83)
    - Fixed GitBlit static singleton reference in localclone.groovy (issue-436, ticket-84)
    - Removed Ticket responsible team permission exclusion (ticket-87)
    - Fixed SSH daemon thread exhaustion (ticket-89)
    - Fixed Ticket responsible selections not considering the AUTHENTICATED authorization control (ticket-91)
    - Fixed invalid generated SSH url for port 22 (issue-444, ticket-98)
    - Fix cloning repositories with `+` in their names. (revert pr-136, issue-362, ticket-100)
    - Fixed NPE in GitblitClient (ticket-102)
    changes:
    - Split the pages servlet into a raw servlet and a pages servlet. All raw links now use the raw servlet (issue-413, ticket-49)
    - Drop deprecated --set-upstream syntax for -u (ticket-59)
    - BARNUM: Prune deleted branches on fetch (git fetch -p) (ticket-60)
    - BARNUM: Create ticket/N instead of topic/N for pt start N (ticket-61)
    - Move repository deletion functions to the edit repository page AND allow deletion to be disabled (pr-180, ticket-67)
    - Update the Korean translation (pr-184, ticket-69)
    - Update the Dutch translation (pr-191)
    - Overhaul the EmptyRepositoryPage (ticket-73)
    - Overhauled the edit repository page (ticket-76)
    - Process bugtraq links in the ticket description and comments (ticket-78)
    - Exclude personal repositories from the repositories list, by default (issue-419, ticket-95)
    additions:
    - Add My Tickets page (issue-215, ticket-15)
    - Added CRUD functionality for Ticket Milestones (ticket-17)
    - Implemented Ticket migration tool to move between backends (ticket-19)
    - Added extension points for top nav links, root-level pages, repository nav links, user menu links, and http request filters (ticket-23)
    - Added an editor panel in the user profile page to manipulate preferences (issue-108, issue-424, ticket-64)
    - Added an editor panel in the user profile page to manipulate public SSH keys (ticket-64)
    - Add FORK_REPOSITORY RPC request type (issue-371, pr-161, ticket-65)
    - Add object type (ot) parameter for RSS queries to retrieve tag details (pr-165, ticket-66)
    - Add setting to allow STARTTLS without requiring SMTPS (pr-183)
    - Simplified repository creation, offer simple README generation, and insertion of a pre-defined .gitignore file (ticket-76)
    - Added an extension point for monitoring onStartup and onShutdown (ticket-79)
    - Tag server-side merges when incremental push tags are enabled (issue-432, ticket-85)
    - Add a user preference for the clone transport (ticket-90)
    - Add setting to control default thread pool size for miscellaneous background tasks (ticket-92)
    - Add Norwegian transation (pr-186)
    - Add German translation (pr-192)
    - Add Italian translation (pr-196)
    dependencyChanges:
    - Update to javax.mail 1.5.1 (issue-417, ticket-58)
    contributors:
    - James Moger
    - David Ostrovsky
    - Manisha Gayathri
    - Gerard Smyth
    - Christian Buisson
    - Berke Viktor
    - Marcus Hunger
    - Matthias Cullmann
    - Emmeran Seehuber
    - Sascha Vogt
    - Carsten Lenz
    - Matthias Sohn
    - Leif Jantzen
    - Stardrad Yin
    - Jeroen Baten
    - Dongsu Kim
    - Karanbir Singh
    - Tamás Papp
    - GianMaria Romanato
    settings:
    - { name: 'web.allowDeletingNonEmptyRepositories', defaultValue: 'true' }
    - { name: 'web.includePersonalRepositories', defaultValue: 'false' }
    - { name: 'mail.starttls', defaultValue: 'false' }
    - { name: 'execution.defaultThreadPoolSize', defaultValue: '1' }
    - { name: 'git.gitignoreFolder', defaultValue: '${baseFolder}/gitignore' }
}

#
# 1.5.1 release
#
r23: {
    title: Gitblit 1.5.1 released
    id: 1.5.1
    date: 2014-05-07
    note: ~
    html: ~
    text: ~
    security: ~
    fixes:
    - Fix subdirectory links in pages servlet (issue-411)
    - Fix subdirectory navigation in pages servlet (issue-412)
    - Fix bug in adding invalid or empty SSH keys (ticket-50)
    - Fix forcing default locale to en or LANG_CC for web ui (ticket-51)
    - Fix inconsistency with repository ownership permission checking (ticket-52)
    - Prevent submission from New|Edit ticket page with empty titles (ticket-53)
    - Ensure the repository model ref list is refreshed on ref creation or deletion (ticket-54)
    - Fix case-sensitivity error in determining fork network (issue-420, ticket-62)
    - Fix transport determination for SSH urls served on port 22 (issue-421, ticket-63)
    changes:
    - improve French translation (pr-176)
    - simplify current plugin release detection and ignore the currentRelease registry field
    - split pages servlet into two servlets (issue-413)
    additions: ~
    dependencyChanges:
    - update to Apache MINA/SSHD 0.11.0 (issue-410)
    - added Apache Tiki 1.5 (issue-413)
    contributors:
    - James Moger
    - Julien Kirch
    - Ralph Hoffman
    - Olivier Rouits
    - Owen Nelson
    - Alexander Zabluda
    - Philipp Beckmann
    - Jakob Boysen
}

#
# 1.5.0 release
#
r22: {
    title: Gitblit 1.5.0 released
    id: 1.5.0
    date: 2014-04-17
    note: Gitblit now requires Java 7 for build & runtime.
    html: ~
    text: ''
          MAJOR Release.

          * Integrated SSH daemon based on Apache Mina/SSHD and Gerrit
          * Basic plugin management framework and plugin registry, limited extension points
          * Replace GoogleCharts with a self-hosted copy of the flotr2 charting library
          * Move to Java 7, some dependencies require this
          * Move to Jetty 9, dropped AJP feature because it was removed upstream
          ''
    security: ~
    fixes:
    - Repository mailing lists could not be reset from the Edit Repository page (issue-399)
    - Fix intermittent NPE in determining commit date in RefModel (issue-401)
    - Fix closing ticket on push by parsing commit messages for closes|fixes (issue-404)
    - Fix diffstat display for a ticket with a pending submodule change (issue-407)
    - Ensure the Lucene ticket index is updated on repository deletion.
    - Fixed failure to properly determine hasTicket in RedisTicketService
    - Fixed handling of pushing ticket branch deletions
    changes:
    - Switch from GoogleCharts to self-hosted flotr2 charts (issue-283, ticket-43, pr-166)
    - Specify the --dailyLogFile option for the Ubuntu and CentOS service scripts (issue-348)
    - Improve logging for missing LDAP uid attribute when synchronizing (issue-394)
    - The ticket close-on-push commit message regular expression is now configurable by a setting (issue-404)
    - Redirect to summary page on edit repository (issue-405)
    - Option to allow LDAP users to directly authenticate without performing LDAP searches (pr-162)
    - Replace JCommander with args4j to be consistent with other tools (ticket-28)
    - Sort repository urls by descending permissions and by transport security within equal permissions
    - Move to Java 7 & updated to Jetty 9.1.4
    - dropped AJP support because it has been removed from upstream Jetty
    - dropped settings: server.useNio, server.ajpPort, server.ajpBindInterface
    - dropped GO parameters: --ajpPort, --useNio
    additions:
    - Added an SSH daemon with public key authentication (issue-369, ticket-6)
    - Added beginnings of a plugin framework for extending Gitblit (issue-381, ticket-23)
    - Added a French translation (pr-163)
    - Added a setting to control what transports may be used for pushes
    - Expose JGit 3.x receive pack settings (issue-408)
    dependencyChanges:
    - Java 7
    - Jetty 9.1.4
    - args4j 2.0.26
    - JGit 3.3.1
    - Mina SSHD 0.10.1
    - pf4j 0.8.0
    - SLF4J 1.7.5
    contributors:
    - James Moger
    - David Ostrovsky
    - Johann Ollivier-Lapeyre
    - Jeremie Brebec
    - Tim Ryan
    - Decebal Suiu
    - Eric Myrhe
    - Kevin Walter
    settings:
    - { name: 'realm.ldap.bindpattern', defaultValue: ' ' }
    - { name: 'tickets.closeOnPushCommitMessageRegex', defaultValue: '(?:fixes|closes)[\\s-]+#?(\\d+)' }
    - { name: 'git.acceptedPushTransports', defaultValue: ' ' }
    - { name: 'git.checkReceivedObjects', defaultValue: 'true' }
    - { name: 'git.checkReferencedObjectsAreReachable', defaultValue: 'true' }
    - { name: 'git.maxObjectSizeLimit', defaultValue: '0' }
    - { name: 'git.maxPackSizeLimit', defaultValue: '-1' }
    - { name: 'git.sshPort', defaultValue: '29418' }
    - { name: 'git.sshBindInterface', defaultValue: ' ' }
    - { name: 'git.sshKeysManager', defaultValue: 'com.gitblit.transport.ssh.FileKeyManager' }
    - { name: 'git.sshKeysFolder', defaultValue: '${baseFolder}/ssh' }
    - { name: 'git.sshBackend', defaultValue: 'NIO2' }
    - { name: 'git.sshCommandStartThreads', defaultValue: '2' }
    - { name: 'plugins.folder', defaultValue: '${baseFolder}/plugins' }
    - { name: 'plugins.registry', defaultValue: 'http://plugins.gitblit.com/plugins.json' }
}

#
# 1.4.1 release
#
r21: {
    title: Gitblit 1.4.1 released
    id: 1.4.1
    date: 2014-03-18
    note: "The default access restriction has been elevated from NONE to PUSH and anonymous push access has been disabled by default."
    html: ~
    text: ''
          !! IMPORTANT BUG FIX FOR EXTERNAL AUTHENTICATION (1.4.1) !!
          
          This is a MAJOR release (1.4.0).
          
          The entire core has been refactored to be more modular.  Authentication providers have all been refactored to be simpler.  Both of these were precursor requirements for landing the Tickets feature -- issue tracker & branch-based pull requests.
          
          Markup rendering has been improved and expanded to several additional formats.  A repository mirroring service  has been added to allow you to automatically track public repositories.  Commit pages now indicate diffstat information and many bug fixes and smaller features have been introduced.
          
          The groundwork has also been laid for SSH support which will be in the focal point for the next major release (ticket-6).
          
          Due to the enormity of these changes, please make a backup copy of users.conf before updating.''
    security:
    - Fix major authentication security hole when using external authentication providers (issue-387, ticket-35)
    fixes:
    - Fixed incorrect branch ref in Ticket page for symlinks (issue-383, ticket-32)
    - Fix NPE in FileTicketService (issue-386, ticket-34)
    - Watch list push parameters were now always honored (ticket-30)
    - Watch list push parameters were not always validated (ticket-29)
    - Truncated tag messages in the tag panel did not have proper tooltips (ticket-31)
    - Fix merging GO runtime settings with command-line override settings (ticket-33)
    - Fix ticket page IOBE on Ticket page when Gitblit is not serving repositories (ticket-27)
    - Exclude ticket branches when forking a repository (ticket-26)
    - Workaround pegdown bug and improve relative image path processing (ticket-24)
    - Disable Ticket review functions in read-only repositories (mirror, frozen, etc)
    - Fix incorrect git fetch instructions in Ticket email notifications
    - Fix Ticket email notification recipients to include repository owners
    - Fix Ticket propose instructions to branch from origin/{integrationBranch}
    changes:
    - Add closed status for milestones and abandoned status for tickets (ticket-25)
    additions: ~
    dependencyChanges: ~
    contributors:
    - James Moger
    - David Ostrovsky
    - Liyu Wang
}

#
# 1.4.0 release
#
r20: {
    title: Gitblit 1.4.0 released
    id: 1.4.0
    date: 2014-03-09
    note: "The default access restriction has been elevated from NONE to PUSH and anonymous push access has been disabled by default."
    html: ~
    text: ''
          This is a MAJOR release.
          
          The entire core has been refactored to be more modular.  Authentication providers have all been refactored to be simpler.  Both of these were precursor requirements for landing the Tickets feature -- issue tracker & branch-based pull requests.
          
          Markup rendering has been improved and expanded to several additional formats.  A repository mirroring service  has been added to allow you to automatically track public repositories.  Commit pages now indicate diffstat information and many bug fixes and smaller features have been introduced.
          
          The groundwork has also been laid for SSH support which will be in the focal point for the next major release (ticket-6).
          
          Due to the enormity of these changes, please make a backup copy of users.conf before updating.''
    security:
	- issue-361: Cookies were not reset on administrative password change of a user account. This allowed accounts with changed passwords to continue authenticating. Cookies are now reset on password changes, they are validated on each page request, AND they will now expire 7 days after generation.
    fixes:
	- Fixed incorrect tagger attribution in the dashboard (issue-276)
	- Fixed support for implied SSH urls in web.otherUrls (issue-311)
	- Fixed injection of unnecessary explicit CLONE permissions for a fork when users or teams already had implied regex permissions (issue-320)
	- Bind LDAP connection after establishing TLS initialization (issue-343)
	- Fixed NPE when attempting to add a permission without a registrant (issue-344)
	- Invalidate all cached repository data on "clear cache" (issue-346)
	- Fix chart failures when an apostrophe is in a user display name (issue-350, pr-128)
	- Fix exception in create repository when not selecting a garbage collection period (issue-366)
	- Stop setting admin permission based on undocumented Redmine REST API behavior (issue-368)
	- Fix compage page failure when a submodule is changed in the commit range (issue-375)
	- Fix support url decoding with non-ascii characters (pr-136)
	- Fix potential NPE on removing uncached repository from cache
	- Ignore the default contents of .git/description file
	- Fix error on generating activity page when there is no activity
	- Fix raw page content type of binaries when running behind a reverse proxy
	- Fix author search links from compare pages
    changes:
	- Gitblit now rejects pushes to identified mirror repositories (issue-5)
	- Personal repository prefix (~) is now configurable (issue-265)
	- Refactored user services and separated authentication into providers (issue-281)
	- Reversed line links in blob view (issue-309)
	- Dashboard and Activity pages now obey the web.generateActivityGraph setting (issue-310)
	- Do not log passwords on failed authentication attempts (issue-316)
	- LDAP synchronization is now scheduled rather than on-demand (issue-336)
	- Show displayname and username in palettes (issue-364)
	- Updated default binary and Lucene ignore extensions
	- Change the WAR baseFolder context parameter to a JNDI env-entry to improve enterprise deployments
	- Removed internal Gitblit ref exclusions in the upload pack
	- Removed "show readme" setting in favor of automatic detection
	- README files are not shown on the summary page by default, this can be restored with web.summaryShowReadme
	- Support plain text, markdown, confluence, mediawiki, textile, tracwiki, or twiki "readme" files
	- Determine best commit id (e.g. "master") for the tree and docs pages and use that in links
	- By default GO will now bind to all interfaces for both http and https connectors.  This simplifies setup for first-time users.	
	- Removed docs indicator on the repositories page
	- Removed the repository setting to enable Markdown document enumeration, this is now automatic and expanded
	- Retrieve LDAP groups with dereferencing aliases (pr-122)
	- Revised committer verification to require a matching displayname or account name AND the email address
	- Serve repositories on both /r and /git, displaying /r because it is shorter
	- Eliminate HEAD from the blob, blame, and tree pages. That assumed a resource was available in HEAD and it may not be.
	- Eliminate Gravatar profile linking.
	- Moved Gitblit reflog from refs/gitblit/reflog to refs/meta/gitblit/reflog
	- Updated Spanish translation
	- Updated Simplified Chinese translation
	- Updated Dutch translation
	- Updated Korean translation
    additions:
	- Added color modes for the blame page (issue-2)
	- Added an optional MirrorService which will periodically fetch ref updates from source repositories for mirrors (issue-5).  Repositories must be manually cloned using native git and "--mirror".
	- Added branch graph image servlet based on EGit's branch graph renderer (issue-194)
	- Added option to render Markdown commit messages (issue-203)
	- Added Ticket tracker and Patchset collaboration feature (issue-215) 
	- Added setting to control creating a repository as --shared on Unix servers (issue-263)
	- Set Link: <url>; rel="canonical" http header for SEO (issue-304)
	- Added raw links to the commit, commitdiff, and compare pages (issue-319)
	- Support intradocument linking in Markdown content using [[WikiLinks]] syntax (issue-324)
	- Support Markdown image links relative to the repository root (issue-324)
	- Added filesystem write permission check (issue-345)
	- Added GO launch parameter for redirecting logging to a rolling, daily log file (issue-348)
	- Added settings to Windows authentication provider to permit/prohibit BUILTIN\Administrators from being Gitblit Admins (issue-354)
	- Added canonical url setting for email notifications and web display
	- Support rendering confluence, mediawiki, textile, tracwiki, and twiki markup documents
	- Added setting to globally disable anonymous pushes in the receive pack
	- Added a normalized diffstat display to the commit, commitdiff, and compare pages
	- Added GO setting to automatically redirect all http requests to the secure https connector
	- Automatically display common repository root documents as tabs on the docs page
	- Support bugtraq configuration in collaboration with Syntevo,  the regex.* config keys are now DEPRECATED
	- Added FishEye hook script (pr-137)
	- Added Redmine Fetch hook script (issue-359)
	- Added Subgit hook contributed by TMate Software
	- Added function to retain a user account but prohibit authentication. This is an alternative to deleting a user account.
	- Added setting to hide the top-level navigation header to facilitate embedding Gitblit in something else.
	- Added RPC request to reindex tickets
    dependencyChanges:
	- updated to Jetty 8.1.13
	- updated to JGit 3.3.0
	- updated to Lucene 4.6.0
	- updated to BouncyCastle 1.49
	- replaced MarkdownPapers with pegdown 1.4.2
	- added Dagger 1.1.0
	- added Eclipse WikiText libraries for processing confluence, mediawiki, textile, tracwiki, and twiki
	- added FontAwesome 4.0.3
	- added Jedis 2.3.1
    settings:
    - { name: 'git.createRepositoriesShared', defaultValue: 'false' }
    - { name: 'git.allowAnonymousPushes', defaultValue: 'false' }
	- { name: 'git.defaultAccessRestriction', defaultValue: 'PUSH' }
	- { name: 'git.enableMirroring', defaultValue: 'false' }
	- { name: 'git.mirrorPeriod', defaultValue: '30 mins' }
	- { name: 'git.userRepositoryPrefix', defaultValue: '~' }
	- { name: 'realm.authenticationProviders', defaultValue: ' ' }
	- { name: 'realm.ldap.groupEmptyMemberPattern', defaultValue: '(&(objectClass=group)(!(member=*)))' }
	- { name: 'realm.ldap.synchronize', defaultValue: 'false' }
	- { name: 'realm.ldap.syncPeriod', defaultValue: '5 MINUTES' }
	- { name: 'realm.ldap.removeDeletedUsers', defaultValue: 'true' }
	- { name: 'realm.windows.permitBuiltInAdministrators', defaultValue: 'true' }
	- { name: 'web.canonicalUrl', defaultValue: ' ' }
	- { name: 'web.commitMessageRenderer', defaultValue: 'plain' }
	- { name: 'web.documents', defaultValue: 'readme home index changelog contributing submitting_patches copying license notice authors' }
	- { name: 'web.hideHeader', defaultValue: 'false' }
	- { name: 'web.showBranchGraph', defaultValue: 'true' }
	- { name: 'web.summaryShowReadme', defaultValue: 'false' }
	- { name: 'server.redirectToHttpsPort', defaultValue: 'false' }
	- { name: 'tickets.service', defaultValue: ' ' }
	- { name: 'tickets.acceptNewTickets', defaultValue: 'true' }
	- { name: 'tickets.acceptNewPatchsets', defaultValue: 'true' }
	- { name: 'tickets.requireApproval', defaultValue: 'false' }
    contributors:
	- James Moger
	- Robin Rosenberg
	- Klaus Nuber
	- Florian Zschocke
	- Bret Ikehara
	- Chad Horohoe
	- Domingo Oropeza
	- Chris Graham
	- Guenter Dressel
	- fpeters.fae
	- David Ostrovsky
	- Alex Lewis
	- Marc Strapetz
	- Benjamin Asbach
	- Alfred Schmid
	- Gareth Collins
	- Martijn van der Kleijn
	- Berke Viktor
	- Vitaly Litvak
	- Matthias Cullman
	- Eduardo Guervós Narvaez
	- Stardrad Yin
	- Markus Foempe
	- Nasrollah Kavian
	- M. Holmquist
	- Stephan Krull
	- Duncan Jauncey
	- Rhys Evans
	- Michael Wowro
	- I. Tagliani
	- Rick Sladkey
	- Matthias Cullman
	- Johann Fischer
	- Tamás Papp
	- Liyu Wang
	- Jeroen Baten
	- Dongsu, KIM
}

#
# 1.3.2 release
#
r19: {
    title: Gitblit 1.3.2 released
    id: 1.3.2
    date: 2013-08-22
    note: ~
    html: ~
    text: ~
    security: ~
    fixes:
    - Fixed Gitblit Authority startup failures when using alternate user services (issue-280)
    - Manually redirect after branch deletion (issue 282)
    - Simplify when repository size is calculated to ensure we have one IF we want one (issue-295)
    - Fixed anonymous LDAP connections (issue-297)
    - Improved branch deletion-reflog interaction
    - Encode page url parameters as UTF-8
    - Encode filename for binary files on RawPage according to browser
    - Added pptx extension for tree page icon lookup
    - Fixed project links on dashboard page when web.mountParameters=false
    changes: ~
    additions:
    - Add setting for maximum number of days of activity to that may be requested
    - Added HtpasswdUserService to authenticate users against an htpasswd file
    - Automatically maintain the .git/description file used by some other tooling
    dependencyChanges:
    - Added commons-codec 1.7
    contributors:
    - github/guriguri
    - Doug Ayers
    - Ori Livneh
    - Florian Zschocke
    - Tito Nobre
    - Hugo Questroy
    settings:
    - { name: 'web.activityDurationMaximum', defaultValue: 30 }
    - { name: 'realm.htpasswd.userFile', defaultValue: '${baseFolder}/htpasswd' }
    - { name: 'realm.htpasswd.overrideLocalAuthentication', defaultValue: 'false' }
}

#
# 1.3.1 release
#
r18: {
    title: Gitblit 1.3.1 released
    id: 1.3.1
    date: 2013-07-24
    note: ''
          If you have forked repositories and your are upgrading from 1.2.x to 1.3.x, please DO NOT RELOCATE your repositories folder when running 1.3.x the first time.  Gitblit will update forked repository configs on the first execution and it is critical that ${git.repositoriesFolder} points to the same location used by 1.2.x.
          ''
    html: ~
    text: ~
    security: ~
    fixes:
	- Gitblit-as-viewer with no repository urls failed to display summary page (issue 269)
	- Fixed incorrect tagger in the dashboard pages (issue-276)
	- Automatically decode %7E in repository names from git clients that encode ~ (issue-278)
	- Fixed missing Keys class in WAR and Express builds
	- Fixed missing model class dependencies in Gitblit Manager build
	- Fix for IE10 compatibility mode
	- Reset dashboard and activity commit cache on branch REWIND or DELETE
	- Fixed bug with adding new local users with external authentication
	- Fixed missing clone url on the empty repository page
	- Fixed Ubuntu service script for LSB compliance
	- Inserted "sleep 5" in Ubuntu & Centos bash script for service restart
    changes:    
	- Use trash icon in Gitblit Reflog for branch and tag deletion
	- Update Gitblit Reflog on branch deletion from web UI
	- Updated Chinese translation
	- Updated Dutch translation
	- Updated Spanish translation
	- Updated Korean translation
	- Updated Brazilian Portuguese translation
    additions:
	- Added optional browser-side page caching using Last-Modified and Cache-Control for the dashboard, activity, project, and several repository pages (issue-274)
	- Added a GET_USER request type for the RPC mechanism (issue-275)
	- Added PAMUserService to authenticate against a local Linux/Unix/MacOSX server
    dependencyChanges:
    - Added libpam4j 1.7
	settings:
	- { name: 'web.pageCacheExpires', defaultValue: 0 }
	- { name: 'realm.pam.backingUserService', defaultValue: 'users.conf' }
	- { name: 'realm.pam.serviceName', defaultValue: 'system-auth' }
    contributors:
	- Rainer Alföldi 
	- Liyu Wang
	- Jeroen Baten
	- James Moger
	- Stardrad Yin
	- Chad Horohoe
	- Eduardo Guervós Narvaez
	- Dongsu, KIM
	- Gareth Collins
	- Rafael Cavazin
	- Tamás Papp
	- Florian Zschocke
	- Amélie Benoit
	- Gustavo Henrique
}

#
# 1.3.0
#
r17: {
    title: Gitblit 1.3.0 Released
    id: 1.3.0
    date: 2013-07-14
    html: ''
          Release highlights include:
          <ul>
          <li>integrated git daemon</li>
          <li>compare refs or commits page</li>
          <li>completed the Gitblit reflog (formerly pushlog) introduced in 1.2.1</li>
          <li>added new dashboard pages</li>
          <li>added a stars feature</li>
          <li>improved the repository url panel to show your access permission and to offer native app clone links</li>
          <li>improved navigation and theme</li>
          <li>customizable page header colors and logo</li>
          <li>recent activity commit caching to improve performance of dashboard and activity pages</li>
          <li>Windows authentication</li>
          <li>Salesforce.com authentication</li>
          <li>lots of bug fixes</li>
          </ul>
          <p> </p>
          Thank you to <a href="http://syntevo.com">syntevo</a>, <a href="http://atlassian.com">Atlassian</a>, <a href="http://fournova.com">fournova</a>, and <a href="http://github.com">Github</a> for their permission and use of their artwork for the native app clone menus.
          ''
    note: ''
          If you have forked repositories and your are upgrading to 1.3.0, please DO NOT RELOCATE your repositories folder when running 1.3.0 the first time.  Gitblit will update forked repository configs on the first execution and it is critical that ${git.repositoriesFolder} points to the same location used by 1.2.x.
          ''
	security:
	- Raw servlet was insecure. If someone knew the exact repository name and path to a file, the raw blob could be retrieved bypassing security constraints. (issue 198)
    fixes:
	 - Use bash instead of sh in Linux/OSX shell scripts (issue 154)
	 - Fix NPE when getting user's fork without repository list caching (issue 182)
	 - Fix internal error on folder history links (issue 192)
	 - Fix NPE in repositories panel when viewing a federation proposal (issue 195)
	 - Fix NPEs when initializing the context on a servlet containers which returns a null contextFolder (issue 199)
	 - Fixed incorrect icon file name for .doc files (issue 200)
	 - Do not queue emails with no recipients (issue 201)
	 - Disable view and blame links for deleted blobs (issue 216)
	 - Fixed 1.2.x regression with individually symlinked repositories (issue 217)
	 - Fixed UTF-8 encoding errors in email notifications (issue 218)
	 - Fixed NPE in 1.2.1 Federation Client (issue 219)
	 - Fixed extracting Groovy scripts on Express installs (issue 220)
	 - Ensure Redmine url is properly formatted (issue 223)
	 - Use standard ServletRequestWrapper instead of custom wrapper (issue 224)
	 - Switch commit message back to a pre and ensure that it is properly escaped when combined with commit message regex substitution (issue 242)
	 - Fixed AddIndexedBranch tool --branch parameter (issue 247)  
	 - Improve NPE handling for hook script enumeration (issue-253)
	 - Workaround missing commit information in blame page (JGit bug 374382, issue-254) 
	 - Ignore orphan ".git" folder in the repositories root folder (issue-256)
	 - Fixed bug where a null permission was added to a user model on a repository rename when the permission had really been inherited from a team membership (issue-259)
	 - Fixed committer verification with merge commits (issue-264)
	 - Fixed bug in submodule repository linking (issue-266)
     - Could not reset settings with $ or { characters through Gitblit Manager because they are not properly escaped
	 - Added more error checking to blob page and blame page
	 - Disable SNI extensions for client SSL connections
	 - Fixed prettify language extension loading
	 - Fixed index out of bounds exceptions when generating client certificates for a user when the user's table has been filtered
	 - Fixed AddindexedBranch tool when specifying the non-default branch.
	 - Fixed submodule diff display

	changes:
	 - Retrieve summary and metric graphs from Google over https (issue-61)
	 - Persist originRepository (for forks) in the repository config instead of relying on parsing origin urls which are susceptible to filesystem relocation (issue 190) 
	 - Improved error logging for servlet containers which provide a null contextFolder (issue 199)
	 - Improve Gerrit change ref decoration in the refs panel (issue 206)
	 - Display full commit message on commitdiff page (issue-258)
	 - Improved the repository url display.  This display now indicates your repository access permission, per-protocol.
	 - Automatically encode/decode usernames for urls using %XX notation on space, @, and \
 	 - Disable Gson's pretty printing which has a huge performance gain
	 - Properly set application/json content-type on api calls
	 - Make days back filter choices a setting
	 - Changed default days back filter setting to 7 days
	 - Set rel="nofollow" on compressed download links
	 - Improved page title
	 - Updated Polish translation
	 - Updated Japanese translation
	 
    additions: 
	 - Added a ui for the ref log introduced in 1.2.1 (issue-177)
	 - Added weblogic.xml to WAR for deployment on WebLogic (issue 199)
	 - Support setting a custom header logo (issue 208)
	 - Support header color customizations (issue 209)
	 - Support username substitution in web.otherUrls (issue 213)
	 - Option to force client-side basic authentication instead of form-based authentication if web.authenticateViewPages=true (issue 222)
	 - Set author as tooltip of last change column in the repositories panel (issue-238)
	 - Setting to automatically create an user account based on an authenticated user principal from the servlet container (issue-246)
	 - Added WindowsUserService to authenticate users against Windows accounts (issue-250)
	 - Global and per-repository setting to exclude authors from metrics (issue-251)
	 - Added commit cache to improve Activity, Dashboard, and Project page generation times
	 - Added SalesForce.com user service
     - Added simple star/unstar function to flag or bookmark interesting repositories
     - Added Dashboard page which shows a news feed for starred repositories and offers a filterable list of repositories you care about
	 - Added client application menus for Git, SmartGit/Hg, SourceTree, Tower, GitHub for Windows, and GitHub for Mac
	 - Added GO http/https connector thread pool size setting
	 - Added a server setting to force a particular translation/Locale for all sessions
	 - Added smart Git Daemon serving.  If enabled, git:// access will be offered for any repository which permits anonymous access.  If the repository permits anonymous cloning, anonymous git:// clone will be permitted while anonmymous git:// pushes will be rejected.
	 - Option to automatically tag branch tips on each push with an incremental revision number
     - Implemented multiple repository owners
     - Optional periodic LDAP user and team pre-fetching & synchronization
	 - Added config setting to use SMTPS
	 - Added option to index all local branches in AddIndexedBranches tool
     - Display name and version in Tomcat Manager
     - FogBugz post-receive hook script
     - Chinese translation
	 - Support --baseFolder parameter in Federation Client

    contributors:
	- James Moger
	- Bandarupalli Satyanarayana
	- Chad Horohoe
	- Christian Aistleitner
	- Colin Bowern
	- David Ostrovsky
	- Egbert Teeselink
	- Hige Maniya
	- Hirotaka Honma
	- Ikslawek
	- Jay Meyer
	- John Crygier
	- Kensuke Matsuzaki
	- Laurens Vrijnsen
	- Lee Grofit
	- Lukasz Jader
	- Martijn Laan
	- Matthias Bauer
	- Michael Pailloncy
	- Michael Schaefers
	- Oliver Doepner
	- Philip Boutros
	- Rafael Cavazin
	- Ryan Schneider
	- Sakurai Youhei
	- Sarah Haselbauer
	- Slawomir Bochenski
	- Stardrad Yin
	- Thomas Pummer
	- William Whittle
	- Yukihiko Sawanobori
	- github/akquinet
	- github/dapengme
	
	dependencyChanges:
	- JGit 3.0.0.201306101825-r
	- Iconic font
	- AngularJS 1.0.7
	- FreeMarker 2.3.19
	- Waffle 1.5
	- JNA 3.5.0
	- Guava 13.0.1
	
	settings:
	- { name: 'git.daemonBindInterface', defaultValue: 'localhost' }
	- { name: 'git.daemonPort', defaultValue: 0 }
	- { name: 'git.defaultIncrementalPushTagPrefix', defaultValue: 'r' }
	- { name: 'mail.smtps', defaultValue: 'false' }
	- { name: 'realm.container.autoCreateAccounts', defaultValue: 'false' }
	- { name: 'realm.salesforce.backingUserService', defaultValue: 'users.conf' }
	- { name: 'realm.salesforce.orgId', defaultValue: 0 }
	- { name: 'realm.windows.defaultDomain', defaultValue: ' ' }
	- { name: 'realm.windows.backingUserService', defaultValue: 'users.conf' }
	- { name: 'web.activityDuration', defaultValue: 7 }
	- { name: 'web.activityDurationChoices', defaultValue: '1 3 7 14 21 28' }
	- { name: 'web.activityCacheDays', defaultValue: 14 }
	- { name: 'web.allowAppCloneLinks', defaultValue: 'true' }
	- { name: 'web.forceDefaultLocale', defaultValue: ' ' }
	- { name: 'web.headerLogo', defaultValue: '${baseFolder}/logo.png' }
	- { name: 'web.headerBackgroundColor', defaultValue: ' ' }
	- { name: 'web.headerForegroundColor', defaultValue: ' ' }
	- { name: 'web.headerHoverColor', defaultValue: ' ' }
	- { name: 'web.headerBorderColor', defaultValue: ' ' }
	- { name: 'web.headerBorderFocusColor', defaultValue: ' ' }
	- { name: 'web.metricAuthorExclusions', defaultValue: ' ' }
	- { name: 'web.overviewReflogCount', defaultValue: 5 }
	- { name: 'web.reflogChangesPerPage', defaultValue: 10 }
	- { name: 'server.nioThreadPoolSize', defaultValue: 50 }
}

#
# 1.2.1
#
r16: {
    title: Gitblit 1.2.1 Released
    id: 1.2.1
    date: 2013-01-15
    html: ''
          Because there are now several types of files and folders that must be considered Gitblit data, the default location for data has changed.
          <p />
          You will need to move a few files around when upgrading.  Please review the <a href="upgrade_go.html">upgrading GO</a> or <a href="upgrade_war.html">upgrading WAR</a> page for details.
          <p />
          <b>Express Users</b> make sure to update your web.xml file with the ${baseFolder} values!          
          ''
    fixes:
    - Fixed nullpointer on recursively calculating folder sizes when there is a named pipe or symlink in the hierarchy
    - Added nullchecking when concurrently forking a repository and trying to display the fork network (issue-187)
    - Fixed bug where permission changes were not visible in the web ui to a logged-in user until the user logged-out and then logged back in again (issue-186)
    - Fixed nullpointer on creating a repository with mixed case (issue 185)
    - Include missing model classes in api library (issue-184)
    - Fixed nullpointer when using *web.allowForking = true* && *git.cacheRepositoryList = false* (issue 182)
    - Likely fix for commit and commitdiff page failures when a submodule reference changes (issue 178)
    - Build project models from the repository model cache, when possible, to reduce page load time (issue 172)
    - Fixed loading of Brazilian Portuguese translation from *nix server

    additions:
    - ''Fanout PubSub service for self-hosted [Sparkleshare](http://sparkleshare.org) notifications.
      This service is disabled by default.''
    - ''Implemented a simple push log based on a hidden, orphan branch refs/gitblit/pushes (issue 177)
      The push log is not currently visible in the ui, but the data will be collected and it will be exposed to the ui in the next release.''
    - Support for locally and remotely authenticated accounts in LdapUserService and RedmineUserService (issue 183)
    - Added Dutch translation

    changes:
    - ''Gitblit GO and Gitblit WAR are now both configured by `gitblit.properties`. WAR is no longer configured by `web.xml`.
      However, Express for OpenShift continues to be configured by `web.xml`.''
    - Support for a *--baseFolder* command-line argument for Gitblit GO and Gitblit Certificate Authority
    - Support for specifying a *${baseFolder}* parameter in `gitblit.properties` and `web.xml` for several settings
    - Improve history display of a submodule link
    - Updated Korean translation
    - Updated checkstyle definition
    
    settings:
    - { name: fanout.bindInterface, defaultValue: localhost }
    - { name: fanout.port, defaultValue: 0 }
    - { name: fanout.useNio, defaultValue: 'true' }
    - { name: fanout.connectionLimit, defaultValue: 0 }

    contributors:
	- James Moger
    - github/mystygage
    - Dongsu, KIM
    - Jeroen Baten
    - github/inaiat
}

#
# 1.2.0
#
r15: {
    title: Gitblit 1.2.0 Released
    id: 1.2.0
    date: 2012-12-31
    note: ''
          The permissions model has changed in the 1.2.0 release.
          If you are updating your server, you must also update any Gitblit Manager and Federation Client installs to 1.2.0 as well.  The data model used by the RPC mechanism has changed slightly for the new permissions infrastructure.
          ''
    fixes:
    - Fixed regression in *isFrozen* (issue 181)
    - Author metrics can be broken by newlines in email addresses from converted repositories (issue 176)
    - Set subjectAlternativeName on generated SSL cert if CN is an ip address (issue 170)
    - Fixed incorrect links on history page for files not in the current/active commit (issue 166)
    - Empty repository page failed to handle missing repository (issue 160)
    - Fixed broken ticgit urls (issue 157)
    - Exclude submodules from zip downloads (issue 151)
    - Fixed bug where repository ownership was not updated on rename user
    - Fixed bug in create/rename repository if you explicitly specified the alias for the root group (e.g. main/myrepo) (issue 143)
    - Wrapped Markdown parser with improved exception handler (issue 142)
    - Fixed duplicate entries in repository cache (issue 140)
    - Fixed connection leak in LDAPUserService (issue 139)
    - Fixed bug in commit page where changes to a submodule threw a null pointer exception (issue 132)
    - Fixed bug in the diff view for filenames that have non-ASCII characters (issue 128)

    additions:
    - ''
      Implemented discrete repository permissions (issue 36)
      
        - 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)
        
      While not as sophisticated as Gitolite, this does give finer access controls.  These permissions fit in cleanly with the existing users.conf and users.properties files.  In Gitblit <= 1.1.0, all your existing user accounts have RW+ access.   If you are upgrading to 1.2.0, the RW+ access is *preserved* and you will have to lower/adjust accordingly.
      ''
    - ''Implemented *case-insensitive* regex repository permission matching (issue 36)

      This allows you to specify a permission like `RW:mygroup/.*` to grant push privileges to all repositories within the *mygroup* project/folder.''
    - Added DELETE, CREATE, and NON-FAST-FORWARD ref change logging
    - ''Added support for personal repositories.
      Personal repositories can be created by accounts with the *create* permission and are stored in *git.repositoriesFolder/~username*.  Each user with personal repositories will have a user page, something like the GitHub profile page.  Personal repositories have all the same features as common repositories, except personal repositories can be renamed by their owner.''
    - ''Added support for server-side forking of a repository to a personal repository (issue 137)
      In order to fork a repository, the user account must have the *fork* permission **and** the repository must *allow forks*.  The clone inherits the access list of its origin.  i.e. if Team A has clone access to the origin repository, then by default Team A also has clone access to the fork.  This is to facilitate collaboration.  The fork owner may change access to the fork and add/remove users/teams, etc as required <u>however</u> it should be noted that all personal forks will be enumerated in the fork network regardless of access view restrictions.  If you really must have an invisible fork, the clone it locally, create a new repository for your invisible fork, and push it back to Gitblit.''
    - Added optional *create-on-push* support
    - Added **experimental** JGit-based garbage collection service.  This service is disabled by default.
    - ''Added support for X509 client certificate authentication.  (issue 106)
      You can require all git servlet access be authenticated by a client certificate.  You may also specify the OID fingerprint to use for mapping a certificate to a username.  It should be noted that the user account MUST already exist in Gitblit for this authentication mechanism to work; this mechanism can not be used to automatically create user accounts from a certificate.''
    - Revised clean install certificate generation to create a Gitblit GO Certificate Authority certificate; an SSL certificate signed by the CA certificate; and to create distinct server key and server trust stores.  <u>The store files have been renamed!</u>
    - Added support for Gitblit GO to require usage of client certificates to access the entire server.
    - Added **Gitblit Certificate Authority**, an x509 PKI management tool for Gitblit GO to encourage use of x509 client certificate authentication.
    - Added web.shortCommitId setting to control length of shortened commit ids
    - Added alternate compressed download formats: tar.gz, tar.xz, tar.bzip2 (issue 174)
    - Added simple project pages.  A project is a subfolder off the *git.repositoriesFolder*.
    - Added support for X-Forwarded-Context for Apache subdomain proxy configurations (issue 135)
    - Delete branch feature (issue 121)
    - Added line links to blob view (issue 130)
    - Added HTML sendmail hook script and Gitblit.sendHtmlMail method
    - Added RedmineUserService
    - Support for committer verification.  Requires use of *--no-ff* when merging branches or pull requests.  See setup page for details.
    - Added Brazilian Portuguese translation

    changes:
    - Added server setting to specify keystore alias for ssl certificate (issue 98)
    - Added optional global and per-repository activity page commit contribution throttle to help tame *really* active repositories (issue 173)
    - Added support for symlinks in tree page and commit page (issue 171)
    - All access restricted servlets (e.g. DownloadZip, RSS, etc) will try to authenticate using X509 certificates, container principals, cookies, and BASIC headers, in that order.
    - Added *groovy* and *scala* to *web.prettyPrintExtensions*
    - Added short commit id column to log and history tables (issue 168)
    - Teams can now specify the *admin*, *create*, and *fork* roles to simplify user administration
    - Use https Gravatar urls to avoid browser complaints
    - Added frm to default pretty print extensions (issue 156)
    - Expose ReceivePack to Groovy push hooks (issue 125)
    - Redirect to summary page when refreshing the empty repository page on a repository that is not empty (issue 129)
    - Emit a warning in the log file if running on a Tomcat-based servlet container which is unfriendly to %2F forward-slash url encoding AND Gitblit is configured to mount parameters with %2F forward-slash url encoding (issue 126)
    - ''LDAP admin attribute setting is now consistent with LDAP teams setting and admin teams list.
      If *realm.ldap.maintainTeams==true* **AND** *realm.ldap.admins* is not empty, then User.canAdmin() is controlled by LDAP administrative team membership.  Otherwise, User.canAdmin() is controlled by Gitblit.''
    - Support servlet container authentication for existing UserModels (issue 68)

	settings:
	- { name: web.allowForking, defaultValue: 'true' }
	- { name: git.allowCreateOnPush, defaultValue: 'true' }
	- { name: git.allowGarbageCollection, defaultValue: 'false' }
	- { name: git.garbageCollectionHour, defaultValue: 0 }
	- { name: git.defaultGarbageCollectionThreshold, defaultValue: 500k }
	- { name: git.defaultGarbageCollectionPeriod, defaultValue: 7 days }
	- { name: git.requireClientCertificates, defaultValue: 'false' }
	- { name: git.enforceCertificateValidity, defaultValue: 'true' }
	- { name: git.certificateUsernameOIDs, defaultValue: CN }
	- { name: web.shortCommitIdLength, defaultValue: 8 }
	- { name: web.compressedDownloads, defaultValue: zip gz }
	- { name: server.requireClientCertificates, defaultValue: 'false' }

    dependencyChanges:
    - Jetty 7.6.8
    - JGit 2.2.0.201212191850-r
    - Groovy 1.8.8
    - Wicket 1.4.21
    - Lucene 3.6.1
    - BouncyCastle 1.47
    - MarkdownPapers 1.3.2
    - JCalendar 1.3.2
    - Commons-Compress 1.4.1
    - XZ for Java 1.0

    contributors:
	- James Moger
    - github/rafaelcavazin
    - github/mallowlabs
    - github/sauthieg
    - github/ajermakovics
    - github/kevinanderson1
    - github/jpyeron
}

#
# 1.1.0
#
r14: {
    title: Gitblit 1.1.0 Released
    id: 1.1.0
    date: 2012-08-25
    note: If you are updating from an earlier release AND you have indexed branches with the Lucene indexing feature, you need to be aware that this release will completely re-index your repositories.  Please be sure to provide ample heap resources as appropriate for your installation.

    fixes:
    - Bypass Wicket's inability to handle direct url addressing of a view-restricted, grouped repository for new, unauthenticated sessions (e.g. click link from email or rss feed without having an active Wicket session)
    - Fixed MailExecutor's failure to cope with mail server connection troubles resulting in 100% CPU usage
    - Fixed generated urls in Groovy *sendmail* hook script for grouped repositories
    - Fixed generated urls in RSS feeds for grouped repositories
    - Fixed nullpointer exception in git servlet security filter (issue 123)
    - Eliminated an unnecessary repository enumeration call on the root page which should result in faster page loads (issue 103)
    - Gitblit could not delete a Lucene index in a working copy on index upgrade
    - Do not index submodule links (issue 119)
    - Restore original user or team object on failure to update (issue 118)
    - Fixes to relative path determination in repository search algorithm for symlinks (issue 116)
    - Fix to GitServlet to allow pushing to symlinked repositories (issue 116)
    - Repository URL now uses `X-Forwarded-Proto` and `X-Forwarded-Port`, if available, for reverse proxy configurations (issue 115)
    - Output real RAW content, not simulated RAW content (issue 114)
    - Fixed Lucene charset encoding bug when reindexing a repository (issue 112)
    - Fixed search box linking to Lucene page for grouped repository on Tomcat (issue 111)
    - Fixed null pointer in LdapUserSerivce if account has a null email address (issue 110)
    - Really fixed failure to update a GO setting from the manager (issue 85)

    additions:
    - Identified repository list is now cached by default to reduce disk io and to improve performance (issue 103)
    - Preliminary bare repository submodule support
    - ''
      *git.submoduleUrlPatterns* is a space-delimited list of regular expressions for extracting a repository name from a submodule url.
      For example, `git.submoduleUrlPatterns = .*?://github.com/(.*)` would extract *gitblit/gitblit.git* from *git://github.git/gitblit/gitblit.git*
      **Note:** You may not need this control to work with submodules, but it is there if you do.
        - If there are no matches from *git.submoduleUrlPatterns* then the repository name is assumed to be whatever comes after the last `/` character *(e.g. gitblit.git)*
        - Gitblit will try to locate this repository relative to the current repository *(e.g. myfolder/myrepo.git, myfolder/mysubmodule.git)* and then at the root level *(mysubmodule.git)* if that fails.
        - Submodule references in a working copy will be properly identified as gitlinks, but Gitblit will not traverse into the working copy submodule repository.
      ''
    - ''
      Added a repository setting to control authorization as AUTHENTICATED or NAMED. (issue 117)

      NAMED is the original behavior for authorizing against a list of permitted users or permitted teams.
      AUTHENTICATED allows restricted access for any authenticated user.  This is a looser authorization control.
      ''
    - Added default authorization control setting (AUTHENTICATED or NAMED)
    - Added setting to control how deep Gitblit will recurse into *git.repositoriesFolder* looking for repositories (issue 103)
    - Added setting to specify regex exclusions for repositories (issue 103)
    - Blob page now supports displaying images (issue 6)
    - Non-image binary files can now be downloaded using the RAW link
    - Support StartTLS in LdapUserService (issue 122)
    - Added Korean translation

    changes:
    - Line breaks inserted for readability in raw Markdown content display in the event of a parsing/transformation error.  An error message is now displayed prepended to the raw content.
    - Improve UTF-8 reading for Markdown files
    - Updated Polish translation
    - Updated Japanese translation
    - Updated Spanish translation
    
    settings:
    - { name: git.cacheRepositoryList, defaultValue: 'true' }
    - { name: git.submoduleUrlPatterns, defaultValue: * }
    - { name: git.searchExclusions, defaultValue: * }
    - { name: git.searchRecursionDepth, defaultValue: -1 }
    - { name: git.defaultAuthorizationControl, defaultValue: NAMED }

    contributors:
	- James Moger
    - Steffen Gebert
}

#
# 1.0.0
#
r13: {
    title: Gitblit 1.0.0 Released
    id: 1.0.0
    date: 2012-07-14

    fixes:
    - Fixed bug in Lucene search where old/stale blobs were never properly deleted during incremental updates.  This resulted in duplicate blob entries in the index.
    - Fixed intermittent bug in identifying line numbers in Lucene search (issue 105)
    - Adjust repository identification algorithm to handle the scenario where a repository name collides with a group/folder name (e.g. foo.git and foo/bar.git) (issue 104)
    - Fixed bug where a repository set as *authenticated push* did not have anonymous clone access (issue 96)
    - Fixed bug in Basic authentication if passwords had a colon
    - Fixed bug where the Gitblit Manager could not update a setting that was not referenced in reference.properties (issue 85)

    changes:
    - ''**Updated Lucene index version which will force a rebuild of ALL your Lucene indexes**
      Make sure to properly set *web.blobEncodings* before starting Gitblit if you are updating!  (issue 97)''
    - Changed default layout for web ui from Fixed-Width layout to Responsive layout (issue 101)
    - ''IUserService interface has changed to better accomodate custom authentication and/or custom authorization<
      The default `users.conf` now supports persisting display names and email addresses.''
    - Updated Japanese translation

    additions:
    - Added setting to allow specification of a robots.txt file (issue 99)
    - ''Added setting to control Responsive layout or Fixed-Width layout (issue 101)
      Responsive layout is now the default.  This layout gracefully scales the web ui from a desktop layout to a mobile layout by hiding page components.  It is easy to try, just resize your browser or point your Android/iOS device to the url of your Gitblit install.''
    - Added setting to control charsets for blob string decoding.  Default encodings are UTF-8, ISO-8859-1, and the server default charset. (issue 97)      
    - ''Exposed JGit internal configuration settings in gitblit.properties/web.xml (issue 93)
      Review your `gitblit.properties` or `web.xml` for detailed explanations of these settings.''
    - Added default access restriction.  Applies to new repositories and repositories that have not been configured with Gitblit. (issue 88)
    - Added Ivy 2.2.0 dependency which enables Groovy Grapes, a mechanism to resolve and retrieve library dependencies from a Maven 2 repository within a Groovy push hook script
    - ''Added setting to control Groovy Grape root folder (location where resolved dependencies are stored)
      [Grape](http://groovy.codehaus.org/Grape) allows you to add Maven dependencies to your pre-/post-receive hook script classpath.''
    - Added LDAP User Service with many new *realm.ldap* keys
    - ''Added support for custom repository properties for Groovy hooks
      Custom repository properties complement hook scripts by providing text field prompts in the web ui and the Gitblit Manager for the defined properties.  This allows your push hooks to be parameterized.''
    - Added script to facilitate proxy environment setup on Linux
    - Added Polish translation
    - Added Spanish translation

    settings:
    - { name: groovy.grapeFolder, defaultValue: groovy/grape }
    - { name: web.robots.txt, defaultValue: }
    - { name: web.useResponsiveLayout, defaultValue: 'true' }
    - { name: web.blobEncodings, defaultValue: UTF-8 ISO-8859-1 }
    - { name: git.defaultAccessRestriction, defaultValue: NONE }
    - { name: git.packedGitWindowSize, defaultValue: 8k }
    - { name: git.packedGitLimit, defaultValue: 10m }
    - { name: git.deltaBaseCacheLimit, defaultValue: 10m }
    - { name: git.packedGitOpenFiles, defaultValue: 128 }
    - { name: git.streamFileThreshold, defaultValue: 50m }
    - { name: git.packedGitMmap, defaultValue: 'false' }

    dependencyChanges:
    - Bootstrap 2.0.4
    - JGit 2.0.0.201206130900-r
    - Groovy 1.8.6
    - Gson 1.7.2
    - Log4J 1.2.17
    - SLF4J 1.6.6
    - Apache Commons Daemon 1.0.10
    - Ivy 2.2.0

    contributors:
	- James Moger
    - Eduardo Guervos Narvaez
    - Lukasz Jader
    - github/mragab
    - github/jcrygier
    - github/zakki
    - github/peterloron
}

#
# 0.9.3
#
r12: {
    title: Gitblit 0.9.3 Released
    id: 0.9.3
    date: 2012-04-11

    fixes:
    - Fixed bug where you could not remove all selections from a RepositoryModel list (permitted users, permitted teams, hook scripts, federation sets, etc) (issue 81)
    - Automatically set *java.awt.headless=true* for Gitblit GO

    contributors:
	- James Moger
}

#
# 0.9.2
#
r11: {
    title: Gitblit 0.9.2 Released
    id: 0.9.2
    date: 2012-04-04
    
    changes:
    - Added *clientLogger* bound variable to Groovy hook mechanism to allow custom info and error messages to be returned to the client

   fixes:
    - Fixed absolute path/canonical path discrepancy between Gitblit and JGit regarding use of symlinks (issue 78)
    - Fixed row layout on activity page (issue 79)
    - Fixed Centos service script
    - Fixed EditRepositoryPage for IE8; missing save button (issue 80)

    contributors:
	- James Moger
    - github/jonnybbb
    - github/mohamedmansour
    - github/jcrygier
}

#
# 0.9.1
#
r10: {
    title: Gitblit 0.9.1 Released
    id: 0.9.1
    date: 2012-03-27

    fixes:
    - Lucene folder was stored in working copy instead of in .git folder

    contributors:
	- James Moger
}

#
# 0.9.0
#
r9: {
    title: Gitblit 0.9.0 Released
    id: 0.9.0
    date: 2012-03-27

    security:
    - Fixed session fixation vulnerability where the session identifier was not reset during the login process (issue 62)

    changes:
    - Reject pushes to a repository with a working copy (i.e. non-bare repository) (issue-49)
    - Changed default web.datetimestampLongFormat from *EEEE, MMMM d, yyyy h:mm a z* to *EEEE, MMMM d, yyyy HH:mm Z* (issue 50)
    - Expanded commit age coloring from 2 days to 30 days (issue 57)

    additions:
    - ''Added optional Lucene branch indexing (issue 16)
      Repository branches may be optionally indexed by Lucene for improved searching.  To use this feature you must specify which branches to index within the *Edit Repository* page; _no repositories are automatically indexed_.  Gitblit will build or incrementally update enrolled repositories on a 2 minute cycle. (i.e you will have to wait 2-3 minutes after respecifying indexed branches or pushing new commits before Gitblit will build/update the repository Lucene index.)
      If a repository has Lucene-indexed branches the *search* form on the repository pages will redirect to the root-level Lucene search page and only the content of those branches can be searched.<br/>
      If the repository does not specify any indexed branches then repository commit-traversal search is used.

      **Note:** Initial indexing of an existing repository can be memory-exhaustive. Be sure to provide your Gitblit server adequate heap space to index your repositories (e.g. -Xmx1024M).<br/>
      See the [setup](setup.html) page for additional details.''
    - Allow specifying timezone to use for Gitblit which is independent of both the JVM and the system timezone (issue 54)
    - Added a built-in AJP connector for integrating Gitblit GO into an Apache mod_proxy setup (issue 59)
    - ''On the Repositories page show a bang *!* character in the color swatch of a repository with a working copy (issue 49)
      Push requests to these repositories will be rejected.''
    - On all non-bare Repository pages show *WORKING COPY* in the upper right corner (issue 49)
    - New setting to prevent display/serving non-bare repositories
    - Added *protect-refs.groovy*
    - Allow setting default branch (relinking HEAD) to a branch or a tag
    - Added Ubuntu service init script (issue 72)
    - Added partial Japanese translation

    fixes:
    - Ensure that Welcome message is parsed using UTF-8 encoding (issue 74)
    - Activity page chart layout broken by Google (issue 73)
    - Uppercase repositories not selectable in edit palettes (issue 71)
    - Not all git notes were properly displayed on the commit page (issue 70)
    - Activity page now displays all local branches (issue 65)
    - Fixed (harmless) nullpointer on pushing to an empty repository (issue 69)
    - Fixed possible nullpointer from the servlet container on startup (issue 67)
    - Fixed UTF-8 encoding bug on diff page (issue 66)
    - Fixed timezone bugs on the activity page (issue 54)
    - Prevent add/edit team with no selected repositories (issue 56)
    - Disallow browser autocomplete on add/edit user/team/repository pages
    - Fixed username case-sensitivity issues (issue 43)
    - Disregard searching a subfolder if Gitblit does not have filesystem permissions (issue 51)

    settings:
    - { name: web.allowLuceneIndexing, defaultValue: 'true' }
    - { name: web.luceneIgnoreExtensions, defaultValue: 7z arc arj bin bmp dll doc docx exe gif gz jar jpg lib lzh odg odf odt pdf ppt png so swf xcf xls xlsx zip }
    - { name: web.timezone, defaultValue: }
    - { name: server.ajpPort, defaultValue: 0 }
    - { name: server.ajpBindInterface, defaultValue: localhost }
    - { name: git.onlyAccessBareRepositories, defaultValue: 'false' }

    dependencyChanges:
    - Bootstrap 2.0.2
    - MarkdownPapers 1.2.7
    - JGit 1.3.0.201202151440-r
    - Wicket 1.4.20

    contributors:
	- James Moger
    - github/lemval
    - github/zakki
    - github/plm
}

#
# 0.8.2
#
r8: {
    title: Gitblit 0.8.2 Released
    id: 0.8.2
    date: 2012-01-13

    fixes:
    - Fixed bug when upgrading from users.properties to users.conf (issue 41)

    contributors:
	- James Moger
}

#
# 0.8.1
#
r7: {
    title: Gitblit 0.8.1 Released
    id: 0.8.1
    date: 2012-01-11

    fixes:
    - Include missing icon resource for the manager (issue 40)
    - Fixed sendmail.groovy message content with incorrect tag/branch labels

    contributors:
	- James Moger
}

#
# 0.8.0
#
r6: {
    title: Gitblit 0.8.0 Released
    id: 0.8.0
    date: 2012-01-11

    additions:
    - ''Platform-independent, Groovy push hook script mechanism.
      Hook scripts can be set per-repository, per-team, or globally for all repositories.''
    - ''*sendmail.groovy* for optional email notifications on push.
      You must properly configure your SMTP server settings in `gitblit.properties` or `web.xml` to use *sendmail.groovy*.''
    - New global key for mailing lists.  This is used in conjunction with the *sendmail.groovy* hook script.  All repositories that use the *sendmail.groovy* script will include these addresses in the notification process.  Please see the Setup page for more details about configuring sendmail.
    - *com.gitblit.GitblitUserService*.  This is a wrapper object for the built-in user service implementations.  For those wanting to only implement custom authentication it is recommended to subclass GitblitUserService and override the appropriate methods.  Going forward, this will help insulate custom authentication from new IUserService API and/or changes in model classes.
    - ''New default user service implementation: *com.gitblit.ConfigUserService* (`users.conf`)
      This user service implementation allows for serialization and deserialization of more sophisticated Gitblit User objects without requiring the encoding trickery now present in FileUserService (users.properties).  This will open the door for more advanced Gitblit features.
      For those upgrading from an earlier Gitblit version, a `users.conf` file will automatically be created for you from your existing `users.properties` file on your first launch of Gitblit <u>however</u> you will have to manually set *realm.userService=users.conf* to switch to the new user service.
      The original `users.properties` file and the corresponding implementation are **deprecated**.''
    - Teams for specifying user-repository access in bulk.  Teams may also specify mailing lists addresses and pre- & post- receive hook scripts.
    - Gravatar integration
    - Activity page for aggregated repository activity.  This is a timeline of commit activity over the last N days for one or more repositories.
    - *Filters* menu for the Repositories page and Activity page.  You can filter by federation set, team, and simple custom regular expressions.  Custom expressions can be stored in `gitblit.properties` or `web.xml` or directly defined in your url (issue 27)
    - Flash-based 1-step *copy to clipboard* of the primary repository url based on Clippy
    - JavaScript-based 3-step (click, ctrl+c, enter) *copy to clipboard* of the primary repository url in the event that you do not want to use Flash on your installation
    - Empty repositories now link to an *empty repository* page which gives some direction to the user for the next step in using Gitblit.  This page displays the primary push/clone url of the repository and gives sample syntax for the git command-line client. (issue 31)
    - Repositories with a *gh-pages* branch will now have a *pages* link which will serve the content of this branch.  All resource requests are against the repository, Gitblit does not checkout/export this branch to a temporary filesystem.  Jekyll templating is not supported.
    - Gitblit Express bundle to get started running Gitblit on RedHat OpenShift cloud <span class="label label-warning">BETA</span>

    changes:
    - Dropped display of trailing .git from repository names
    - ''Gitblit GO is now monolithic like the WAR build. (issue 30)
      This change helps adoption of GO in environments without an internet connection or with a restricted connection.''
    - Unit testing framework has been migrated to JUnit4 syntax and the test suite has been redesigned to run all unit tests, including rpc, federation, and git push/clone tests

    fixes:
    - Several a bugs in FileUserService related to cleaning up old repository permissions on a rename or delete
    - Renaming a repository into a new subfolder failed (issue 33)

    settings:
    - { name: groovy.scriptsFolder, defaultValue: groovy }
    - { name: groovy.preReceiveScripts, defaultValue: }
    - { name: groovy.postReceiveScripts, defaultValue: }
    - { name: mail.mailingLists, defaultValue: }
    - { name: realm.userService, defaultValue: users.conf }
    - { name: web.allowGravatar, defaultValue: 'true' }
    - { name: web.activityDuration, defaultValue: 14 }
    - { name: web.timeFormat, defaultValue: HH:mm }
    - { name: web.datestampLongFormat, defaultValue: "EEEE, MMMM d, yyyy" }
    - { name: web.customFilters, defaultValue: }
    - { name: web.allowFlashCopyToClipboard, defaultValue: 'true' }

    dependencyChanges:
    - JGit 1.2.0
    - Groovy 1.8.5
    - Clippy

    contributors:
	- James Moger
}

#
# 0.7.0
#
r5: {
    title: Gitblit 0.7.0 Released
    id: 0.7.0
    date: 2011-11-11

    security:
    - fixed security hole when cloning clone-restricted repository with TortoiseGit (issue 28)

    fixes:
    - ''federation protocol timestamps.  dates are now serialized to the [iso8601](http://en.wikipedia.org/wiki/ISO_8601) standard.
      **This breaks 0.6.0 federation clients/servers.**''
    - collision on rename for repositories and users
    - Gitblit can now browse the Linux kernel repository (issue 25)
    - Gitblit now runs on Servlet 3.0 webservers (e.g. Tomcat 7, Jetty 8) (issue 23)
    - Set the RSS content type of syndication feeds for Firefox 4 (issue 22)
    - RSS feeds are now properly encoded to UTF-8
    - RSS feeds now properly generate parameterized links if *web.mountParameters=false*
    - Null pointer exception if did not set federation strategy (issue 20)
    - Gitblit GO allows SSL renegotiation if running on Java 1.6.0_22 or later
        
    changes:
    - updated ui with Twitter Bootstrap CSS toolkit
    - repositories list performance by caching repository sizes (issue 27)
    - summary page performance by caching metric calculations (issue 25)
    
    additions:
    - authenticated JSON RPC mechanism
    - Gitblit API RSS/JSON RPC library
    - Gitblit Manager (Java/Swing Application) for remote administration of a Gitblit server.
    - per-repository setting to skip size calculation (faster repositories page loading)
    - per-repository setting to skip summary metrics calculation (faster summary page loading)
    - IUserService.setup(IStoredSettings) for custom user service implementations
    - setting to control Gitblit GO context path for proxy setups
    - *combined-md5* password storage option which stores the hash of username+password as the password
    - repository owners are automatically granted access for git, feeds, and zip downloads without explicitly selecting them
    - RSS feeds now include regex substitutions on commit messages for bug trackers, etc
    
    settings:
    - { name: web.loginMessage, defaultValue: gitblit }
    - { name: web.enableRpcServlet, defaultValue: 'true' }
    - { name: web.enableRpcManagement, defaultValue: 'false' }
    - { name: web.enableRpcAdministration, defaultValue: 'false' }
    - { name: server.contextPath, defaultValue: / }
    
    dependencyChanges:
    - MarkdownPapers 1.2.5
    - Wicket 1.4.19

    contributors:
	- James Moger
    - github/dadalar
    - github/alyandon
    - github/trygvis
}

#
# 0.6.0
#
r4: {
    title: Gitblit 0.6.0 Released
    id: 0.6.0
    date: 2011-09-27

    fixes:
    - syndication urls for WAR deployments
    - authentication for zip downloads

    additions:
    - federation feature to allow gitblit instances (or gitblit federation clients) to pull repositories and, optionally, settings and accounts from other gitblit instances.  This is something like [svn-sync](http://svnbook.red-bean.com/en/1.5/svn.ref.svnsync.html) for gitblit.
    - user role *#notfederated* to prevent a user account from being pulled by a federated Gitblit instance

    settings:
    - { name: federation.name, defaultValue: }
    - { name: federation.passphrase, defaultValue: }
    - { name: federation.allowProposals, defaultValue: 'false' }
    - { name: federation.proposalsFolder, defaultValue: proposals }
    - { name: federation.defaultFrequency, defaultValue: 60 mins }
    - { name: federation.sets, defaultValue: }
    - { name: "mail.*", defaultValue: }
        
    dependencyChanges:
    - MarkdownPapers 1.1.1
    - Wicket 1.4.18
    - JGit 1.1.0
    - google-gson
    - javamail

    contributors:
	- James Moger
}

#
# 0.5.2
#
r3: {
    title: Gitblit 0.5.2 Released
    id: 0.5.2
    date: 2011-07-27

    fixes:
    - active repositories with a HEAD that pointed to an empty branch caused internal errors (issue 14)
    - bare-cloned repositories were listed as (empty) and were not clickable (issue 13)
    - default port for Gitblit GO is now 8443 to be more linux/os x friendly (issue 12)
    - repositories can now be reliably deleted and renamed (issue 10)
    - users can now change their passwords (issue 1)
    - always show root repository group first, i.e. do not sort root group with other groups
    - tone-down repository group header color
    
    additions:
    - optionally display repository on-disk size on repositories page
    - forward-slashes ('/', %2F) can be encoded using a custom character to workaround some servlet container default security measures for proxy servers
    
    settings:
    - { name: web.showRepositorySizes, defaultValue: 'true' }
    - { name: web.forwardSlashCharacter, defaultValue: / }
    
    dependencyChanges:
    - MarkdownPapers 1.1.0
    - Jetty 7.4.3

    contributors:
	- James Moger
}

#
# 0.5.1
#
r2: {
    title: Gitblit 0.5.1 Released
    id: 0.5.1
    date: 2011-06-28

    changes:
    - clarified SSL certificate generation and configuration for both server-side and client-side
    - added some more troubleshooting information to documentation
    - replaced JavaService with Apache Commons Daemon

    contributors:
	- James Moger
}

#
# 0.5.0
#
r1: {
    title: Gitblit 0.5.0 Released
    id: 0.5.0
    date: 2011-06-26
    text: initial release

    contributors:
	- James Moger
}

snapshot: &r27
release: &r26
releases: &r[1..26]
