(big-config) update doc and rc, allow skipping gitweb/daemon

skipping gitweb/daemon has an enormous impact on speed of an admin-push!
This commit is contained in:
Sitaram Chamarty 2010-05-16 06:18:08 +05:30
parent 58fc6a3252
commit 35750c1abe
3 changed files with 74 additions and 48 deletions

View file

@ -1,5 +1,4 @@
# paths and configuration variables for gitolite # paths and configuration variables for gitolite
$GL_BIG_CONFIG = 1;
# please read comments before editing # please read comments before editing
@ -83,7 +82,13 @@ $GIT_PATH="";
# -------------------------------------- # --------------------------------------
# ----------------------------------------------------------------------
# BIG CONFIG SETTINGS
# Please read doc/big-config.mkd for details
$GL_BIG_CONFIG = 0;
$GL_NO_DAEMON_NO_GITWEB = 0;
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# SECURITY SENSITIVE SETTINGS # SECURITY SENSITIVE SETTINGS

View file

@ -4,14 +4,15 @@ In this document:
* when/why do we need it? * when/why do we need it?
* how do we use it? * how do we use it?
* summary of settings in RC file
* what are the downsides? * what are the downsides?
* (extra coolness) usergroups and LDAP/similar tools * (extra coolness) usergroups and LDAP/similar tools
### when/why do we need it? ### when/why do we need it?
A "big config" is anything that has more than a few thousand users and a few A "big config" is anything that has a few thousand users and a few thousand
thousand repos, organised into groups that are much smaller in number (like repos, organised into groups that are much smaller in number (like maybe a few
maybe a few hundreds of repogroups and a few dozens of usergroups). hundreds of repogroups and a few dozens of usergroups).
So let's say you have So let's say you have
@ -137,6 +138,24 @@ configuration, the compiled file looks like this:
That's a lot smaller, and allows orders of magintude more repos and groups to That's a lot smaller, and allows orders of magintude more repos and groups to
be supported. be supported.
### summary of settings in RC file
The default RC file contains the following lines:
$GL_BIG_CONFIG = 0;
$GL_NO_DAEMON_NO_GITWEB = 0;
The first setting means that by default, big-config is off; you can change it
to 1 to enable it.
The second is a very useful optimisation that you *must* enable if you *do*
have a large number of repositories, and do *not* use gitolite's support for
gitweb or git-daemon access (see "[easier to specify gitweb description and
gitweb/daemon access][gw]" for details). This will save a lot of time when
you push the gitolite-admin repo with changes.
[gw]: http://github.com/sitaramc/gitolite/blob/pu/doc/3-faq-tips-etc.mkd#gitweb
### what are the downsides? ### what are the downsides?
There are a few minor issues. There are a few minor issues.

View file

@ -52,7 +52,7 @@ $Data::Dumper::Sortkeys = 1;
open STDOUT, ">", "/dev/null" if (@ARGV and shift eq '-q'); open STDOUT, ">", "/dev/null" if (@ARGV and shift eq '-q');
# these are set by the "rc" file # these are set by the "rc" file
our ($GL_ADMINDIR, $GL_CONF, $GL_KEYDIR, $GL_CONF_COMPILED, $REPO_BASE, $REPO_UMASK, $PROJECTS_LIST, $GIT_PATH, $GL_WILDREPOS, $GL_GITCONFIG_KEYS, $GL_PACKAGE_HOOKS, $GL_SETPERMS_OVERRIDES_CONFIG, $GL_BIG_CONFIG); our ($GL_ADMINDIR, $GL_CONF, $GL_KEYDIR, $GL_CONF_COMPILED, $REPO_BASE, $REPO_UMASK, $PROJECTS_LIST, $GIT_PATH, $GL_WILDREPOS, $GL_GITCONFIG_KEYS, $GL_PACKAGE_HOOKS, $GL_SETPERMS_OVERRIDES_CONFIG, $GL_BIG_CONFIG, $GL_NO_DAEMON_NO_GITWEB);
# and these are set by gitolite.pm # and these are set by gitolite.pm
our ($REPONAME_PATT, $REPOPATT_PATT, $USERNAME_PATT, $AUTH_COMMAND, $AUTH_OPTIONS, $ABRT, $WARN); our ($REPONAME_PATT, $REPOPATT_PATT, $USERNAME_PATT, $AUTH_COMMAND, $AUTH_OPTIONS, $ABRT, $WARN);
@ -470,6 +470,7 @@ for my $repo (keys %repo_config) {
wrap_chdir("$repo_base_abs"); wrap_chdir("$repo_base_abs");
unless ($GL_NO_DAEMON_NO_GITWEB) {
# daemons first... # daemons first...
for my $repo (sort keys %repos) { for my $repo (sort keys %repos) {
next unless $repo =~ $REPONAME_PATT; next unless $repo =~ $REPONAME_PATT;
@ -521,6 +522,7 @@ for my $proj (sort keys %projlist) {
print $projlist_fh "$proj\n"; print $projlist_fh "$proj\n";
} }
close $projlist_fh; close $projlist_fh;
}
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# "compile" ssh authorized_keys # "compile" ssh authorized_keys