9 years agoSmarter way of getting project age for caching and display
Chris Han []
Smarter way of getting project age for caching and display

9 years agoDocument objectcache option
Chris Han []
Document objectcache option

9 years agoSet a reasonable default for object cache, also use -1 for never expire to keep consistent with current cachelifetime config option
Chris Han []
Set a reasonable default for object cache, also use -1 for never expire to keep consistent with current cachelifetime config option

9 years agoCache tree object
Chris Han []
Cache tree object

9 years agoStart caching blob object (currently only blob file contents)
Chris Han []
Start caching blob object (currently only blob file contents)

9 years agoForgot to remove parent member variable after removing get/set
Chris Han []
Forgot to remove parent member variable after removing get/set

9 years agoRemove the in-memory tree and blob cache
Chris Han []
Remove the in-memory tree and blob cache

Tree and blob objects can't be reliably cached in-memory during runtime
because trees and blobs are hashes of their content, but the objects
also contain info such as parent commit and filename - something not
inherently tied to a blob hash. If the same blob or tree is used in two
different places for two different paths and loaded from the cache, the
second time will carry over the path and commit from the first, which is
incorrect data.
When these objects are enabled for the object cache, they'll have
fine-grained control over their serialization, so we can skip data like
these fields that shouldn't carry over to multiple instances.

9 years agoDon't completely replace parent GetHash, override and call base
Chris Han []
Don't completely replace parent GetHash, override and call base

9 years agoParent pointer for filesystem objects isn't actually used
Chris Han []
Parent pointer for filesystem objects isn't actually used

9 years agoObject cache support for tags
Chris Han []
Object cache support for tags

Also improves performance by not requiring the entire tag list to be
loaded if a single tag object is needed. The full list is loaded if all
tags are needed (and it doesn't reload already loaded tags).

9 years agoGive object cache its own lifetime in case you want to use a longer lifetime for it
Chris Han []
Give object cache its own lifetime in case you want to use a longer lifetime for it

9 years agoImplement object caching for commits
Chris Han []
Implement object caching for commits

I bent the serialization rules a little here. Git commit objects store
pointers to various other objects - other parent commits, the project,
the tree, etc. These references would be lost upon serialization.
Therefore, in the __sleep magic method to prepare for serialization, I
"reference" each object - I turn the object into a string identifier
that can be used to retrieve the object again later (for commits and
trees the hash, for the project the name, etc).
But the problem is that I can't "dereference" these objects in the
equivalent __wakeup method - if the commit points to the tree and the
tree points to the commit, then when you try to deserialize the commit
it'll try to deserialize the tree, which will then try to deserialize
the commit... which is an infinite loop.
Therefore, now these references actually remain in the object and are
just-in-time dereferenced when you want to actually access that
referenced object (using a getter). This also has the advantage of
easing the processing when loading from the cache, so that all the
object references aren't resolved at once, they're only resolved when
you need them.

9 years agoStart adding object cache class - framework for enhancement #39
Chris Han []
Start adding object cache class - framework for enhancement #39

9 years agoMerge branches 'projectsearch' and 'master'
Chris Han []
Merge branches 'projectsearch' and 'master'

9 years agoMake live project search case insensitive
Chris Han []
Make live project search case insensitive

9 years agoExtract strings
Chris Han []
Extract strings

9 years agoShow a message when no matching projects are found
Chris Han []
Show a message when no matching projects are found

9 years agoInitial implementation of javascript live project search
Chris Han []
Initial implementation of javascript live project search

9 years agoAdd search box to filter projects on the front project list page
Chris Han []
Add search box to filter projects on the front project list page

Enhancement #17

9 years agoSmarty's escape is too aggressive, the single quote escape is interfering with the example bug pattern
Chris Han []
Smarty's escape is too aggressive, the single quote escape is interfering with the example bug pattern

9 years agoAllow bug pattern/url to be overridden on a per-project basis
Chris Han []
Allow bug pattern/url to be overridden on a per-project basis

9 years agoDocument bug url config options
Chris Han []
Document bug url config options

9 years agoAlso put links on tag page
Chris Han []
Also put links on tag page

9 years agoBug linking support
Chris Han []
Bug linking support

This allows specification of a regex and url to find bug references in
commit messages, and allows them to be linked to an external bug
tracker. Currently this is just a very basic regex find and replace,
there's no advanced logic such as finding patterns that span lines, or
other preprocessing.
Currently this also only display in places where the full message text
is shown, and is not a link - the commit page, the commitdiff page, and
the log page. In the various other places where commit messages may be
shown (shortlog, headers, summary, etc), the message text is already a
link to the commit itself. Putting a link inside a link is weird
usability wise since that's not the way the user is expecting things to
behave.

Enhancement request #43

9 years agoExtract memcache error string
Chris Han []
Extract memcache error string

9 years agoFix expiration by age
Chris Han []
Fix expiration by age

9 years agoNote memcache requirements in config file
Chris Han []
Note memcache requirements in config file

9 years agoDocument memcache config option
Chris Han []
Document memcache config option

9 years agoAdd memcache cache handler function
Chris Han []
Add memcache cache handler function

There is an existing smarty memcache cache handler function out there,
however examples I've seen out there are incomplete in that they only
support evicting items from the cache using an exact key. However,
GitPHP takes advantage of some of the more advanced cache expiration
features of smarty, such as using cache groups and expiration based on
cache age.
Therefore this is an implementation done by me from scratch to support
these extra cache expiration mechanisms. Memcache doesn't inherently
support things like iterating over stored keys and getting the age of
a stored item. Therefore, I'm using a hack, where I maintain a mapping
table of stored keys and cache ages in a fixed key, and update that key
manually and use it for cache group or age expiration.
This also provides a memcache wrapper class to be able to transparently
support both the PECL Memcache and PECL Memcached extensions using the
same functions.

9 years agoMove tree loading spinner back to the right side of the tree link where it's supposed to be
Chris Han []
Move tree loading spinner back to the right side of the tree link where it's supposed to be

9 years agoOnly use expander indicators to drill down in tree
Chris Han []
Only use expander indicators to drill down in tree

9 years agoClean up tree JS a little
Chris Han []
Clean up tree JS a little

9 years agoPut top-level expander a little closer to the file name
Chris Han []
Put top-level expander a little closer to the file name

9 years agoIndent the expanders for nested folders
Chris Han []
Indent the expanders for nested folders

9 years agoStore depth as data
Chris Han []
Store depth as data

9 years agoMake expander indicator also a link to expand
Chris Han []
Make expander indicator also a link to expand

9 years agoRemember expansion state of subtrees when collapsing/expanding a tree
Chris Han []
Remember expansion state of subtrees when collapsing/expanding a tree

9 years agoMake sure expand indicator is correct for trees not loaded yet
Chris Han []
Make sure expand indicator is correct for trees not loaded yet

9 years agoAdd preliminary expander indicator (just text for now)
Chris Han []
Add preliminary expander indicator (just text for now)

9 years agoAdd loading spinner for tree
Chris Han []
Add loading spinner for tree

9 years agoRework js tree drilldown to just directly insert new rows instead of using nested tables, to fix issues with uneven table widths
Chris Han []
Rework js tree drilldown to just directly insert new rows instead of using nested tables, to fix issues with uneven table widths

9 years agoInitial implementation of javascript drilldown tree
Chris Han []
Initial implementation of javascript drilldown tree

9 years agoBreak tree list template out from main tree template
Chris Han []
Break tree list template out from main tree template

9 years agoOnly apply settings for non-legacy array
Chris Han []
Only apply settings for non-legacy array

9 years agoAdd project settings option to override individual settings for any project, regardless of the project list method used. Also use settings as terminology instead of override
Chris Han []
Add project settings option to override individual settings for any project, regardless of the project list method used. Also use settings as terminology instead of override

9 years agoMove project overriding into a function on the shared project list base
Chris Han []
Move project overriding into a function on the shared project list base

9 years agoIndex projects by their path in the project list object to make them easier to find
Chris Han []
Index projects by their path in the project list object to make them easier to find

9 years agoProject list expiration was using the wrong cache key
Chris Han []
Project list expiration was using the wrong cache key

9 years agoDon't require trailing slash for self url
Chris Han []
Don't require trailing slash for self url

9 years agoDon't require trailing slash for smarty/geshi includes
Chris Han []
Don't require trailing slash for smarty/geshi includes

9 years agoDon't require trailing slash for temp dir
Chris Han []
Don't require trailing slash for temp dir

9 years agoMove the code to add a slash into one place
Chris Han []
Move the code to add a slash into one place

9 years agoDon't require trailing slash for clone/push urls
Chris Han []
Don't require trailing slash for clone/push urls

9 years agoDon't require trailing slash for projectroot
Chris Han []
Don't require trailing slash for projectroot

9 years agoFix javascript reference to old tooltip function
Chris Han []
Fix javascript reference to old tooltip function

9 years agoAdd snapshot tooltip class to the rest of the snapshot links
Chris Han []
Add snapshot tooltip class to the rest of the snapshot links

9 years agoOrganize tooltip javascript a little better
Chris Han []
Organize tooltip javascript a little better

9 years agoAdd snapshot format selection popup
Chris Han []
Add snapshot format selection popup

9 years agoAdd static format functions to archiver
Chris Han []
Add static format functions to archiver

9 years agoAdd a parameter to the snapshot controller to request a specific snapshot format
Chris Han []
Add a parameter to the snapshot controller to request a specific snapshot format

9 years agoChange integer compression format constants to strings internally
Chris Han []
Change integer compression format constants to strings internally

9 years agoMake archiver into its own class
Chris Han []
Make archiver into its own class

This moves all archiver functions into a class to wrap around a commit.
This makes it a lot easier to share code, so we don't have to repeatedly
test everywhere if the gzip and bzip2 functions exist, and the
controller doesn't have to worry about things like compressing data.
Plus it gives a central place to add additional archiving related
functions.

9 years agoReturn HTTP 500 on configuration error
Chris Han []
Return HTTP 500 on configuration error

9 years agoAllow message exception to signal message controller to return an HTTP status code
Chris Han []
Allow message exception to signal message controller to return an HTTP status code

9 years agoExtract atom strings
Chris Han []
Extract atom strings

9 years agoPrevent a crash on an atom feed for an empty project
Chris Han []
Prevent a crash on an atom feed for an empty project

9 years agoCapitalize Atom
Chris Han []
Capitalize Atom

9 years agoSince we support both, no reason we can't provide both an rss and an atom button
Chris Han []
Since we support both, no reason we can't provide both an rss and an atom button

9 years agoMerge atom and rss controllers
Chris Han []
Merge atom and rss controllers

9 years agoadd support for atom feeds
Christian Weiske []
add support for atom feeds

9 years agoNo need to pull the projectroot from the config again in the project directory lister
Chris Han []
No need to pull the projectroot from the config again in the project directory lister

9 years agoHTML escape commit tooltip
Chris Han []
HTML escape commit tooltip

9 years agoBump version to 0.2.1
Chris Han []
Bump version to 0.2.1

9 years agoReadd a/ to source files in commit diffs
Chris Han []
Readd a/ to source files in commit diffs

9 years agoUpdate xgettext script to pull from function wrappers
Chris Han []
Update xgettext script to pull from function wrappers

9 years agoUse translation wrapper functions
Chris Han []
Use translation wrapper functions

9 years agoAdd "alias" wrappers for gettext functions
Chris Han []
Add "alias" wrappers for gettext functions

9 years agoMake sure to html escape commit messages
Chris Han []
Make sure to html escape commit messages

9 years agomake commit page valid
Christian Weiske []
make commit page valid

9 years agomake xhtml valid when the commit message contains quotes
Christian Weiske []
make xhtml valid when the commit message contains quotes

Signed-off-by: Chris Han <xiphux@gmail.com>

9 years agomake most pages xhtml valid by fixing xml header spacing and url parameters
Christian Weiske []
make most pages xhtml valid by fixing xml header spacing and url parameters

Signed-off-by: Chris Han <xiphux@gmail.com>

9 years agoproject list page is now valid xhtml
Christian Weiske []
project list page is now valid xhtml

Signed-off-by: Chris Han <xiphux@gmail.com>

9 years agoHave qtip adjust tooltips to fit in screen
Chris Han []
Have qtip adjust tooltips to fit in screen

9 years agoMsginit instead of copy in translation doc
Chris Han []
Msginit instead of copy in translation doc

9 years agoAdd translation document
Chris Han []
Add translation document

9 years agoUpdate gibberish translation
Chris Han []
Update gibberish translation

9 years agoOnly show locale if no locale to language mapping is set
Chris Han []
Only show locale if no locale to language mapping is set

9 years agoFrench translation adjustments
Zaran []
French translation adjustments

Signed-off-by: Chris Han <xiphux@gmail.com>

9 years agoFix history link on commit page for deleted files
Chris Han []
Fix history link on commit page for deleted files

9 years agoAdd plain links to commit page
Chris Han []
Add plain links to commit page

9 years agoNo longer necessary to provide the resource object to the template
Chris Han []
No longer necessary to provide the resource object to the template

9 years agoFix the way HTTP_ACCEPT_LANGUAGE is parsed
Chris Han []
Fix the way HTTP_ACCEPT_LANGUAGE is parsed

9 years agoExtract language selector strings
Chris Han []
Extract language selector strings

9 years agoOn the user's first visit, default language from HTTP_ACCEPT_LANGUAGE
Chris Han []
On the user's first visit, default language from HTTP_ACCEPT_LANGUAGE

On the very first visit when no language preference cookie is set,
attempt to guess what the user wants from their HTTP_ACCEPT_LANGUAGE
setting from their browser. (Their OS language)
This will attempt to match the preferences in the order they're
specified by the browser, which should be the user's order of
preference.
For full language + country code preferences (eg en_US) it
will attempt to match the whole thing. For just language preferences
(eg en) it will match the first locale with that same language code.

9 years agoHide gibberish locale if not in debug mode
Chris Han []
Hide gibberish locale if not in debug mode

9 years agoShow the locale with the language
Chris Han []
Show the locale with the language

9 years agoDon't send duplicate l= values
Chris Han []
Don't send duplicate l= values

9 years agoAllow user to change language without explicitly clicking "Set"
Chris Han []
Allow user to change language without explicitly clicking "Set"

This uses javascript to submit the form as soon as the user changes the
language selection box, rather than having to also click "Set". It
removes the Set button also. Since this is done in the jQuery ready
event, there is a bit of time while the page is loading where the
onchange won't work and the set button will still be visible, then it'll
"disappear" when the page finishes loading. There's no good way around
that though if we want the page to degrade properly without javascript.

9 years agoAdd menu for users to switch their language
Chris Han []
Add menu for users to switch their language

I want to present the language in the user's native language... however
there's no built-in way to translate, say, en_US to 'English', so I had
to provide a switch case mapping.

9 years agoSince the language can be independent of the config now, it needs to be a part of the cache key
Chris Han []
Since the language can be independent of the config now, it needs to be a part of the cache key

comments