GitPHP 0.2.3
I've released GitPHP 0.2.3. Unfortunately I've had a pretty busy couple months at work, so I didn't really get to any of the enhancements that I intended to get to this release. 0.2.3 has several bugfixes that I wanted to get out, rather than delaying the release and making you wait for them.
- Degrade gracefully when the system doesn't have posix functions: Previously there was a bug where the page crashed when trying to display the project owner on systems without the php posix module installed (windows systems, and several linux distributions). If you don't have this module then the owner still won't display unless you set the gitweb.owner config value or override it in projects.conf.php, but at least the page won't stop rendering it.
- Make the language setting a permanent cookie: Previously, the language cookie was a session cookie, so when you came back to the site you had to change your language again. Now it's a permanent cookie with a 1 year expiration.
- Escape HTML in the title header: Previously, commit messages weren't escaped in the title bar (the gray bar with the commit message at the top of the page, below the nav), so commit messages with HTML in them caused weird things to happen. Now the HTML displays properly
- Add attribution and link back to GitPHP page in the footer: This is by request, I swear. If you don't like it, I don't mind if you delete it from the footer and go back to the old appearance.
- Run javascript project livesearch after the user stops typing: Previously the javascript livesearch on the project list ran after every letter you typed. This caused a severe performance hit on larger project lists, since the browser would churn through the huge list of projects many times in succession. Now it runs after the user stops typing.
- Remove containing tag from object cache: Previously an object's containing tag was stored in the object cache. The containing tag is actually not immutable data, and so there are certain cases where caching this would cause the display to get out of sync. Now, this is no longer cached. I would suggest clearing your cache after upgrading to be safe.
- Improve performance of projects with lots of tags or heads: Previously there was a severe performance problem with projects with many tags or heads (hundreds). This was because it was attempting to load all tags and all their data into memory. For example, the git repo for the git program has almost 400 tags, and took almost 2 minutes to load any page. Now, it only loads the data for the tags it needs so it's a lot better.
- Clean up stylesheets: Previously the stylesheet was a mess and was really difficult to read. I've cleaned it up, organized it, and broken it out into two separate stylesheets - a functional stylesheet (gitphp.css) which contains declarations needed for gitphp to layout and work properly, and a look and feel stylesheet (gitphpskin.css) which customizes the colors and styling. The stylesheet config option now controls the location of the skin stylesheet - so you can make a copy, customize the look and feel, and point the stylesheet config option at the new skin stylesheet. The config option has backwards compatibility to handle the fact that the stylesheet name changed but people may have the option pointing at the old single stylesheet from previous example configs.
Comments