#
# ${project.version} release
#
r25: {
    title: ${project.name} ${project.version} released
    id: ${project.version}
    date: ${project.buildDate}
    note: ~
    html: ~
    text: ~
    security: ~
    fixes:
    - Fixed NPE when there are two repositories which only differ in case (pr-204, ticket-108)
    - Fixed api/manager download links in documentation (issue-449, ticket-111)
    - Fixed stackoverflow on (de)serialization of the history page (ticket-114)
    - Fixed queries for milestones with hyphentated names (ticket-115)
    - Fixed duplicate repositories on the dashboard (issue-454, ticket-117)
    - Fixed lower-case project selection (ticket-118)
    changes:
    - Update Korean translation (pr-206, ticket-120)
    - Improve web.canonicalUrl documentation (pr-205, ticket-121, issue-453)
    additions: ~
    dependencyChanges:
    - Jetty 9.2.1 (pr-202)
    - Lucene 4.8.1 (pr-201)
    - JGit 3.4.0 (pr-200)
    - Guice 4.0-beta4 (ticket-80)
    - SLF4j 1.7.7 (ticket-122)
    - gson 2.2.2 (ticket-123)
    - Freemarker 2.3.20 (ticket-124)
    contributors:
    - James Moger
    - David Ostrovsky
    - Kyle Gottfried
    - Yena Hong
    - Eric Fairon
    - Gareth Collins
}

#
# 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: ~
release: &r24
releases: &r[1..24]
