Latest release

GitPHP 0.2.9.1

@xiphux xiphux released this Dec 25, 2013 · 17 commits to master since this release

Fixes

  • Fixed a bug preventing GitPHP from running on versions of PHP earlier than 5.3.6. Thanks to Matthijs Kooijman.

Downloads

GitPHP 0.2.9

@xiphux xiphux released this Oct 20, 2013 · 20 commits to master since this release

Enhancements

  • GitPHP now supports basic user authentication! Projects can now be restricted to specific users, and can be either hidden or shown as disabled to unauthorized users. See the wiki page for more details.
  • The git icon in the upper right corner is removed
  • New option 'feedfilter' to filter commits matching a certain pattern out of RSS/Atom feeds
  • Display error messages up front if required filesystem functions are disabled in the PHP config
  • Fall back on gitweb.description config value for project description if gitphp.description isn’t set, thanks to Andy Wilkinson
  • Improved memory usage for projects with lots of large (eg binary) blobs
  • Improved performance of compatibility mode, thanks to Yuriy Nasretdinov/Badoo
  • Improved debug logging, thanks to Yuriy Nasretdinov/Badoo

Fixes

  • Fixed handling of certain config keys being treated as 'set’ when they were actually just empty
  • Validation fixes for RSS/Atom feeds
  • Decreased the number of commits loaded into feeds
  • Fix to UTF-8 display of blob contents, thanks to John Peterson
  • Fix to URL handling on PHP’s built-in webserver, thanks to till
  • Fix running GitPHP on a root domain (as opposed to a subdirectory) on Windows servers
  • Fix projects with special characters when running the git executable
  • Fix language switching with clean urls and GitPHP running on the root of the domain
  • Better handling of inconsistent packfiles (index files without an equivalent packfile)
  • Improved usage of http vs https when using Google Ajax for Jquery

Translations

  • Updated Turkish translation, thanks to Volkan Gezer
  • Italian translation, thanks to Marco Guerrini

Downloads

GitPHP 0.2.8

@xiphux xiphux released this Oct 12, 2012 · 92 commits to master since this release

Enhancements

  • A lot of the code has been refactored, with many of the very large classes being split up and more loosely coupled. This was done to assist with the following changes:
    • Classes are now autoloaded by PHP on demand rather than statically included. This should improve performance, as it means less code is loaded by PHP during each page load and only the code actually needed is loaded
    • GitPHP has begun to use unit testing to help eliminate bugs. Only a small part of the codebase is covered now, but code coverage will increase in the future
  • The config options for using a custom geshi and smarty have been removed. Since GitPHP comes with geshi and smarty now, these options are no longer necessary, and enforcing that the bundled geshi and smarty are used decreases the likelihood of compatibility issues
  • The objectcache has now been rewritten to write raw files directly instead of using Smarty. This was done for a few reasons:
    • Improve the performance of the objectcache, since Smarty does a lot of template-specific stuff that isn’t necessary for the objectcache
    • The objectcache can now compress large cached data on the fly to save space in the cache. A new option 'objectcachecompress' has been added to configure the threshold at which data will be compressed
    • The objectcache will now use Igbinary to serialize data to the objectcache if it’s available. Igbinary is significantly faster than php’s standard serializer
  • The cache directory has been organized into separate subdirectories for cached templates, objectcache data, and snapshots. This helps avoid interference between cache types when old cache is expired
    • It is strongly recommended that you remove everything in your cache/ directory from previous version installs, to avoid old cache files hanging around
  • Various other performance improvements
  • External links (clone url, push url, website) are tagged with rel="nofollow" to avoid spider indexing
  • Shorter URLs can now be generated using abbreviated hashes rather than full hashes
    • A new option 'abbreviateurl' has been added to enable this feature. Note that this may cause a decrease in performance, as GitPHP needs to do checking to ensure that an abbreviated hash is unique
  • GitPHP can now generate and use clean, REST-style URLs
    • A new option 'cleanurl' has been added to enable this feature. This requires some setup on your web server to rewrite these URLs; see the Clean URLs page for help
  • The following pages are now paginated (next/prev links), for projects with large amounts of data:
    • File history
    • Heads
    • Tags
  • GitPHP now transmits the content-type using an HTTP header rather than a meta tag, which allows the browser to start rendering pages earlier
  • Minification has been adjusted to reduce the number of different javascript files that need to be loaded
  • Project pages now expose rel=vcs-git links to allow auto discovery of git links. Thanks to Christian Weiske
  • More HTML5 improvements:
    • The lang attribute of the HTML document is set according to the locale
    • Dates and times (commit timestamps, age-style strings, etc) are now enclosed in a time element with attached datetime metadata
    • Search fields now use the search input type

Fixes

  • Fixed highlighting of directories during file search
  • Compresslevel setting is now respected for zips
  • Fix objectcache storage of blobs with special characters
  • Binary files are excluded from plaintext commitdiff
  • The git exe is now always used for loading the log. It’s generally faster and easier on webserver memory.
  • German translation fix, thanks to Wolfgang Rohdewald
  • Fix project description HTML escaping, thanks to Christian Weiske
  • Display error message when an invalid file path is specified in a URL
  • Fix tooltip widths to match better with git’s default message wrapping width

Downloads

GitPHP 0.2.7

@xiphux xiphux released this Jun 17, 2012 · 497 commits to master since this release

Enhancements

  • Diffing is now handled internally using PHP code, instead of calling to the diff executable. This eliminates the overhead of making the system call to the diff exe (which was extraordinarily bad on Windows in some setups). xdiff is still used if it is found.
    • The diffbin and gittmp configuration options have been removed, as they were purely for configuring the diff executable and are now useless
  • Website url has been updated to the new website!
  • GitPHP now validates properly as HTML5
  • Makefiles (files named 'Makefile’ specifically) will now be syntax highlighted by GeSHi
  • GitPHP’s memory management has been restructured to be friendlier on your web server’s memory usage, also bringing a few speed improvements especially for installs with lots of projects. Some notable improvements are:
    • Objects are flushed from memory between each project on the project list page, to avoid leaking memory with lots of projects
    • On project-specific pages, only the requested project is loaded, rather than reading all configured projects
    • GitPHP is better about clearing its global objects after the page is loaded
    • A new option 'objectmemory’ has been added, which lets you set a hard cap on the number of objects that will be kept in memory. Objects are evicted using an LRU algorithm. Note that this option has the potential to severely degrade performance if set too low. It’s suggested that this option only be used under drastic memory circumstances
  • Snapshot files now contain part of the hash to make it clearer which commit it’s a snapshot of
  • Enable Smarty’s merge_compiled_includes option, which merges subtemplates into parent templates during compile, which will speed up template execution.
    • To take advantage of this speedup, you should remove existing compiled templates in the templates_c directory when you upgrade. They will be rebuilt using this new option
  • Spanish translation, thanks to Emilio Lopez
  • Turkish translation, thanks to Hasan Kiran
  • Updated French translation, thanks to Tanguy Pruvot

Fixes

  • Fix issues when a project has a '+' in the name
  • Fix searching on Windows
  • Fix atom feed timestamps on Windows
  • Disable the trimwhitespace smarty filter, as it can crash on large pages and leave you with a blank page

Downloads

GitPHP 0.2.6

@xiphux xiphux released this Jan 28, 2012 · 602 commits to master since this release

Enhancements

  • Upgrade to Smarty 3. Some templates have been reorganized to take advantage of Smarty 3’s hierarchical template features
  • RequireJS is now used to serve javascript. RequireJS is a module loader that has allowed me to restructure the javascript code into clean reusable modules. My javascript code before was... let’s just say gross. Using RequireJS does have some other benefits too:
    • RequireJS loads modules asynchronously and in parallel. Many browsers still load javascript files from the web server one at a time, blocking each load until the previous one has finished loading. This improves page load time.
    • The RequireJS javascript minification process (which I do for all packaged releases) will combine all modules for a page and their dependencies into a single file before compression, which reduces the number of separate files the user’s browser has to load.
  • GitPHP can now read project-specific config options from the git config in the repository directory itself (e.g. gitphp.git/config), to allow project-specific settings to carry across multiple gitphp installations. This file can be edited directly or accessed using the 'git config’ command. The section is [gitphp], and the config values are each of the project specific settings currently supported in projects.conf.php. See the comments in projects.conf.php.example for more information. The project-specific config file will override global gitphp settings in gitphp.conf.php, but install-specific settings in projects.conf.php will override the project-specific config file.
  • GitPHP can now use the Google Libraries API to serve the jQuery library, by setting the 'googlejs’ config value. Using the Google Libraries API allows you to offload serving that library from your web server, and allows users to benefit from a single cached file for all sites using the Google Libraries API. The library is served from Google’s servers, which means this won’t work if you’re running on an intranet without outside internet access.
  • Signed-off-by lines in commit messages and PGP blocks in tags are styled differently to differentiate them from the actual commit/tag message
  • The shortlog now displays abbreviated hashes for each commit. The abbreviation length is read from the project’s git config file (core.abbrev setting), defaulting to 7. By default, abbreviated hashes are not checked for collisions. A gitphp config setting, 'uniqueabbrev’, has been added which will turn on collision checking when abbreviating hashes. Note that this is performance intensive because it needs to search every hash in the project, which is why it’s off by default. You might be better served just increasing the minimum abbreviation length.
  • Japanese translation, thanks to Ishikawa Mutsumi

Fixes

  • Fix a collision when multiple users were downloading an uncached version of the exact same snapshot at the exact same time
  • Fix direct line links on non-GeSHi blob pages, thanks to Steve Clay
  • Fix order of shortlog/log commits when a branch is rebased
  • Fix trimming of multibyte commit messages in shortlog, thanks to Ishikawa Mutsumi
  • Fix handling of git’s commit encoding header in commit messages
  • Fix handling of non-ASCII filenames in tree view. Based on a fix by sh2ka
  • Re-enable whitespace trimming to decrease the size of HTML files served. Was accidentally disabled during the big rewrite a year ago
  • Fix a potential XSS vulnerability

Downloads

GitPHP 0.2.5

@xiphux xiphux released this Aug 27, 2011 · 689 commits to master since this release

Enhancements

  • Move a lot of the data loading to using raw php file parsing instead of relying on the git executable. This causes an enormous performance boost, especially on webservers that have very expensive process forking (I’m looking at you Apache)
  • Add a 'compat’ config option that can be specified globally or per-project, to fall back on the old method of loading data if you run into issues with the previous enhancement. (PHP will not process repository packfiles larger than 2GB)
  • Add a 'largeskip’ config option. Using raw PHP data loading, we have to walk commits down the log as you page down earlier and earlier in the history, which has decreasing performance as you go back. This determines at what threshold gitphp will instead just use the git executable.
  • Display merge commits in the shortlog with grayed-out titles, thanks to Tanguy Pruvot
  • Subdirectory snapshots now include the subdirectory as part of the archive name
  • Support for the xdiff php extension . If you have the xdiff php extension installed, that will be used for diffing, which is faster and completely eliminates the need to have a separate diff executable or temp dir configured.
  • Support for loading the project list from an SCM-Manager config. Only projects marked public are loaded. Based on work done by Craig Sparks
  • Add debug info when searching directory for projects. If you aren’t seeing certain or any projects appear when letting GitPHP find all projects in the project root, turn on the 'debug’ config option to see more about what it’s doing.
  • Benchmarking info is now turned on separately from debug info, with a new config option 'benchmark’
  • Cache list of projects if the object cache is turned on, instead of searching the project root every time. Based on work done by Tanguy Pruvot
  • Archives are now delivered incrementally to the user’s browser, instead of being loaded entirely into memory first. This avoids PHP out-of-memory errors when trying to snapshot a very large project. Note: as a result of this change, snapshot tarballs are no longer cached to Memcache, even if Memcache support is turned on. They will always be cached to the cache directory on disk.
  • Minify CSS for performance
  • Support tags pointing directly to blobs. This isn’t commonly done but can be used to embed something like a GPG key in a repository
  • Allow displaying a website URL for a project. Because this can’t really be automatically calculated the way clone/push urls can, this is a per-project setting only.

Fixes

  • Fixed how the default diff executable is determined if not specified in the config
  • Fixed issues diffing when the temp dir had spaces in the name (common on Windows)
  • Fixed issues diffing on windows when the temp dir didn’t have a trailing backslash
  • Avoid floods of warning messages when the fileinfo magic database is incorrectly compiled
  • Avoid warning messages when the project doesn’t have a description file. (sometimes happens with repositories created by third party software other than the standard git program)
  • Fixed some display issues on the project list with owner/age/links columns wrapping too much when the project has an extremely long description
  • Avoid warning messages when listing all projects in the projectroot and the webserver user doesn’t have read access to one of the directories. Based on a fix by Justyn Shull
  • Fixed issue where using the diff link by a single file on the commit page showed the wrong commit at the top of the diff

Downloads

GitPHP 0.2.4

@xiphux xiphux released this Jun 25, 2011 · 767 commits to master since this release

  • Chinese translation - thanks to seefan
  • Side-by-side diffs for blobdiff and commitdiff - based on work by Mattias Ulbrich and Tanguy Pruvot
  • Fix clone and push urls using ssh colon notation - thanks to mdevilz
  • Allow specifying hashbases by branch/tag name in URLs
  • Fix crash in blobdiff_plain when specifying hashbase without a hash

Downloads

GitPHP 0.2.3

@xiphux xiphux released this Feb 25, 2011 · 797 commits to master since this release

  • Degrade gracefully when the system doesn’t have posix functions
  • Make the language setting a permanent cookie
  • Escape HTML in the title header
  • Add attribution and link back to GitPHP page in the footer
  • Run javascript project livesearch after the user stops typing
  • Remove containing tag from object cache
  • Improve performance of projects with lots of tags or heads
  • Clean up stylesheets

Downloads

GitPHP 0.2.2

@xiphux xiphux released this Dec 12, 2010 · 814 commits to master since this release

Enhancements

  • Atom feed support, thanks to Christian Weiske
  • Error pages now return proper HTTP error codes to avoid search engine indexing
  • Users can now choose the file format of snapshot they want, based on what’s supported by the system. The config value still controls the default for non-javascript users.
  • Directories in the config file no longer require you to specify the trailing slash
  • Overriding project settings (category, owner, description, clone url, etc) can now be done for all project listing methods - directory list, file list, and array list. Previously it could only be done with the array
  • The tree view can now be drilled down using AJAX
  • Memcache support
  • Support for linking bug numbers in commit messages to a bug tracker
  • Search box to search projects on the project list. This is a live search if you have javascript
  • Object cache, for caching immutable git data
  • Javascript is now minified to decrease its size
  • Clone/push urls on the project page are now links, thanks to Cory Thomas
  • Project owners are now read from the git config value gitweb.owner if set; thanks to Cory Thomas

Translations

  • Russian, thanks to Aidsoid
  • German, thanks to Andy Tandler

Fixes

  • Fix issue where commit tooltips didn’t escape HTML characters correctly
  • Project ages on the project list page now use a more accurate method to get the age
  • The default tmpdir, if not specified in the config, is read from the system/php config rather than hardcoding it. This also fixes an issue where the default tmpdir for windows was incorrect
  • Fix the default git binary for windows x64 installs
  • An error message now displays when the diff/git executable isn’t found or doesn’t work, rather than just failing silently

Downloads

GitPHP 0.2.1

@xiphux xiphux released this Oct 9, 2010 · 910 commits to master since this release

  • GitPHP now uses gettext for internationalization. I’ve also provided a short howto in doc/TRANSLATING
  • Language can now be changed on the fly by the user using a drop-down menu in the upper right. The initial default for this is the user’s preferred language from their browser. If there is no translation for the user’s language, it will fall back to the locale in the config, then to English as the final default. But of course, the user can always change the language whenever they want. The user’s language choice is remembered by a browser cookie.
  • French translation, thanks to Zaran
  • On the log and shortlog pages, arbitrary diffs can be selected and diffed. You can select one commit, then diff with any other. Your selected diff will persist across pages, in case you want to diff between two different pages. The selected diff, if there is one, will appear in the top header, above the log/shortlog. This selection will also persist when switching from the shortlog to the log and vice versa.
  • New pieces of metadata can now be specified for a project using the advanced project array format (in projects.conf.php): description, owner, clone url, and push url. Specifying any of these for a project will override that data for that project only.
  • Tree view and commit view now provide a "plain" link by blobs to go right to the plaintext view of that blob
  • Added a file history link to the blob page
  • To make things a little easier to track, the home text template that configures the header of the project list (templates/hometext.tpl) is no longer provided in the tarball. The system will show the default hometext, but you can create templates/hometext.tpl with your content to customize the header. Therefore, this is backwards compatible for everyone who already has a customized hometext.tpl template.
  • The "projects" link in the upper left that takes you to the main project list can be customized. Please be advised that if you override this, you’re also hardcoding the language that it appears in.
  • Fixed a bug where search wouldn’t work on git < 1.5.3
  • Fixed a bug where some dates wouldn’t show up correctly on windows
  • Fixed a bug where an exception would be thrown if no config file existed
  • Fixed bugs where GitPHP would crash when an empty project with no commits was being loaded
  • Fixed a bug in reading projects from a list file, where owners with multiple words in the name would only display the first word
  • Fixed a bug on the commit page, where the history link by a deleted file wouldn’t work
  • Fixed a bug where the javascript commit tooltip would appear out of the browser window for a commit close to the bottom of the page
  • XHTML validation fixes, thanks to Christian Weiske
  • Minor visual fix where source files in commit diffs were missing the "a/" prefix (but destinations files still had the "b/" prefix)

Downloads