Merge branch '@all-for-repos' into wildrepos
Conflicts: src/gl-compile-conf
This commit is contained in:
commit
203d5690be
|
@ -106,6 +106,14 @@ repo gitolite
|
|||
repo @oss_repos
|
||||
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
|
||||
|
||||
# - refexes are specified in perl regex syntax
|
||||
|
|
|
@ -5,6 +5,10 @@ In this document:
|
|||
* common errors and mistakes
|
||||
* git version dependency
|
||||
* other errors, warnings, notes...
|
||||
* ssh-copy-id
|
||||
* cloning an empty repo
|
||||
* `@all` syntax for repos
|
||||
* umask setting
|
||||
* getting a tar file from a clone
|
||||
* differences from gitosis
|
||||
* simpler syntax
|
||||
|
@ -77,38 +81,58 @@ normal way, since it's not empty anymore.
|
|||
|
||||
### other errors, warnings, notes...
|
||||
|
||||
* 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-copy-id
|
||||
|
||||
* it copies it to the server as some file
|
||||
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.
|
||||
|
||||
* it appends that file to `~/.ssh/authorized_keys` on the server
|
||||
(creating it if it doesn't already exist)
|
||||
* it copies it to the server as some file
|
||||
|
||||
* it then makes sure that all these files/directories have go-w perms
|
||||
set (assuming user is "git"):
|
||||
* it appends that file to `~/.ssh/authorized_keys` on the server
|
||||
(creating it if it doesn't already exist)
|
||||
|
||||
/home/git/.ssh/authorized_keys
|
||||
/home/git/.ssh
|
||||
/home/git
|
||||
* it then makes sure that all these files/directories have go-w perms
|
||||
set (assuming user is "git"):
|
||||
|
||||
[Actually, sshd requires that even directories *above* ~ (/, /home,
|
||||
typically) also must be `go-w`, but that needs root. And typically
|
||||
they're already set that way anyway. (Or if they're not, you've got
|
||||
bigger problems than gitolite install not working!)]
|
||||
/home/git/.ssh/authorized_keys
|
||||
/home/git/.ssh
|
||||
/home/git
|
||||
|
||||
* cloning an empty repo is only possible with clients greater than 1.6.2.
|
||||
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
|
||||
[Actually, sshd requires that even directories *above* ~ (/, /home,
|
||||
typically) also must be `go-w`, but that needs root. And typically
|
||||
they're already set that way anyway. (Or if they're not, you've got
|
||||
bigger problems than gitolite install not working!)]
|
||||
|
||||
* 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]
|
||||
#### cloning an empty repo
|
||||
|
||||
* 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
|
||||
Cloning an empty repo is only possible with clients greater than 1.6.2. 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 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
|
||||
|
||||
### getting a tar file from a clone
|
||||
|
||||
|
|
|
@ -148,8 +148,9 @@ Here's how it all hangs together.
|
|||
|
||||
Luckily, ssh has a very convenient way of capturing all the connection
|
||||
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
|
||||
like for us (the easy install script puts it there the first time):
|
||||
and keypair to be used) in one "paragraph" of `~/.ssh/config`. This is
|
||||
what the para looks like for us (the easy install script puts it there the
|
||||
first time):
|
||||
|
||||
host gitolite
|
||||
user git
|
||||
|
|
|
@ -193,8 +193,11 @@ sub parse_conf_file
|
|||
{
|
||||
# grab the list and expand any @stuff in it
|
||||
@repos = split ' ', $1;
|
||||
@repos = expand_list ( @repos );
|
||||
|
||||
if (@repos == 1 and $repos[0] eq '@all') {
|
||||
@repos = keys %repos;
|
||||
} else {
|
||||
@repos = expand_list ( @repos );
|
||||
}
|
||||
s/\bCREAT[EO]R\b/\$creater/g for @repos;
|
||||
}
|
||||
# actual permission line
|
||||
|
|
Loading…
Reference in a new issue