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
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
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.
Allow user to change language without explicitly clicking "Set"
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
This only adds the GET variable to do the switch, the UI option isn't
This parsing needs to be done really early because we need to do the
language switch/load before anything else happens... however I really
don't like parsing get variables so early in the index like this because
it's breaking the controller scheme that everything else uses. I may
not be able to get around that, but I'd at least like to clean it up and
maybe move this code out of the index into a function or something.
Allow setting owner, description, clone/push url metadata in the project array
This adds four new keys to the project array metadata:
'owner': overrides the owner of the project
'description': overrides the description of the project
'cloneurl': overrides the clone url of the project, can be an empty
string to explicitly remove the clone url
'pushurl': overrides the push url of the project, can be an empty string
to explicitly remove the push url
Add selection and diffing of arbitrary commits to shortlog
Currently this tries to minimize the footprint by only allowing
selection on the shortlog/log, and just uses an additional GET variable to
indicate the presence of a selection. The selection persists while
paging prev/next through the log/shortlog. The current selection is shown
abbreviated in the top link bar, with a commit link to allow the
cluttering the text by each commit (so we can avoid repeating commit
messages or hashes in the UI over and over), and allows the user to
clear the selection from wherever they are - so they could select
something, page through a couple pages, then decide they don't want the
selection anymore and clear it, without having to page back to the
selected commit to deselect it.