#
# ${project.version} release
#
r30: {
    title: ${project.name} ${project.version} released
    id: ${project.version}
    date: ${project.buildDate}
    note: ~
    html: ~
    text: ~
    security: ~
    fixes: ~
    changes: ~
    additions: ~
    dependencyChanges: ~
    contributors: ~
}

#
# 1.8.0 release
#
r29: {
    title: Gitblit 1.8.0 released
    id: 1.8.0
    date: 2016-06-22
    note: ~
    html: ~
    text: ~
    security:
    - Fixed bug in My Tickets which would expose ticket metadata (title, type, etc) for private repos. (pr-1040)
    fixes:    
    - Fix HTML5 date input support (pr-982)
    - Honor disable ticket repository setting (pr-1045)
    - Fix paging on filestore items (pr-1070)
    - Fix redirects on session loss (pr-1087)
    - Fix always searching all repositories (pr-1060)
    - Fix RPC list branches for requests without admin powers (pr-994)
    - Fix baseURL handling when generating urls (pr-1086)
    - Fix my tickets ignoring repo read permissions (pr-1040)
    - Fix bug where jgit.packedGitOpenFiles was not properly set (pr-1049)
    - Fix encoding of JavaDoc
    changes:
    - Sort filestore by most recent first (pr-1061)
    - Improve the document editor tablet support (pr-1062)
    - Improve HTTP header authentication (pr-980)
    - Improve authentication logging (pr-981)
    - Improve logic of handling dot files in the raw servlet (pr-983)
    - Change Jenkins Groovy script to support any protocol (pr-986)
    - Remove empty catch blocks swallowing exceptions during authentication (pr-979)
    - Various documentation improvements
    additions:
    - Delete patchset feature (pr-1039)
    - Support ticket references from tickets and commits on other branches (pr-1048)
    - YouTrack Groovy push hook (pr-1084)
    dependencyChanges:    
    - Prosemirror 0.6.1
    
    contributors:
    - Paul Martin
    - James Moger
    - dsteinkopf
    - mereth
    - metasim
    - stummb
    - RedShift1
    - dbywalec
    - mrjoel
    - yyjdelete
    - rgroux
    - pingunaut
}

#
# 1.7.1 release
#
r28: {
    title: Gitblit 1.7.1 released
    id: 1.7.1
    date: 2015-11-23
    note: This is a re-build of 1.7.0 with a fix for failed WAR deployments.
    html: ~
    text: ~
    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 permissions when editing a user (issue-462, ticket-214)
    - Whitelist the target link attribute in the XSS filter (ticket-216)    
    - Strip line breaks from pasted SSH keys (ticket-245)
    - Fix project sorting (pr-287)
    - Fix Lucene indexing of tags (pr-291)
    - Prevent session fixation for external authentication (pr-908)
    - Encode email subject as UTF-8 (pr-929)
    - Do not automatically trim passwords (pr-932)
    - Fix nested repository detection in raw servlet (pr-950)
    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)
    - Relocate the repository Delete button (ticket-225)
    - Improve diff performance by gracefully limiting large diffs (pr-226)
    - Add granular settings to disable display of git transport urls (pr-274)
    - Use author date to be consistent with other tools (pr-919)
    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)
    - Add commitdiff option to ignore whitespace (ticket-233)
    - Add configurable tab length for blob views (ticket-253)
    - Implement image diffs (pr-229)
    - Add support for configurable HTTP proxy host/port in PluginManager (pr-235)
    - Implement collapsed empty folder navigation (pr-241)
    - Implement hashing to detect usermodel changes and reduce users.conf file I/O (pr-246)
    - Add support for Kerberos5/GSS authentication to SSH (pr-254)
    - Allow extraction of additional user metadata in request headers when using external or container authentication (pr-255)
    - Allow custom host & port specification for advertised SSH urls (pr-268)
    - Improve logging for fail2ban usage (pr-296)
    - Initial implementation of Git-LFS (pr-921)
    - Add "all" repositories parameter to Search page (pr-935)
    dependencyChanges:
    - Guice 4.0 (ticket-80, ticket-219)
    - SLF4j 1.7.12
    - gson 2.3.1
    - Freemarker 2.3.22
    - Lucene 4.10.0 (ticket-159)
    - SSHD 1.0.0
    - JGit 4.1.1
    - Groovy 2.4.4
    - Wicket 1.4.22
    - BouncyCastle 1.52
    - Pegdown 1.5.0
    - Jetty 9.2.13
    settings:
    - { name: web.displayUserPanel, defaultValue: 'true' }
    - { name: web.tabLength, defaultValue: 4 }
    - { name: web.avatarClass, defaultValue: '' }
    - { name: web.showHttpServletUrls, defaultValue: 'true' }
    - { name: web.showGitDaemonUrls, defaultValue: 'true' }
    - { name: web.showSshDaemonUrls, defaultValue: 'true' }
    - { name: web.advertiseAccessPermissionForOtherUrls, defaultValue: 'false' }
    - { name: web.maxDiffLinesPerFile, defaultValue: '4000' }
    - { name: web.maxDiffLines, defaultValue: '20000' }
    - { name: ssh.advertisedHost, defaultValue: '' }
    - { name: ssh.advertisedPort, defaultValue: '' }
    - { name: git.sshWithKrb5, defaultValue: '' }
    - { name: git.sshKrb5Keytab, defaultValue: '' }
    - { name: git.sshKrb5ServicePrincipalName, defaultValue: '' }
    - { name: git.sshKrb5StripDomain, defaultValue: 'true' }
    - { name: filestore.storageFolder, defaultValue: '${baseFolder}/lfs' }
    - { name: filestore.maxUploadSize, defaultValue: '-1' }
    - { name: plugins.httpProxyHost, defaultValue: '' }
    - { name: plugins.httpProxyPort, defaultValue: '' }
    - { name: plugins.httpProxyAuthorization, defaultValue: '' }
    - { name: realm.container.autoAccounts.displayName, defaultValue: '' }
    - { name: realm.container.autoAccounts.emailAddress, defaultValue: '' }
    - { name: realm.container.autoAccounts.locale, defaultValue: '' }
    - { name: realm.container.autoAccounts.adminRole, defaultValue: '' }
    
    contributors:
    - James Moger
    - David Ostrovsky
    - Alex Lewis
    - Florian Zschocke
    - Paul Martin
    - razzard
    - Alexander Zabluda
    - Marcin Cieślak
    - Rainer W
    - Vitaliy Filippov
    - willyann
    - enrico204
    - mrjoel
    - Fabrice Bacchella
    - Milos Cubrilo
    - Thomas Wolf
    - Morten Bøgeskov
    - Steven Oliver
    - Dariusz Bywalec
    - Jan Šmucr
}

#
# 1.7.0 release
#
r27: {
    title: Gitblit 1.7.0 released
    id: 1.7.0
    date: 2015-11-22
    note: ~
    html: ~
    text: ~
    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 permissions when editing a user (issue-462, ticket-214)
    - Whitelist the target link attribute in the XSS filter (ticket-216)    
    - Strip line breaks from pasted SSH keys (ticket-245)
    - Fix project sorting (pr-287)
    - Fix Lucene indexing of tags (pr-291)
    - Prevent session fixation for external authentication (pr-908)
    - Encode email subject as UTF-8 (pr-929)
    - Do not automatically trim passwords (pr-932)
    - Fix nested repository detection in raw servlet (pr-950)
    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)
    - Relocate the repository Delete button (ticket-225)
    - Improve diff performance by gracefully limiting large diffs (pr-226)
    - Add granular settings to disable display of git transport urls (pr-274)
    - Use author date to be consistent with other tools (pr-919)
    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)
    - Add commitdiff option to ignore whitespace (ticket-233)
    - Add configurable tab length for blob views (ticket-253)
    - Implement image diffs (pr-229)
    - Add support for configurable HTTP proxy host/port in PluginManager (pr-235)
    - Implement collapsed empty folder navigation (pr-241)
    - Implement hashing to detect usermodel changes and reduce users.conf file I/O (pr-246)
    - Add support for Kerberos5/GSS authentication to SSH (pr-254)
    - Allow extraction of additional user metadata in request headers when using external or container authentication (pr-255)
    - Allow custom host & port specification for advertised SSH urls (pr-268)
    - Improve logging for fail2ban usage (pr-296)
    - Initial implementation of Git-LFS (pr-921)
    - Add "all" repositories parameter to Search page (pr-935)
    dependencyChanges:
    - Guice 4.0 (ticket-80, ticket-219)
    - SLF4j 1.7.12
    - gson 2.3.1
    - Freemarker 2.3.22
    - Lucene 4.10.0 (ticket-159)
    - SSHD 1.0.0
    - JGit 4.1.1
    - Groovy 2.4.4
    - Wicket 1.4.22
    - BouncyCastle 1.52
    - Pegdown 1.5.0
    - Jetty 9.2.13
    settings:
    - { name: web.displayUserPanel, defaultValue: 'true' }
    - { name: web.tabLength, defaultValue: 4 }
    - { name: web.avatarClass, defaultValue: '' }
    - { name: web.showHttpServletUrls, defaultValue: 'true' }
    - { name: web.showGitDaemonUrls, defaultValue: 'true' }
    - { name: web.showSshDaemonUrls, defaultValue: 'true' }
    - { name: web.advertiseAccessPermissionForOtherUrls, defaultValue: 'false' }
    - { name: web.maxDiffLinesPerFile, defaultValue: '4000' }
    - { name: web.maxDiffLines, defaultValue: '20000' }
    - { name: ssh.advertisedHost, defaultValue: '' }
    - { name: ssh.advertisedPort, defaultValue: '' }
    - { name: git.sshWithKrb5, defaultValue: '' }
    - { name: git.sshKrb5Keytab, defaultValue: '' }
    - { name: git.sshKrb5ServicePrincipalName, defaultValue: '' }
    - { name: git.sshKrb5StripDomain, defaultValue: 'true' }
    - { name: filestore.storageFolder, defaultValue: '${baseFolder}/lfs' }
    - { name: filestore.maxUploadSize, defaultValue: '-1' }
    - { name: plugins.httpProxyHost, defaultValue: '' }
    - { name: plugins.httpProxyPort, defaultValue: '' }
    - { name: plugins.httpProxyAuthorization, defaultValue: '' }
    - { name: realm.container.autoAccounts.displayName, defaultValue: '' }
    - { name: realm.container.autoAccounts.emailAddress, defaultValue: '' }
    - { name: realm.container.autoAccounts.locale, defaultValue: '' }
    - { name: realm.container.autoAccounts.adminRole, defaultValue: '' }
    
    contributors:
    - James Moger
    - David Ostrovsky
    - Alex Lewis
    - Florian Zschocke
    - Paul Martin
    - razzard
    - Alexander Zabluda
    - Marcin Cieślak
    - Rainer W
    - Vitaliy Filippov
    - willyann
    - enrico204
    - mrjoel
    - Fabrice Bacchella
    - Milos Cubrilo
    - Thomas Wolf
    - Morten Bøgeskov
    - Steven Oliver
    - Dariusz Bywalec
    - Jan Šmucr
}

#
# 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: &r30
release: &r29
releases: &r[1..29]
