update-git-configs: 'SAFE_CONFIG'...

allow macros to ease the pain of UNSAFE_PATT

See http://sitaramc.github.com/gitolite/git-config.html or equivalent.
Easy.pm: should mention $HOME also

...thanks to Alan Ott
access(): the pattern for refs is too strict for filenames

a filename also becomes a "ref" if you use VREF/NAME.

For some reason[1], it seems some people use crazy filenames like foo(0)
or bar%20baz, and these things blow up on that test.

--

[1] viz., the lack of someone with good taste, like me, leading their
project ;-)
sshkeys-lint: accept ecdsa keys also

thanks to Richard Salts
(minor) perms would not print the correct message sometimes...

i.e., if getperms had an error.  (The same error for setperms would
print the correct message)
fix typo in ssh-authkeys
(minor) access: usage message was confusing
(minor) change ?? to syntax error
allow non-gitolite keys to have options/command, etc

Apparently, ssh-keygen can take fingerprints of entire authkeys files
also.  This is totally undocumented.

Since 'man ssh-keygen' only says: "Show fingerprint of specified public
key file." and makes no mention of authorized_keys files, I had assumed
that it treated a file containing this

    command="/usr/bin/backup" ssh-rsa .....

(i.e., a non-gitolite key that nevertheless contains a command) as just
a special type of pubkey file.  This meant, to me, that the presence or
absence of a newline should not matter, because *without* the 'command='
it certainly doesn't.

But what's actually happening is that it is treating this as an
authorized_keys file, and in *that* mode, it requires a newline.

I still don't see why it should require a newline as a *terminator*;
having it as a *separator* should be sufficient, but it's pointless to
argue about that when the feature itself is undocumented.

Wizmaster (code at wizmaster at fr) had to dig into the openssh source
code to figure this out and explain it to me.
Fix a warning about ambiguous shift usage

[committer's note: newer perl's don't have this problem, but 5.8.8 at
least appears to require the parens]
(minor) change urls to fit new domain gitolite.com
remove restriction on @ in setup -pk
(minor) README docfix about empty config values

(this should have been part of d8df4a9)
rc file format change (please read below)

First: if you have an old rc file it will still work.  In fact
internally the new rc file data gets converted to the old one.  So you
do not have to do anything normally.

This changes the rc file in the following way, taking mirroring as an
example.  Simple enough for most purposes but you really should read the
documentation...

old:
    INPUT                       =>
        [
            'Mirroring::input',
        ],

    PRE_GIT                     =>
        [
            'Mirroring::pre_git',
        ],

    POST_GIT                    =>
        [
            'Mirroring::post_git',
        ],

new:
    ENABLE  =>
        [
        # COMMANDS
            ... several commands ...
        # Triggers
            ... several triggers ...
            'Mirroring',
        ],
rc file format change: some inline doc/help text fixups
refex-expr
v3.4
minor but ugly bug in refex expression sugar code
add a contributing document

text is pulled out of the wiki.  This will enable github to show a link when
a contributor creates an issue or opens a Pull Request
list-memberships and perms changes:

  - list-memberships now requires a '-r' or '-u'; i.e., you have to
    explicitly state whether you are passing a reponame or a username

    see the new '-h' message for details.

  - Easy.pm now has a new 'in_role()' test that is, at present, only
    used by 'owns()', which uses that instead of checking that he is the
    creator.

    The role name used (I recommend "OWNER") must be set in the rc file
    like so

        OWNER_ROLENAME => 'OWNER',

    and if it is not set, defaults to 'CREATOR', which makes it behave
    as things currently do.

  - perms now uses this new 'owns()' function to authorise the user,
    instead of checking that she is the *creator*