diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2017-06-29 14:12:26 -0700 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2017-06-29 14:12:26 -0700 |
commit | 454205ea080840e607d8a792f995a7a9ecc49f2c (patch) | |
tree | a0cfe30867547b99e1c062e66b9df9d6d959e2f1 /src/lib/Gitolite | |
parent | Merge tag 'v3.6.6' (diff) | |
parent | add example PRE_GIT code for blocking access (IP-check) (diff) | |
download | gitolite-gentoo-454205ea080840e607d8a792f995a7a9ecc49f2c.tar.gz gitolite-gentoo-454205ea080840e607d8a792f995a7a9ecc49f2c.tar.bz2 gitolite-gentoo-454205ea080840e607d8a792f995a7a9ecc49f2c.zip |
Merge remote-tracking branch 'upstream/master'gitolite-gentoo-3.6.6.1
Diffstat (limited to 'src/lib/Gitolite')
-rw-r--r-- | src/lib/Gitolite/Common.pm | 4 | ||||
-rw-r--r-- | src/lib/Gitolite/Conf/Load.pm | 24 | ||||
-rw-r--r-- | src/lib/Gitolite/Conf/Store.pm | 5 | ||||
-rw-r--r-- | src/lib/Gitolite/Conf/Sugar.pm | 17 | ||||
-rw-r--r-- | src/lib/Gitolite/Rc.pm | 4 |
5 files changed, 43 insertions, 11 deletions
diff --git a/src/lib/Gitolite/Common.pm b/src/lib/Gitolite/Common.pm index 166a4df..7a52f4b 100644 --- a/src/lib/Gitolite/Common.pm +++ b/src/lib/Gitolite/Common.pm @@ -305,7 +305,7 @@ sub gl_log { require Sys::Syslog; Sys::Syslog->import(qw(:standard)); - openlog("gitolite" . ( $ENV{GL_TID} ? "[$ENV{GL_TID}]" : "" ), "pid", "local0"); + openlog("gitolite" . ( $ENV{GL_TID} ? "[$ENV{GL_TID}]" : "" ), "pid", $Gitolite::Rc::rc{LOG_FACILITY} || 'local0'); $syslog_opened = 1; } @@ -355,7 +355,7 @@ sub ssh_fingerprint_file { # Return a valid fingerprint or undef my $fp = undef; if($output =~ /((?:MD5:)?(?:[0-9a-f]{2}:){15}[0-9a-f]{2})/i or - $output =~ m{((?:RIPEMD|SHA)\d+:[A-ZA-z0-9+/=]+)}i) { + $output =~ m{((?:RIPEMD|SHA)\d+:[A-Za-z0-9+/=]+)}i) { $fp = $1; } return wantarray ? ($fp, $output) : $fp; diff --git a/src/lib/Gitolite/Conf/Load.pm b/src/lib/Gitolite/Conf/Load.pm index 15b1d03..a439fc8 100644 --- a/src/lib/Gitolite/Conf/Load.pm +++ b/src/lib/Gitolite/Conf/Load.pm @@ -348,7 +348,7 @@ sub load_1 { return if not $split_conf{$repo}; my $cc = "./gl-conf"; - _die "parse '$cc' failed: " . ( $! or $@ ) unless do $cc; + _die "parse '$cc' failed: " . ( $@ or $! ) unless do $cc; $last_repo = $repo; $repos{$repo} = $one_repo{$repo}; @@ -583,15 +583,24 @@ sub list_groups { =for list_users Usage: gitolite list-users [<repo name pattern>] -List all users and groups explicitly named in a rule. User names not -mentioned in an access rule will not show up; you have to run 'list-members' -on each group name yourself to see them. +List all users and groups explicitly named in a rule. + +- you will have to run 'list-members' on each group name to expand it -- for + details and caveats on that please see its help message. +- User names not mentioned in an access rule will not show up at all (for + example, if you have users who only have access via an '@all' rule). WARNING: may be slow if you have thousands of repos. The optional repo name pattern is an unanchored regex; it can speed things up if you're interested only in users of a matching set of repos. This is only an optimisation, not an actual access list; you will still have to pipe it to 'gitolite access' with appropriate arguments to get an actual access list. + +NOTE: If you're running in ssh mode, it may be simpler to parse the authorized +keys file in ~/.ssh, like so: + perl -lne '/ ([a-z0-9]+)"/; print $1 if $1' < ~/.ssh/authorized_keys | sort -u +If you're running in http mode, only your web server knows all the potential +user names. =cut sub list_users { @@ -677,6 +686,13 @@ Usage: gitolite list-members <group name> - list all members of a group - takes one group name + +'@all' is not expandable in this context. Also, if you have GROUPLIST_PGM set +in your rc file[1], gitolite cannot expand group names completely; only your +external database can. + +[1]: http://gitolite.com/gitolite/conf.html#ldap + =cut sub list_members { diff --git a/src/lib/Gitolite/Conf/Store.pm b/src/lib/Gitolite/Conf/Store.pm index 5568b3f..c7f9ab5 100644 --- a/src/lib/Gitolite/Conf/Store.pm +++ b/src/lib/Gitolite/Conf/Store.pm @@ -288,8 +288,6 @@ sub store_1 { my ( %one_repo, %one_config ); - open( my $compiled_fh, ">", "$repo.git/gl-conf" ) or return; - my $dumped_data = ''; if ( $repos{$repo} ) { $one_repo{$repo} = $repos{$repo}; @@ -303,8 +301,7 @@ sub store_1 { $dumped_data .= Data::Dumper->Dump( [ \%one_config ], [qw(*one_config)] ); } - print $compiled_fh $dumped_data; - close $compiled_fh; + _print( "$repo.git/gl-conf", $dumped_data ); $split_conf{$repo} = 1; } diff --git a/src/lib/Gitolite/Conf/Sugar.pm b/src/lib/Gitolite/Conf/Sugar.pm index 986494b..68ad728 100644 --- a/src/lib/Gitolite/Conf/Sugar.pm +++ b/src/lib/Gitolite/Conf/Sugar.pm @@ -68,6 +68,7 @@ sub sugar { $lines = owner_desc($lines); $lines = name_vref($lines); $lines = role_names($lines); + $lines = skip_block($lines); return $lines; } @@ -179,5 +180,21 @@ sub role_names { return \@ret; } +sub skip_block { + my $lines = shift; + + my @out = (); + for (@$lines) { + my $skip = 0; + $skip = 1 if /^= *begin testconf$/; + # add code for other types of blocks here as needed + + next if $skip .. /^= *end$/; + push @out, $_; + } + + return \@out; +} + 1; diff --git a/src/lib/Gitolite/Rc.pm b/src/lib/Gitolite/Rc.pm index 2ee96e8..5a0e83d 100644 --- a/src/lib/Gitolite/Rc.pm +++ b/src/lib/Gitolite/Rc.pm @@ -527,6 +527,8 @@ __DATA__ # LOG_DEST => 'repo-log,normal', # LOG_DEST => 'repo-log,syslog', # LOG_DEST => 'repo-log,syslog,normal', + # syslog 'facility': defaults to 'local0', uncomment if needed. For example: + # LOG_FACILITY => 'local4', # roles. add more roles (like MANAGER, TESTER, ...) here. # WARNING: if you make changes to this hash, you MUST run 'gitolite @@ -607,7 +609,7 @@ __DATA__ # essential (unless you're using smart-http mode) 'ssh-authkeys', - # creates git-config enties from gitolite.conf file entries like 'config foo.bar = baz' + # creates git-config entries from gitolite.conf file entries like 'config foo.bar = baz' 'git-config', # creates git-daemon-export-ok files; if you don't use git-daemon, comment this out |