migrated 'who-pushed' command (manual smoke test only)
'rsync' command to create and send bundles (manual smoke test only)

run 'ssh git@host rsync -h' for usage, as usual
Add special %GL_CREATOR variable for git-config

Add a special variable `%GL_CREATOR` to the the git-config trigger that
is replaced by the name of the repository creator (if any).

This can be useful to set up the default owner configuration for wild
repositories.

Example:

    repo assignments/CREATOR/a[0-9][0-9]
        C   = @students
        RW+ = CREATOR
        config gitweb.owner = %GL_CREATOR

----

committer added an if condition to the s/// line.
point people to mailing list for general questions
find symlinked commands when generating help list
Bailout tests unless envvar $GITOLITE_TEST is 'y'

[committer made some changes to t/README]
(minor) add a 'dd' function to quickly dump stuff to STDERR
minor bug in include file handing...

gitolite does indeed try to not load itself twice, but I forgot that by
that time the pwd is ~/.gitolite/conf not ~/.gitolite so it always ended
up reading itself twice in case of a wildcard include.
minor changes to README
'help' command barfage fix

should not barf if LOCAL_CODE is defined but it doesn't contain a
"commands" subdirectory.
(minor docfix) add info on using Easy.pm from elsewhere
prevent barfage when presetting the rc file
help cgit folks out a bit :)
(minor) avoid spurious 'repo missing' messages for repo patterns
dont auto-vivify empty entries in %repos...

before this, trying to access a wild repo would create an empty hash in
%repos.  This is pretty harmless, but at some later point, memberships()
would try to use that in a pattern, attempting to match the real repo
being access-checked.

Which is still fine if your repo doesn't look like "libstdc++" AND
you're using some recent perl.

However, for perl 5.8.8, and if the repo has a ++ in it, perl barfs.

Here's a test program to check your perl:

    #!/usr/bin/perl

    $base="foo/u1/libstdc++";
    $i="foo/u1/libstdc++";

    if ( $base =~ /^$i$/ ) {
        print 1;
    } else {
        print 2;
    }

On 5.14.2 I get "2".  On 5.8.8 I get:

    Nested quantifiers in regex; marked by <-- HERE in m/^foo/u1/libstdc++ <-- HERE $/ at ./aa.pl line 6.
(minor) move a small chunk of code out of a loop
call GROUPLIST_PGM before determining user_roles()...

thanks to Stephane Chazelas [1]

[1]: https://groups.google.com/d/topic/gitolite/gy_ZkrxGSjg
(security) fix bug in pattern to detect path traversal

while we're about it, add the same check to some of the internal
routines, so that commands can also be protected.

finally, just to make sure we don't lose it again in some other fashion,
add a few tests for path traversal...
v3.1
Merge tag 'v3.1' into local-commands

v3.1

* tag 'v3.1':
  v3.1
  (security) fix bug in pattern to detect path traversal
  call GROUPLIST_PGM before determining user_roles()...
  (minor) move a small chunk of code out of a loop
  dont auto-vivify empty entries in %repos...
  (minor) avoid spurious 'repo missing' messages for repo patterns
  help cgit folks out a bit :)
  prevent barfage when presetting the rc file
  (minor docfix) add info on using Easy.pm from elsewhere
  'help' command barfage fix
  minor changes to README
  minor bug in include file handing...
  (minor) add a 'dd' function to quickly dump stuff to STDERR
  Bailout tests unless envvar $GITOLITE_TEST is 'y'
  find symlinked commands when generating help list
  point people to mailing list for general questions
  Add special %GL_CREATOR variable for git-config
  'rsync' command to create and send bundles (manual smoke test only)
  migrated 'who-pushed' command (manual smoke test only)