New Features

  • Add cache for tag advertisements

    When READ level access controls are used on references/branches, this cache provides a massive performance boost. On some repositories, no-op Git client requests can go from 7.910s to 0.550s. Since all of the time reduction is server CPU, this is a major performance improvement for busy servers.

  • Substantially speed up pushing changes for review

    Pushing changes to big projects was very slow, for similar issues as the READ level access controls. Push checks have been improved, reducing the amount of server CPU required to validate a push for review is connected to the branch its intended for.

  • Avoid costly findMergedInto during push to refs/for/*

    Checking to see if a new commit uploaded for review has already been merged into a branch turns out to be expensive, and not very useful. Since the commit is brand new to the server, it cannot possibly ever have been merged. Skip the merge check to get a major performance improvement on upload to big projects.

  • Allow serving static files in subdirectories

    The /static/ subdirectory can now serve static files contained within subdirectories. This change also patches the code to perform better checks to ensure the requested URL is actually in the subdirectory. These additional checks are only relevant on Windows servers, where MS-DOS compatibility may have permitted access to special device files in any directory, rather than just the "\\.\" device namespace.

Bug Fixes

  • issue 518 Fix MySQL counter resets

    MySQL databases lost their change_id, account_id counters after server restarts, causing duplicate key insertion errors. Fixed.

  • issue 1019 Normalize OpenID URLs with http:// prefix

    OpenID standards require sites to add "http://" to an OpenID identifier if the user did not enter it themselves.

  • Ignore PartialResultException from LDAP.

    Instead of crashing with an exception, partial results are ignored when configured to be ignored.