Merge branch '@all-for-repos' into wildrepos

Conflicts:
	src/gl-compile-conf
This commit is contained in:
Sitaram Chamarty 2009-12-21 23:02:02 +05:30
commit 203d5690be
4 changed files with 64 additions and 28 deletions

View file

@ -106,6 +106,14 @@ repo gitolite
repo @oss_repos repo @oss_repos
R = @all R = @all
# set permissions to all already defined repos
# (a repository is defined if it has permission rules
# associated, empty "repo" stanza or "@group=..." line is
# not enough). *Please* do see doc/3-faq-tips-etc.mkd for
# some important notes on this feature
repo @all
RW+ = @admins
# ADVANCED PERMISSIONS USING REFEXES # ADVANCED PERMISSIONS USING REFEXES
# - refexes are specified in perl regex syntax # - refexes are specified in perl regex syntax

View file

@ -5,6 +5,10 @@ In this document:
* common errors and mistakes * common errors and mistakes
* git version dependency * git version dependency
* other errors, warnings, notes... * other errors, warnings, notes...
* ssh-copy-id
* cloning an empty repo
* `@all` syntax for repos
* umask setting
* getting a tar file from a clone * getting a tar file from a clone
* differences from gitosis * differences from gitosis
* simpler syntax * simpler syntax
@ -77,8 +81,10 @@ normal way, since it's not empty anymore.
### other errors, warnings, notes... ### other errors, warnings, notes...
* don't have `ssh-copy-id`? This is broadly what that command does, if you #### ssh-copy-id
want to replicate it manually. The input is your pubkey, typically
don't have `ssh-copy-id`? This is broadly what that command does, if you want
to replicate it manually. The input is your pubkey, typically
`~/.ssh/id_rsa.pub` from your client/workstation. `~/.ssh/id_rsa.pub` from your client/workstation.
* it copies it to the server as some file * it copies it to the server as some file
@ -98,16 +104,34 @@ normal way, since it's not empty anymore.
they're already set that way anyway. (Or if they're not, you've got they're already set that way anyway. (Or if they're not, you've got
bigger problems than gitolite install not working!)] bigger problems than gitolite install not working!)]
* cloning an empty repo is only possible with clients greater than 1.6.2. #### cloning an empty repo
So at least one of your clients needs to have a recent git. Once at least
one commit has been made, older clients can also use it
* when you clone an empty repo, git seems to complain about `fatal: The Cloning an empty repo is only possible with clients greater than 1.6.2. So at
remote end hung up unexpectedly`. However, you can ignore this, since it least one of your clients needs to have a recent git. Once at least one
doesn't seem to hurt anything. [Update 2009-09-14; this has been fixed in commit has been made, older clients can also use it
git 1.6.4.3]
* gitweb not able to read your repos? You can change the umask for newly When you clone an empty repo, git seems to complain about `fatal: The remote
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
1.6.4.3]
#### `@all` syntax for repos
There *is* a way to use the `@all` syntax for repos also, as described in
`conf/example.conf`. However, there is an important difference between this
and the old `@all` (for users):
* `@all` for repos is immediately expanded, when found, into the currently
known list of repos. "Currently" means upto this point in the config
file, and "known" means having some user with some permissions associated
with the repo!
* This means that if you really want *all* repos, you'd better put this para
at the **end** of the config file!
#### umask setting
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
### getting a tar file from a clone ### getting a tar file from a clone

View file

@ -148,8 +148,9 @@ Here's how it all hangs together.
Luckily, ssh has a very convenient way of capturing all the connection Luckily, ssh has a very convenient way of capturing all the connection
information (username, hostname, port number (if it's not the default 22), information (username, hostname, port number (if it's not the default 22),
and keypair to be used) in one "paragraph". This is what the para looks and keypair to be used) in one "paragraph" of `~/.ssh/config`. This is
like for us (the easy install script puts it there the first time): what the para looks like for us (the easy install script puts it there the
first time):
host gitolite host gitolite
user git user git

View file

@ -193,8 +193,11 @@ sub parse_conf_file
{ {
# grab the list and expand any @stuff in it # grab the list and expand any @stuff in it
@repos = split ' ', $1; @repos = split ' ', $1;
if (@repos == 1 and $repos[0] eq '@all') {
@repos = keys %repos;
} else {
@repos = expand_list ( @repos ); @repos = expand_list ( @repos );
}
s/\bCREAT[EO]R\b/\$creater/g for @repos; s/\bCREAT[EO]R\b/\$creater/g for @repos;
} }
# actual permission line # actual permission line