better anchors in docs: changed autotoc and ran it through all docs

This commit is contained in:
Sitaram Chamarty 2010-06-01 06:16:13 +05:30
parent 5bbd102059
commit faf1629fd8
12 changed files with 251 additions and 267 deletions

View file

@ -8,15 +8,15 @@ given branch.
In this document: In this document:
* <a href="#A1">what</a> * <a href="#what">what</a>
* <a href="#A2">why</a> * <a href="#why">why</a>
* <a href="#A3">other features</a> * <a href="#other_features">other features</a>
* <a href="#A4">security</a> * <a href="#security">security</a>
* <a href="#A5">contact and license</a> * <a href="#contact_and_license">contact and license</a>
---- ----
<a name="A1"></a> <a name="what"></a>
### what ### what
@ -33,7 +33,7 @@ requiring root permissions, and with no additional software than git itself
and perl. It also has several other neat features described below and and perl. It also has several other neat features described below and
elsewhere in the [doc/][docs] directory. elsewhere in the [doc/][docs] directory.
<a name="A2"></a> <a name="why"></a>
### why ### why
@ -80,7 +80,7 @@ Gitolite does away with all this:
read-write access, not only at the repository level, but at the branch read-write access, not only at the repository level, but at the branch
level within repositories. level within repositories.
<a name="A3"></a> <a name="other_features"></a>
### other features ### other features
@ -114,7 +114,7 @@ detail somewhere in gitolite's [doc/][docs] subdirectory.
* specify repos using patterns (patterns may include creator's name) * specify repos using patterns (patterns may include creator's name)
* define powerful operations on the server side, even github-like forking * define powerful operations on the server side, even github-like forking
<a name="A4"></a> <a name="security"></a>
### security ### security
@ -136,7 +136,7 @@ details, looking for the word "security".
---- ----
<a name="A5"></a> <a name="contact_and_license"></a>
### contact and license ### contact and license

View file

@ -1,25 +1,31 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
use strict;
# filter gitolite's mkd files through this; it's designed to be idempotent of # filter gitolite's mkd files through this; it's designed to be idempotent of
# course # course
undef $/; sub make_anchor {
$doc = <>; # make an anchor out of a section heading
my $sh = shift;
$doc =~ s/^<a name="A\d+"><\/a>\n\n//mg; $sh =~ s/\W+/_/g;
$sh =~ s/^_//;
@toc = $doc =~ /^###.*/mg; return $sh;
$i = 0;
$doc =~ s/^###/$i++; "<a name=\"A$i\"><\/a>\n\n###"/mge;
$i = 0;
for (@toc) {
$i++;
s/### (.*)/ * <a href="#A$i">$1<\/a>/;
s/^(#+)/' ' x length($1)/e;
} }
$toc = "In this document:\n\n"; undef $/;
my $doc = <>;
$doc =~ s/^<a name=".*"><\/a>\n\n//mg;
my @toc = $doc =~ /^###+ .*/mg;
$doc =~ s/^(###+) (.*)/"<a name=\"" . &make_anchor($2) . "\"><\/a>\n\n$1 $2"/mge;
for (@toc) {
s/^(###+) (.*)/' ' x (length($1)-3) . ' * <a href="#' . &make_anchor($2) . "\">$2<\/a>"/e;
}
my $toc = "In this document:\n\n";
$toc .= join("\n", @toc); $toc .= join("\n", @toc);
$toc .= "\n\n"; $toc .= "\n\n";

View file

@ -2,32 +2,32 @@
In this document: In this document:
* <a href="#A1">please read this first</a> * <a href="#please_read_this_first">please read this first</a>
* <a href="#A2">important notes</a> * <a href="#important_notes">important notes</a>
* <a href="#A3">conventions used</a> * <a href="#conventions_used">conventions used</a>
* <a href="#A4">requirements</a> * <a href="#requirements">requirements</a>
* <a href="#A5">client side</a> * <a href="#client_side">client side</a>
* <a href="#A6">server side</a> * <a href="#server_side">server side</a>
* <a href="#A7">installation and setup</a> * <a href="#installation_and_setup">installation and setup</a>
* <a href="#A8">(package method) directly on the server, using RPM/DEB</a> * <a href="#package_method_directly_on_the_server_using_RPM_DEB">(package method) directly on the server, using RPM/DEB</a>
* <a href="#A9">(root method) directly on the server, manually, with root access</a> * <a href="#root_method_directly_on_the_server_manually_with_root_access">(root method) directly on the server, manually, with root access</a>
* <a href="#A10">(non-root method) directly on the server, manually, without root access</a> * <a href="#non_root_method_directly_on_the_server_manually_without_root_access">(non-root method) directly on the server, manually, without root access</a>
* <a href="#A11">(from-client method) install from the client to the server</a> * <a href="#from_client_method_install_from_the_client_to_the_server">(from-client method) install from the client to the server</a>
* <a href="#A12">special cases -- multiple gitolite servers</a> * <a href="#special_cases_multiple_gitolite_servers">special cases -- multiple gitolite servers</a>
* <a href="#A13">package method and root method</a> * <a href="#package_method_and_root_method">package method and root method</a>
* <a href="#A14">from-client method</a> * <a href="#from_client_method">from-client method</a>
* <a href="#A15">upgrading</a> * <a href="#upgrading">upgrading</a>
* <a href="#A16">uninstalling</a> * <a href="#uninstalling">uninstalling</a>
* <a href="#A17">cleaning out a botched install</a> * <a href="#cleaning_out_a_botched_install">cleaning out a botched install</a>
* <a href="#A18">uninstalling gitolite completely</a> * <a href="#uninstalling_gitolite_completely">uninstalling gitolite completely</a>
---- ----
<a name="A1"></a> <a name="please_read_this_first"></a>
### please read this first ### please read this first
<a name="A2"></a> <a name="important_notes"></a>
#### important notes #### important notes
@ -44,7 +44,7 @@ Please make sure you understand the following points first.
To make matters worse, ssh problems in gitolite don't always look like ssh To make matters worse, ssh problems in gitolite don't always look like ssh
problems. See [doc/6-ssh-troubleshooting.mkd][doc6] for help. problems. See [doc/6-ssh-troubleshooting.mkd][doc6] for help.
<a name="A3"></a> <a name="conventions_used"></a>
#### conventions used #### conventions used
@ -52,11 +52,11 @@ We assume the admin user is "sitaram", and his workstation is called "client".
The hosting user is "git", and the server is called "server". Substitute your The hosting user is "git", and the server is called "server". Substitute your
values as needed. values as needed.
<a name="A4"></a> <a name="requirements"></a>
#### requirements #### requirements
<a name="A5"></a> <a name="client_side"></a>
##### client side ##### client side
@ -68,7 +68,7 @@ values as needed.
shell is needed shell is needed
* again, msysgit on Windows is fine * again, msysgit on Windows is fine
<a name="A6"></a> <a name="server_side"></a>
##### server side ##### server side
@ -81,11 +81,11 @@ values as needed.
* perl (but since git requires it anyway, you probably have it) * perl (but since git requires it anyway, you probably have it)
* openssh or any ssh that can understand the `authorized_keys` file format * openssh or any ssh that can understand the `authorized_keys` file format
<a name="A7"></a> <a name="installation_and_setup"></a>
### installation and setup ### installation and setup
<a name="A8"></a> <a name="package_method_directly_on_the_server_using_RPM_DEB"></a>
#### (package method) directly on the server, using RPM/DEB #### (package method) directly on the server, using RPM/DEB
@ -99,7 +99,7 @@ values as needed.
* on the client, run `cd; git clone git@server:gitolite-admin` * on the client, run `cd; git clone git@server:gitolite-admin`
<a name="A9"></a> <a name="root_method_directly_on_the_server_manually_with_root_access"></a>
#### (root method) directly on the server, manually, with root access #### (root method) directly on the server, manually, with root access
@ -119,7 +119,7 @@ values as needed.
* on the client, run `cd; git clone git@server:gitolite-admin` * on the client, run `cd; git clone git@server:gitolite-admin`
<a name="A10"></a> <a name="non_root_method_directly_on_the_server_manually_without_root_access"></a>
#### (non-root method) directly on the server, manually, without root access #### (non-root method) directly on the server, manually, without root access
@ -147,7 +147,7 @@ server so that if you screw up the keys you can still get on, or be able to
* on the client, run `cd; git clone git@server:gitolite-admin` * on the client, run `cd; git clone git@server:gitolite-admin`
<a name="A11"></a> <a name="from_client_method_install_from_the_client_to_the_server"></a>
#### (from-client method) install from the client to the server #### (from-client method) install from the client to the server
@ -162,11 +162,11 @@ documentation.
This method is verbosely documented in [doc/7-install-transcript.mkd][doc7], This method is verbosely documented in [doc/7-install-transcript.mkd][doc7],
including *outputs* of the commands concerned. including *outputs* of the commands concerned.
<a name="A12"></a> <a name="special_cases_multiple_gitolite_servers"></a>
### special cases -- multiple gitolite servers ### special cases -- multiple gitolite servers
<a name="A13"></a> <a name="package_method_and_root_method"></a>
#### package method and root method #### package method and root method
@ -190,7 +190,7 @@ to have a command line on the server, so don't give them the passwords if you
don't need to -- the pubkey will allow them to be gitolite admins on their don't need to -- the pubkey will allow them to be gitolite admins on their
domain, and that's quite enough for normal operations. domain, and that's quite enough for normal operations.
<a name="A14"></a> <a name="from_client_method"></a>
#### from-client method #### from-client method
@ -210,7 +210,7 @@ have been created as respective clones. Or you can re-clone elsewhere:
cd ~/admin1; git clone gitolite_server_1:gitolite-admin.git cd ~/admin1; git clone gitolite_server_1:gitolite-admin.git
cd ~/admin2; git clone gitolite_server_2:gitolite-admin.git cd ~/admin2; git clone gitolite_server_2:gitolite-admin.git
<a name="A15"></a> <a name="upgrading"></a>
### upgrading ### upgrading
@ -222,11 +222,11 @@ arguments!
Also, remember that some new features may require additional settings in your Also, remember that some new features may require additional settings in your
`~/.gitolite.rc` file. `~/.gitolite.rc` file.
<a name="A16"></a> <a name="uninstalling"></a>
### uninstalling ### uninstalling
<a name="A17"></a> <a name="cleaning_out_a_botched_install"></a>
#### cleaning out a botched install #### cleaning out a botched install
@ -244,7 +244,7 @@ here's how to clean the slate.
* remove `~/.gitolite`, `~/.gitolite.rc` and * remove `~/.gitolite`, `~/.gitolite.rc` and
`~/repositories/gitolite-admin.git` `~/repositories/gitolite-admin.git`
<a name="A18"></a> <a name="uninstalling_gitolite_completely"></a>
#### uninstalling gitolite completely #### uninstalling gitolite completely

View file

@ -5,18 +5,18 @@
In this document: In this document:
* <a href="#A1">please read this first</a> * <a href="#please_read_this_first">please read this first</a>
* <a href="#A2">adding users and repos</a> * <a href="#adding_users_and_repos">adding users and repos</a>
* <a href="#A3">other features</a> * <a href="#other_features">other features</a>
* <a href="#A4">moving pre-existing repos into gitolite</a> * <a href="#moving_pre_existing_repos_into_gitolite">moving pre-existing repos into gitolite</a>
* <a href="#A5">specifying gitweb and daemon access</a> * <a href="#specifying_gitweb_and_daemon_access">specifying gitweb and daemon access</a>
* <a href="#A6">custom hooks</a> * <a href="#custom_hooks">custom hooks</a>
* <a href="#A7">hook chaining</a> * <a href="#hook_chaining">hook chaining</a>
* <a href="#A8">custom git config</a> * <a href="#custom_git_config">custom git config</a>
---- ----
<a name="A1"></a> <a name="please_read_this_first"></a>
### please read this first ### please read this first
@ -31,7 +31,7 @@ In this document:
Once you've cloned it, you're ready to add users and repos. Once you've cloned it, you're ready to add users and repos.
<a name="A2"></a> <a name="adding_users_and_repos"></a>
### adding users and repos ### adding users and repos
@ -54,11 +54,11 @@ Once you've cloned it, you're ready to add users and repos.
automatically be created (empty, but clonable) and users' access will be automatically be created (empty, but clonable) and users' access will be
updated as needed. updated as needed.
<a name="A3"></a> <a name="other_features"></a>
### other features ### other features
<a name="A4"></a> <a name="moving_pre_existing_repos_into_gitolite"></a>
#### moving pre-existing repos into gitolite #### moving pre-existing repos into gitolite
@ -79,7 +79,7 @@ gitolite:
`conf/gitolite.conf` in your gitolite-admin repo clone. Then add, commit, `conf/gitolite.conf` in your gitolite-admin repo clone. Then add, commit,
push. push.
<a name="A5"></a> <a name="specifying_gitweb_and_daemon_access"></a>
#### specifying gitweb and daemon access #### specifying gitweb and daemon access
@ -117,7 +117,7 @@ The "compile" script will keep these files consistent with the config settings
-- this includes removing such settings/files if you remove "read" permissions -- this includes removing such settings/files if you remove "read" permissions
for the special usernames or remove the description line. for the special usernames or remove the description line.
<a name="A6"></a> <a name="custom_hooks"></a>
#### custom hooks #### custom hooks
@ -136,7 +136,7 @@ implements all the branch-level permissions in gitolite. If you fiddle with
the hooks directory, please make sure you do not mess with this file the hooks directory, please make sure you do not mess with this file
accidentally, or all your fancy per-branch permissions will stop working.** accidentally, or all your fancy per-branch permissions will stop working.**
<a name="A7"></a> <a name="hook_chaining"></a>
#### hook chaining #### hook chaining
@ -159,7 +159,7 @@ Finally, these names (`update.secondary` and `post-update.secondary`) are
merely the defaults. You can change them to anything you want; look in merely the defaults. You can change them to anything you want; look in
conf/example.gitolite.rc for details. conf/example.gitolite.rc for details.
<a name="A8"></a> <a name="custom_git_config"></a>
#### custom git config #### custom git config

View file

@ -2,44 +2,44 @@
In this document: In this document:
* <a href="#A1">common errors and mistakes</a> * <a href="#common_errors_and_mistakes">common errors and mistakes</a>
* <a href="#A2">git version dependency</a> * <a href="#git_version_dependency">git version dependency</a>
* <a href="#A3">other errors, warnings, notes...</a> * <a href="#other_errors_warnings_notes_">other errors, warnings, notes...</a>
* <a href="#A4">cloning an empty repo</a> * <a href="#cloning_an_empty_repo">cloning an empty repo</a>
* <a href="#A5">`@all` syntax for repos</a> * <a href="#all_syntax_for_repos">`@all` syntax for repos</a>
* <a href="#A6">umask setting</a> * <a href="#umask_setting">umask setting</a>
* <a href="#A7">getting a tar file from a clone</a> * <a href="#getting_a_tar_file_from_a_clone">getting a tar file from a clone</a>
* <a href="#A8">features</a> * <a href="#features">features</a>
* <a href="#A9">syntax and normal usage</a> * <a href="#syntax_and_normal_usage">syntax and normal usage</a>
* <a href="#A10">simpler syntax</a> * <a href="#simpler_syntax">simpler syntax</a>
* <a href="#A11">one user, many keys</a> * <a href="#one_user_many_keys">one user, many keys</a>
* <a href="#A12">security, access control, and auditing</a> * <a href="#security_access_control_and_auditing">security, access control, and auditing</a>
* <a href="#A13">two levels of access rights checking</a> * <a href="#two_levels_of_access_rights_checking">two levels of access rights checking</a>
* <a href="#A14">better logging</a> * <a href="#better_logging">better logging</a>
* <a href="#A15">"exclude" (or "deny") rules</a> * <a href="#exclude_or_deny_rules">"exclude" (or "deny") rules</a>
* <a href="#A16">separating delete and rewind rights</a> * <a href="#separating_delete_and_rewind_rights">separating delete and rewind rights</a>
* <a href="#A17">file/dir NAME based restrictions</a> * <a href="#file_dir_NAME_based_restrictions">file/dir NAME based restrictions</a>
* <a href="#A18">delegating parts of the config file</a> * <a href="#delegating_parts_of_the_config_file">delegating parts of the config file</a>
* <a href="#A19">convenience features</a> * <a href="#convenience_features">convenience features</a>
* <a href="#A20">what repos do I have access to?</a> * <a href="#what_repos_do_I_have_access_to_">what repos do I have access to?</a>
* <a href="#A21">including config lines from other files</a> * <a href="#including_config_lines_from_other_files">including config lines from other files</a>
* <a href="#A22">support for git installed outside default PATH</a> * <a href="#support_for_git_installed_outside_default_PATH">support for git installed outside default PATH</a>
* <a href="#A23">"personal" branches</a> * <a href="#personal_branches">"personal" branches</a>
* <a href="#A24">custom hooks and custom git config</a> * <a href="#custom_hooks_and_custom_git_config">custom hooks and custom git config</a>
* <a href="#A25">helping with gitweb</a> * <a href="#helping_with_gitweb">helping with gitweb</a>
* <a href="#A26">easier to specify gitweb "description" and gitweb/daemon access</a> * <a href="#easier_to_specify_gitweb_description_and_gitweb_daemon_access">easier to specify gitweb "description" and gitweb/daemon access</a>
* <a href="#A27">easier to link gitweb authorisation with gitolite</a> * <a href="#easier_to_link_gitweb_authorisation_with_gitolite">easier to link gitweb authorisation with gitolite</a>
* <a href="#A28">advanced features</a> * <a href="#advanced_features">advanced features</a>
* <a href="#A29">repos named with wildcards</a> * <a href="#repos_named_with_wildcards">repos named with wildcards</a>
* <a href="#A30">admin defined commands</a> * <a href="#admin_defined_commands">admin defined commands</a>
* <a href="#A31">access control for external commands</a> * <a href="#access_control_for_external_commands">access control for external commands</a>
* <a href="#A32">svnserve</a> * <a href="#svnserve">svnserve</a>
* <a href="#A33">design choices</a> * <a href="#design_choices">design choices</a>
* <a href="#A34">keeping the parser and the access control separate</a> * <a href="#keeping_the_parser_and_the_access_control_separate">keeping the parser and the access control separate</a>
---- ----
<a name="A1"></a> <a name="common_errors_and_mistakes"></a>
### common errors and mistakes ### common errors and mistakes
@ -63,17 +63,17 @@ In this document:
Please see doc/6-ssh-troubleshooting.mkd for what all this means. Please see doc/6-ssh-troubleshooting.mkd for what all this means.
<a name="A2"></a> <a name="git_version_dependency"></a>
### git version dependency ### git version dependency
Gitolite (on the server) now refuses to run if git is not at least 1.6.2. Gitolite (on the server) now refuses to run if git is not at least 1.6.2.
<a name="A3"></a> <a name="other_errors_warnings_notes_"></a>
### other errors, warnings, notes... ### other errors, warnings, notes...
<a name="A4"></a> <a name="cloning_an_empty_repo"></a>
#### cloning an empty repo #### cloning an empty repo
@ -86,7 +86,7 @@ end hung up unexpectedly`. However, you can ignore this, since it doesn't
seem to hurt anything. [Update 2009-09-14; this has been fixed in git seem to hurt anything. [Update 2009-09-14; this has been fixed in git
1.6.4.3] 1.6.4.3]
<a name="A5"></a> <a name="all_syntax_for_repos"></a>
#### `@all` syntax for repos #### `@all` syntax for repos
@ -98,14 +98,14 @@ There *is* a way to use the `@all` syntax for repos also, as described in
access, we do not support this. access, we do not support this.
* don't try giving `@all` users some permission for `@all` repos * don't try giving `@all` users some permission for `@all` repos
<a name="A6"></a> <a name="umask_setting"></a>
#### umask setting #### umask setting
Gitweb not able to read your repos? You can change the umask for newly Gitweb not able to read your repos? You can change the umask for newly
created repos to something more relaxed -- see the `~/.gitolite.rc` file created repos to something more relaxed -- see the `~/.gitolite.rc` file
<a name="A7"></a> <a name="getting_a_tar_file_from_a_clone"></a>
### getting a tar file from a clone ### getting a tar file from a clone
@ -123,22 +123,18 @@ plain "git archive", because the Makefile adds a file called
<a name="features"></a> <a name="features"></a>
<a name="A8"></a>
### features ### features
Apart from the big ones listed in the top level README, and subjective ones Apart from the big ones listed in the top level README, and subjective ones
like "better config file format", gitolite has evolved to have many useful like "better config file format", gitolite has evolved to have many useful
features than the original goal of branch-level access control. features than the original goal of branch-level access control.
<a name="A9"></a> <a name="syntax_and_normal_usage"></a>
#### syntax and normal usage #### syntax and normal usage
<a name="simpler_syntax"></a> <a name="simpler_syntax"></a>
<a name="A10"></a>
##### simpler syntax ##### simpler syntax
The basic syntax is simpler and cleaner but it goes beyond that: **you can The basic syntax is simpler and cleaner but it goes beyond that: **you can
@ -182,9 +178,7 @@ do not worry that this causes some duplication or inefficiency. It doesn't
See the "specify gitweb/daemon access" section below for one more example. See the "specify gitweb/daemon access" section below for one more example.
<a name="multikeys"></a> <a name="one_user_many_keys"></a>
<a name="A11"></a>
##### one user, many keys ##### one user, many keys
@ -229,13 +223,11 @@ corresponding derived usernames (which is what goes into the
sitaramc@gmail.com@laptop.pub sitaramc@gmail.com sitaramc@gmail.com@laptop.pub sitaramc@gmail.com
sitaramc@gmail.com@desktop.pub sitaramc@gmail.com sitaramc@gmail.com@desktop.pub sitaramc@gmail.com
<a name="A12"></a> <a name="security_access_control_and_auditing"></a>
#### security, access control, and auditing #### security, access control, and auditing
<a name="two_levels"></a> <a name="two_levels_of_access_rights_checking"></a>
<a name="A13"></a>
##### two levels of access rights checking ##### two levels of access rights checking
@ -271,7 +263,7 @@ any of the refexes match, the push succeeds. If none of them match, it fails.
Gitolite also allows "exclude" or "deny" rules. See later in this document Gitolite also allows "exclude" or "deny" rules. See later in this document
for details. for details.
<a name="A14"></a> <a name="better_logging"></a>
##### better logging ##### better logging
@ -299,7 +291,7 @@ The other parts of the log line are the name of the repo, the refname being
updated, the user updating it, and the refex pattern (from the config file) updated, the user updating it, and the refex pattern (from the config file)
that matched, in case you need to debug the config file itself. that matched, in case you need to debug the config file itself.
<a name="A15"></a> <a name="exclude_or_deny_rules"></a>
##### "exclude" (or "deny") rules ##### "exclude" (or "deny") rules
@ -350,7 +342,7 @@ And here's how it works:
before the third one, and it has a `-` as the permission, so the push before the third one, and it has a `-` as the permission, so the push
fails fails
<a name="A16"></a> <a name="separating_delete_and_rewind_rights"></a>
##### separating delete and rewind rights ##### separating delete and rewind rights
@ -389,7 +381,7 @@ message when you push, a non-existant user.
[sdrr]: http://groups.google.com/group/gitolite/browse_thread/thread/9f2b4358ce406d4c# [sdrr]: http://groups.google.com/group/gitolite/browse_thread/thread/9f2b4358ce406d4c#
<a name="A17"></a> <a name="file_dir_NAME_based_restrictions"></a>
##### file/dir NAME based restrictions ##### file/dir NAME based restrictions
@ -400,7 +392,7 @@ changed, treating each filename as a "ref" to be matched.
Please see `conf/example.conf` for syntax and examples. Please see `conf/example.conf` for syntax and examples.
<a name="A18"></a> <a name="delegating_parts_of_the_config_file"></a>
##### delegating parts of the config file ##### delegating parts of the config file
@ -409,13 +401,11 @@ access control for their own pieces. See
[doc/5-delegation.mkd](http://github.com/sitaramc/gitolite/blob/pu/doc/5-delegation.mkd) [doc/5-delegation.mkd](http://github.com/sitaramc/gitolite/blob/pu/doc/5-delegation.mkd)
for details. for details.
<a name="A19"></a> <a name="convenience_features"></a>
#### convenience features #### convenience features
<a name="myrights"></a> <a name="what_repos_do_I_have_access_to_"></a>
<a name="A20"></a>
##### what repos do I have access to? ##### what repos do I have access to?
@ -448,13 +438,13 @@ administrator can also say things like:
to get this info for other user(s). to get this info for other user(s).
<a name="A21"></a> <a name="including_config_lines_from_other_files"></a>
##### including config lines from other files ##### including config lines from other files
See the entry under "INCLUDE SOME OTHER FILE" in `conf/example.conf`. See the entry under "INCLUDE SOME OTHER FILE" in `conf/example.conf`.
<a name="A22"></a> <a name="support_for_git_installed_outside_default_PATH"></a>
##### support for git installed outside default PATH ##### support for git installed outside default PATH
@ -488,7 +478,7 @@ the full PATH in the rc file, like so:
$ENV{PATH} = "/home/sitaram/bin:$ENV{PATH}"; $ENV{PATH} = "/home/sitaram/bin:$ENV{PATH}";
<a name="A23"></a> <a name="personal_branches"></a>
##### "personal" branches ##### "personal" branches
@ -512,7 +502,7 @@ important thing is that the "branch" name should contain `/USER/` (including
the slashes). At runtime this will match whoever is the current user. Access the slashes). At runtime this will match whoever is the current user. Access
is still determined by the right hand side of course. is still determined by the right hand side of course.
<a name="A24"></a> <a name="custom_hooks_and_custom_git_config"></a>
##### custom hooks and custom git config ##### custom hooks and custom git config
@ -520,9 +510,7 @@ You can specify hooks that you want to propagate to all repos, as well as
per-repo "gitconfig" settings. Please see `doc/2-admin.mkd` and per-repo "gitconfig" settings. Please see `doc/2-admin.mkd` and
`conf/example.conf` for details. `conf/example.conf` for details.
<a name="gitweb"></a> <a name="helping_with_gitweb"></a>
<a name="A25"></a>
#### helping with gitweb #### helping with gitweb
@ -530,7 +518,7 @@ Although gitweb is a completely separate program, gitolite can do quite a
lot to help you manage gitweb access as well; once the initial setup is lot to help you manage gitweb access as well; once the initial setup is
complete, you can do it all from within the gitolite config file! complete, you can do it all from within the gitolite config file!
<a name="A26"></a> <a name="easier_to_specify_gitweb_description_and_gitweb_daemon_access"></a>
##### easier to specify gitweb "description" and gitweb/daemon access ##### easier to specify gitweb "description" and gitweb/daemon access
@ -579,9 +567,7 @@ Here's an example, using really short reponames because I'm lazy:
repo r2 repo r2
# ...and so on... # ...and so on...
<a name="gitwebauth"></a> <a name="easier_to_link_gitweb_authorisation_with_gitolite"></a>
<a name="A27"></a>
##### easier to link gitweb authorisation with gitolite ##### easier to link gitweb authorisation with gitolite
@ -617,24 +603,24 @@ Gitweb allows you to specify a subroutine to decide on access. We use that
feature and tie it to gitolite. Configuration example can be found in feature and tie it to gitolite. Configuration example can be found in
`contrib/gitweb/`. `contrib/gitweb/`.
<a name="A28"></a> <a name="advanced_features"></a>
#### advanced features #### advanced features
<a name="A29"></a> <a name="repos_named_with_wildcards"></a>
##### repos named with wildcards ##### repos named with wildcards
Please see `doc/4-wildcard-repositories.mkd` for all the details. Please see `doc/4-wildcard-repositories.mkd` for all the details.
<a name="A30"></a> <a name="admin_defined_commands"></a>
##### admin defined commands ##### admin defined commands
This requires the wildcards feature to be enabled, but is then an extremely This requires the wildcards feature to be enabled, but is then an extremely
powerful feature. See `doc/admin-defined-commands.mkd`. powerful feature. See `doc/admin-defined-commands.mkd`.
<a name="A31"></a> <a name="access_control_for_external_commands"></a>
##### access control for external commands ##### access control for external commands
@ -660,8 +646,6 @@ Commands implemented so far are:
<a name="svnserve"></a> <a name="svnserve"></a>
<a name="A32"></a>
###### svnserve ###### svnserve
If you are transitioning from SVN to gitolite, and have a lot of users using If you are transitioning from SVN to gitolite, and have a lot of users using
@ -672,11 +656,11 @@ system. Assuming you installed gitolite to the same user as the one you used
for SVN, SVN connectivity will be retained, and users will be able to use for SVN, SVN connectivity will be retained, and users will be able to use
both SVN and git using the same SSH configuration. both SVN and git using the same SSH configuration.
<a name="A33"></a> <a name="design_choices"></a>
### design choices ### design choices
<a name="A34"></a> <a name="keeping_the_parser_and_the_access_control_separate"></a>
#### keeping the parser and the access control separate #### keeping the parser and the access control separate

View file

@ -19,17 +19,17 @@ workarounds I may not have the time to code it right away.
In this document: In this document:
* <a href="#A1">rc file setting required</a> * <a href="#rc_file_setting_required">rc file setting required</a>
* <a href="#A2">Wildcard repos</a> * <a href="#Wildcard_repos">Wildcard repos</a>
* <a href="#A3">Wildcard repos with creator name in them</a> * <a href="#Wildcard_repos_with_creator_name_in_them">Wildcard repos with creator name in them</a>
* <a href="#A4">Wildcard repos without creator name in them</a> * <a href="#Wildcard_repos_without_creator_name_in_them">Wildcard repos without creator name in them</a>
* <a href="#A5">Side-note: Line-anchored regexes</a> * <a href="#Side_note_Line_anchored_regexes">Side-note: Line-anchored regexes</a>
* <a href="#A6">Contrast with refexes</a> * <a href="#Contrast_with_refexes">Contrast with refexes</a>
* <a href="#A7">Handing out rights to wildcard-matched repos</a> * <a href="#Handing_out_rights_to_wildcard_matched_repos">Handing out rights to wildcard-matched repos</a>
* <a href="#A8">setting a gitweb description for a wildcard-matched repo</a> * <a href="#setting_a_gitweb_description_for_a_wildcard_matched_repo">setting a gitweb description for a wildcard-matched repo</a>
* <a href="#A9">reporting</a> * <a href="#reporting">reporting</a>
* <a href="#A10">other issues and discussion</a> * <a href="#other_issues_and_discussion">other issues and discussion</a>
* <a href="#A11">how it actually works</a> * <a href="#how_it_actually_works">how it actually works</a>
---- ----
@ -37,7 +37,7 @@ This document is mostly "by example".
---- ----
<a name="A1"></a> <a name="rc_file_setting_required"></a>
### rc file setting required ### rc file setting required
@ -45,7 +45,7 @@ This feature requires that you set `$GL_WILDREPOS` to "1" in `~/.gitolite.rc`
on the server. Please search for that variable and see comments around it in on the server. Please search for that variable and see comments around it in
`conf/example.gitolite.rc` for more information on this. `conf/example.gitolite.rc` for more information on this.
<a name="A2"></a> <a name="Wildcard_repos"></a>
### Wildcard repos ### Wildcard repos
@ -53,7 +53,7 @@ Which of these alternatives you choose depends on your needs, and the social
aspects of your environment. The first one is a little more rigid, making it aspects of your environment. The first one is a little more rigid, making it
harder to make mistakes, and the second is more flexible and trusting. harder to make mistakes, and the second is more flexible and trusting.
<a name="A3"></a> <a name="Wildcard_repos_with_creator_name_in_them"></a>
#### Wildcard repos with creator name in them #### Wildcard repos with creator name in them
@ -79,7 +79,7 @@ new repo, as user "u4" (a student):
Notice the *two* empty repo inits, and the order in which they occur ;-) Notice the *two* empty repo inits, and the order in which they occur ;-)
<a name="A4"></a> <a name="Wildcard_repos_without_creator_name_in_them"></a>
#### Wildcard repos without creator name in them #### Wildcard repos without creator name in them
@ -106,7 +106,7 @@ and have a TA create the repos in advance.
In either case, they could then use the `setperms` feature to specify which In either case, they could then use the `setperms` feature to specify which
users are "READERS" and which are "WRITERS". See later for details. users are "READERS" and which are "WRITERS". See later for details.
<a name="A5"></a> <a name="Side_note_Line_anchored_regexes"></a>
### Side-note: Line-anchored regexes ### Side-note: Line-anchored regexes
@ -123,7 +123,7 @@ But you may be surprised to find that it does not match even
`^assignments/S[0-9]+/A[0-9]+$` -- notice the line beginning and ending `^assignments/S[0-9]+/A[0-9]+$` -- notice the line beginning and ending
metacharacters. metacharacters.
<a name="A6"></a> <a name="Contrast_with_refexes"></a>
#### Contrast with refexes #### Contrast with refexes
@ -135,7 +135,7 @@ if no one will actually push such a branch! You can anchor both sides if you
really care, by using `master$` instead of `master`, but that is *not* the really care, by using `master$` instead of `master`, but that is *not* the
default for refexes. default for refexes.
<a name="A7"></a> <a name="Handing_out_rights_to_wildcard_matched_repos"></a>
### Handing out rights to wildcard-matched repos ### Handing out rights to wildcard-matched repos
@ -182,14 +182,14 @@ The following points are important:
* whoever you specify as "R" will match the special user READERS. "RW" will * whoever you specify as "R" will match the special user READERS. "RW" will
match WRITERS. match WRITERS.
<a name="A8"></a> <a name="setting_a_gitweb_description_for_a_wildcard_matched_repo"></a>
### setting a gitweb description for a wildcard-matched repo ### setting a gitweb description for a wildcard-matched repo
Similar to the getperm/setperm commands, there are the getdesc/setdesc Similar to the getperm/setperm commands, there are the getdesc/setdesc
commands, thanks to Teemu. commands, thanks to Teemu.
<a name="A9"></a> <a name="reporting"></a>
### reporting ### reporting
@ -215,7 +215,7 @@ Push the config, then try
ssh gitolite expand ssh gitolite expand
<a name="A10"></a> <a name="other_issues_and_discussion"></a>
### other issues and discussion ### other issues and discussion
@ -237,7 +237,7 @@ Push the config, then try
of the time, it won't be difficult; the fixed prefix will usually be of the time, it won't be difficult; the fixed prefix will usually be
different anyway so there won't be overlaps. different anyway so there won't be overlaps.
<a name="A11"></a> <a name="how_it_actually_works"></a>
### how it actually works ### how it actually works

View file

@ -6,14 +6,14 @@
In this document: In this document:
* <a href="#A1">lots of repos, lots of users</a> * <a href="#lots_of_repos_lots_of_users">lots of repos, lots of users</a>
* <a href="#A2">splitting up the set of repos into groups</a> * <a href="#splitting_up_the_set_of_repos_into_groups">splitting up the set of repos into groups</a>
* <a href="#A3">delegating ownership of groups of repos</a> * <a href="#delegating_ownership_of_groups_of_repos">delegating ownership of groups of repos</a>
* <a href="#A4">security/philosophy note</a> * <a href="#security_philosophy_note">security/philosophy note</a>
---- ----
<a name="A1"></a> <a name="lots_of_repos_lots_of_users"></a>
### lots of repos, lots of users ### lots of repos, lots of users
@ -47,7 +47,7 @@ access control rules for a set of repos they have been given authority for.
It's easier to show how it all works with an example instead of long It's easier to show how it all works with an example instead of long
descriptions. descriptions.
<a name="A2"></a> <a name="splitting_up_the_set_of_repos_into_groups"></a>
### splitting up the set of repos into groups ### splitting up the set of repos into groups
@ -63,7 +63,7 @@ or repos, same syntax). So the basic idea is that the main config file
# any other config as usual, including access control lines for any of the # any other config as usual, including access control lines for any of the
# above projects or groups # above projects or groups
<a name="A3"></a> <a name="delegating_ownership_of_groups_of_repos"></a>
### delegating ownership of groups of repos ### delegating ownership of groups of repos
@ -117,7 +117,7 @@ to the bottom of the main file.
---- ----
<a name="A4"></a> <a name="security_philosophy_note"></a>
### security/philosophy note ### security/philosophy note

View file

@ -2,21 +2,21 @@
In this document: In this document:
* <a href="#A1">the most common problems that an admin will see</a> * <a href="#the_most_common_problems_that_an_admin_will_see">the most common problems that an admin will see</a>
* <a href="#A2">basic ssh troubleshooting</a> * <a href="#basic_ssh_troubleshooting">basic ssh troubleshooting</a>
* <a href="#A3">passphrases versus passwords</a> * <a href="#passphrases_versus_passwords">passphrases versus passwords</a>
* <a href="#A4">ssh-agent problems</a> * <a href="#ssh_agent_problems">ssh-agent problems</a>
* <a href="#A5">basic ssh troubleshooting for the main admin</a> * <a href="#basic_ssh_troubleshooting_for_the_main_admin">basic ssh troubleshooting for the main admin</a>
* <a href="#A6">basic ssh troubleshooting for a normal user</a> * <a href="#basic_ssh_troubleshooting_for_a_normal_user">basic ssh troubleshooting for a normal user</a>
* <a href="#A7">windows issues</a> * <a href="#windows_issues">windows issues</a>
* <a href="#A8">details</a> * <a href="#details">details</a>
* <a href="#A9">files on the server</a> * <a href="#files_on_the_server">files on the server</a>
* <a href="#A10">files on client</a> * <a href="#files_on_client">files on client</a>
* <a href="#A11">why two keys on client</a> * <a href="#why_two_keys_on_client">why two keys on client</a>
* <a href="#A12">some other tips and tricks</a> * <a href="#some_other_tips_and_tricks">some other tips and tricks</a>
* <a href="#A13">giving shell access to gitolite users</a> * <a href="#giving_shell_access_to_gitolite_users">giving shell access to gitolite users</a>
* <a href="#A14">losing your admin key</a> * <a href="#losing_your_admin_key">losing your admin key</a>
* <a href="#A15">simulating ssh-copy-id</a> * <a href="#simulating_ssh_copy_id">simulating ssh-copy-id</a>
---- ----
@ -33,7 +33,7 @@ In addition to both these documents, there's now a program called
`sshkeys-lint` that you can run on your client. Run it without arguments to `sshkeys-lint` that you can run on your client. Run it without arguments to
get help on how to run it and what inputs it needs. get help on how to run it and what inputs it needs.
<a name="A1"></a> <a name="the_most_common_problems_that_an_admin_will_see"></a>
### the most common problems that an admin will see ### the most common problems that an admin will see
@ -85,7 +85,7 @@ the repo and clones ok. But when you push, gitolite's **update hook** kicks
in, and fails to run because you some of the environment variables it is in, and fails to run because you some of the environment variables it is
expecting are not present. expecting are not present.
<a name="A2"></a> <a name="basic_ssh_troubleshooting"></a>
### basic ssh troubleshooting ### basic ssh troubleshooting
@ -98,7 +98,7 @@ username* of the admin.
Unless specifically mentioned, all these commands are run on the user's or Unless specifically mentioned, all these commands are run on the user's or
admin's workstation, not on the server. admin's workstation, not on the server.
<a name="A3"></a> <a name="passphrases_versus_passwords"></a>
#### passphrases versus passwords #### passphrases versus passwords
@ -119,7 +119,7 @@ The second is to use `ssh-agent` (or `keychain`, which in turn uses
`ssh-agent`) or something like that to manage your keys. Other than the next `ssh-agent`) or something like that to manage your keys. Other than the next
section, further discussion of this is out of scope of this document. section, further discussion of this is out of scope of this document.
<a name="A4"></a> <a name="ssh_agent_problems"></a>
#### ssh-agent problems #### ssh-agent problems
@ -145,7 +145,7 @@ all, ssh will only use those keys. Even if you explicitly specify an unlisted
key using `ssh -i` or an `identityfile` directive in the config file, it won't key using `ssh -i` or an `identityfile` directive in the config file, it won't
use it. use it.
<a name="A5"></a> <a name="basic_ssh_troubleshooting_for_the_main_admin"></a>
#### basic ssh troubleshooting for the main admin #### basic ssh troubleshooting for the main admin
@ -215,7 +215,7 @@ from scratch:
That's a long sequence but it should work. That's a long sequence but it should work.
<a name="A6"></a> <a name="basic_ssh_troubleshooting_for_a_normal_user"></a>
#### basic ssh troubleshooting for a normal user #### basic ssh troubleshooting for a normal user
@ -234,7 +234,7 @@ you had command line access to the server *before* you were added as a
gitolite user. If you send that same key to your gitolite admin to include in gitolite user. If you send that same key to your gitolite admin to include in
the admin repo, it won't work. For reasons why, see below. the admin repo, it won't work. For reasons why, see below.
<a name="A7"></a> <a name="windows_issues"></a>
### windows issues ### windows issues
@ -252,13 +252,11 @@ link, or in contrib/ if it's a longer piece of text.
<a name="details"></a> <a name="details"></a>
<a name="A8"></a>
### details ### details
Here's how it all hangs together. Here's how it all hangs together.
<a name="A9"></a> <a name="files_on_the_server"></a>
#### files on the server #### files on the server
@ -290,7 +288,7 @@ Here's how it all hangs together.
argument `sitaram`. This is how gitolite is invoked, (and is told the argument `sitaram`. This is how gitolite is invoked, (and is told the
user logging in is "sitaram"). user logging in is "sitaram").
<a name="A10"></a> <a name="files_on_client"></a>
#### files on client #### files on client
@ -360,9 +358,7 @@ Here's how it all hangs together.
now works as expected, invoking the special keypair instead of the default now works as expected, invoking the special keypair instead of the default
one. one.
<a name="twokeys"></a> <a name="why_two_keys_on_client"></a>
<a name="A11"></a>
#### why two keys on client #### why two keys on client
@ -429,13 +425,11 @@ that should have enough info to get you going (but it helps to know ssh well):
That should do it. That should do it.
<a name="complex"></a> <a name="some_other_tips_and_tricks"></a>
<a name="A12"></a>
### some other tips and tricks ### some other tips and tricks
<a name="A13"></a> <a name="giving_shell_access_to_gitolite_users"></a>
#### giving shell access to gitolite users #### giving shell access to gitolite users
@ -463,7 +457,7 @@ access would not manage to get himself shell access.
Giving someone shell access requires that you should have shell access in the Giving someone shell access requires that you should have shell access in the
first place, so the simplest way is to enable it from the server side only. first place, so the simplest way is to enable it from the server side only.
<a name="A14"></a> <a name="losing_your_admin_key"></a>
#### losing your admin key #### losing your admin key
@ -473,7 +467,7 @@ gitolite-admin repository with a fresh key, take a look at the
of course. The top of the script has useful information on how to use it and of course. The top of the script has useful information on how to use it and
what it needs. what it needs.
<a name="A15"></a> <a name="simulating_ssh_copy_id"></a>
#### simulating ssh-copy-id #### simulating ssh-copy-id

View file

@ -20,15 +20,15 @@ you have to run it on your workstation, NOT on the server!**
In this document: In this document:
* <a href="#A1">create userids on server and client (optional)</a> * <a href="#create_userids_on_server_and_client_optional_">create userids on server and client (optional)</a>
* <a href="#A2">get pubkey access from client to server</a> * <a href="#get_pubkey_access_from_client_to_server">get pubkey access from client to server</a>
* <a href="#A3">get gitolite source</a> * <a href="#get_gitolite_source">get gitolite source</a>
* <a href="#A4">install gitolite</a> * <a href="#install_gitolite">install gitolite</a>
* <a href="#A5">examine what you have</a> * <a href="#examine_what_you_have">examine what you have</a>
---- ----
<a name="A1"></a> <a name="create_userids_on_server_and_client_optional_"></a>
### create userids on server and client (optional) ### create userids on server and client (optional)
@ -75,7 +75,7 @@ because I'm not showing the actual "vi" session):
---- ----
<a name="A2"></a> <a name="get_pubkey_access_from_client_to_server"></a>
### get pubkey access from client to server ### get pubkey access from client to server
@ -126,7 +126,7 @@ Double check to make sure you can log on to `git@server` without a password:
---- ----
<a name="A3"></a> <a name="get_gitolite_source"></a>
### get gitolite source ### get gitolite source
@ -138,7 +138,7 @@ Double check to make sure you can log on to `git@server` without a password:
Receiving objects: 100% (1157/1157), 270.08 KiB | 61 KiB/s, done. Receiving objects: 100% (1157/1157), 270.08 KiB | 61 KiB/s, done.
Resolving deltas: 100% (756/756), done. Resolving deltas: 100% (756/756), done.
<a name="A4"></a> <a name="install_gitolite"></a>
### install gitolite ### install gitolite
@ -209,7 +209,7 @@ install mode that allows you to change the defaults etc.
---- ----
<a name="A5"></a> <a name="examine_what_you_have"></a>
### examine what you have ### examine what you have

View file

@ -13,14 +13,14 @@ blaming ***git/gitolite*** for whatever is going wrong with your setup :-)
In this document: In this document:
* <a href="#A1">ssh basics</a> * <a href="#ssh_basics">ssh basics</a>
* <a href="#A2">how does gitolite use all this ssh magic?</a> * <a href="#how_does_gitolite_use_all_this_ssh_magic_">how does gitolite use all this ssh magic?</a>
* <a href="#A3">restricting shell access/distinguishing one user from another</a> * <a href="#restricting_shell_access_distinguishing_one_user_from_another">restricting shell access/distinguishing one user from another</a>
* <a href="#A4">restricting branch level actions</a> * <a href="#restricting_branch_level_actions">restricting branch level actions</a>
---- ----
<a name="A1"></a> <a name="ssh_basics"></a>
### ssh basics ### ssh basics
@ -88,7 +88,7 @@ from somewhere, or maybe buy the OReilly ssh book.
**This is the backbone of what makes gitolite work; please make sure you **This is the backbone of what makes gitolite work; please make sure you
understand this** understand this**
<a name="A2"></a> <a name="how_does_gitolite_use_all_this_ssh_magic_"></a>
### how does gitolite use all this ssh magic? ### how does gitolite use all this ssh magic?
@ -98,7 +98,7 @@ These are two different questions you ought to be having by now:
logging in as the same remote user "git" logging in as the same remote user "git"
* how does it restrict what I can do within a repository * how does it restrict what I can do within a repository
<a name="A3"></a> <a name="restricting_shell_access_distinguishing_one_user_from_another"></a>
#### restricting shell access/distinguishing one user from another #### restricting shell access/distinguishing one user from another
@ -131,7 +131,7 @@ at its config file, and either allows or rejects the request.
But this cannot differentiate between different branches within a repo; that But this cannot differentiate between different branches within a repo; that
has to be done separately. has to be done separately.
<a name="A4"></a> <a name="restricting_branch_level_actions"></a>
#### restricting branch level actions #### restricting branch level actions

View file

@ -11,18 +11,18 @@ There may be other such **WARNING** sections below. **Read all of them**.
In this document: In this document:
* <a href="#A1">background</a> * <a href="#background">background</a>
* <a href="#A2">setting it up</a> * <a href="#setting_it_up">setting it up</a>
* <a href="#A3">anatomy of a command</a> * <a href="#anatomy_of_a_command">anatomy of a command</a>
* <a href="#A4">example uses and sample commands in contrib</a> * <a href="#example_uses_and_sample_commands_in_contrib">example uses and sample commands in contrib</a>
* <a href="#A5">fork</a> * <a href="#fork">fork</a>
* <a href="#A6">rmrepo</a> * <a href="#rmrepo">rmrepo</a>
* <a href="#A7">enable/disable push access temporarily</a> * <a href="#enable_disable_push_access_temporarily">enable/disable push access temporarily</a>
* <a href="#A8">(bonus) restricted admin</a> * <a href="#bonus_restricted_admin">(bonus) restricted admin</a>
---- ----
<a name="A1"></a> <a name="background"></a>
### background ### background
@ -62,7 +62,7 @@ What we want now is more than that, as you'll see in the examples below. And
I'm sure if you think of more uses you'll send them to me as "contrib" I'm sure if you think of more uses you'll send them to me as "contrib"
entries, right? entries, right?
<a name="A2"></a> <a name="setting_it_up"></a>
### setting it up ### setting it up
@ -82,7 +82,7 @@ to inadvertently *hide* some of the "official" commands (like "info",
executable files with those names in this directory. So don't do that -- you executable files with those names in this directory. So don't do that -- you
have been warned!** have been warned!**
<a name="A3"></a> <a name="anatomy_of_a_command"></a>
### anatomy of a command ### anatomy of a command
@ -137,11 +137,11 @@ convenient. See any of the other samples for how to use it.
If you don't like this, roll your own. If you don't like bash, do the eqvt in If you don't like this, roll your own. If you don't like bash, do the eqvt in
your language of choice. your language of choice.
<a name="A4"></a> <a name="example_uses_and_sample_commands_in_contrib"></a>
### example uses and sample commands in contrib ### example uses and sample commands in contrib
<a name="A5"></a> <a name="fork"></a>
#### fork #### fork
@ -176,7 +176,7 @@ So now we have an actual command to just create a repo and do nothing else:
`ssh git@server git-init \'reponame\'`. [Yes; those single quotes are `ssh git@server git-init \'reponame\'`. [Yes; those single quotes are
required. Deal with it.] required. Deal with it.]
<a name="A6"></a> <a name="rmrepo"></a>
#### rmrepo #### rmrepo
@ -188,7 +188,7 @@ Use it like this:
The script checks to make sure that the repo being deleted was *created* by The script checks to make sure that the repo being deleted was *created* by
the user invoking it. the user invoking it.
<a name="A7"></a> <a name="enable_disable_push_access_temporarily"></a>
#### enable/disable push access temporarily #### enable/disable push access temporarily
@ -226,7 +226,7 @@ in doc/2. You need code like this in `update.secondary` (don't forget to
exit 0 exit 0
<a name="A8"></a> <a name="bonus_restricted_admin"></a>
#### (bonus) restricted admin #### (bonus) restricted admin

View file

@ -2,13 +2,13 @@
In this document: In this document:
* <a href="#A1">when/why do we need it?</a> * <a href="#when_why_do_we_need_it_">when/why do we need it?</a>
* <a href="#A2">how do we use it?</a> * <a href="#how_do_we_use_it_">how do we use it?</a>
* <a href="#A3">summary of settings in RC file</a> * <a href="#summary_of_settings_in_RC_file">summary of settings in RC file</a>
* <a href="#A4">what are the downsides?</a> * <a href="#what_are_the_downsides_">what are the downsides?</a>
* <a href="#A5">(extra coolness) usergroups and LDAP/similar tools</a> * <a href="#extra_coolness_usergroups_and_LDAP_similar_tools">(extra coolness) usergroups and LDAP/similar tools</a>
<a name="A1"></a> <a name="when_why_do_we_need_it_"></a>
### when/why do we need it? ### when/why do we need it?
@ -95,7 +95,7 @@ Phew!
You can imagine what that does when you have 10,000 users and 10,000 repos. You can imagine what that does when you have 10,000 users and 10,000 repos.
Let's just say it's not pretty :) Let's just say it's not pretty :)
<a name="A2"></a> <a name="how_do_we_use_it_"></a>
### how do we use it? ### how do we use it?
@ -142,7 +142,7 @@ 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.
<a name="A3"></a> <a name="summary_of_settings_in_RC_file"></a>
### summary of settings in RC file ### summary of settings in RC file
@ -162,7 +162,7 @@ you push the gitolite-admin repo with changes.
[gw]: http://github.com/sitaramc/gitolite/blob/pu/doc/3-faq-tips-etc.mkd#gitweb [gw]: http://github.com/sitaramc/gitolite/blob/pu/doc/3-faq-tips-etc.mkd#gitweb
<a name="A4"></a> <a name="what_are_the_downsides_"></a>
### what are the downsides? ### what are the downsides?
@ -176,7 +176,7 @@ subset of the allowed @fragname, which would work normally, do not work now).
(If you didn't understand all that, you're probably not using delegation, so (If you didn't understand all that, you're probably not using delegation, so
feel free to ignore it!) feel free to ignore it!)
<a name="A5"></a> <a name="extra_coolness_usergroups_and_LDAP_similar_tools"></a>
### (extra coolness) usergroups and LDAP/similar tools ### (extra coolness) usergroups and LDAP/similar tools