出于某种原因,我的 gitolite 没有附带示例配置文件,而且我似乎在任何地方都找不到,如果有人能找到我的副本,我确定这个问题在该文件中得到了回答,拜托!!
无论如何,gitolite 配置文件的格式很简单,这是我的一个片段
gitolite conf
# please see doc/gitolite.conf.mkd for details on syntax and features
@nmscDevs = dev1@compaid.com dev2@compaid.com dev3@compaid.com
@buildMgr = william_slepecki@compaid.com dev4@compaid.com
repo gitolite-admin
RW+ = gitadmin william_slepecki@compaid.com
repo grindstone
RW+ = gitadmin
RW+ prod$ = @buildMgr
- prod$ = @nmscDevs
RW = @nmscDevs
我的 keydir 文件夹中有几个公钥:
keydir/
gitadmin.pub
william_slepecki@compaid.com.pub
我的问题是 gitolite 似乎忽略了为个人用户设置的权限。除非我让 gitadmin 用户完全控制,否则在存储库上没有任何作用(读取、写入等)。然后好像大家都使用了 gitadmin 用户的权限。我像这样克隆存储库
git clone git@server:grindstone.git
但是当我尝试用这样的东西克隆时
git clone 'dev1@compaid.com'@server:grindstone.git
我提示输入密码。每个用户都需要在服务器上拥有一个帐户,以便他们可以通过 ssh 登录吗?
权限在 gitolite 中究竟是如何工作的?我被引导理解 git 用户需要一个帐户才能 ssh 进入服务器,然后一旦 gitolite 接管它使用与 git 请求一起传递的电子邮件来确定权限,我在这里错了吗?我错过了什么?
顺便说一句,这是我的 .ssh/config
host server
user git
hostname server
identityfile ~/.ssh/gitadmin
host server
user william_slepecki@compaid.com
hostname server
identityfile ~/.ssh/id_rsa
更新:我已经升级到最新版本的 gitolite,当我尝试克隆时,我得到了这个
$ git clone git@server:testing.git
Cloning into 'testing'...
FATAL: R any testing gitadmin DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly
我的配置文件现在看起来像这样:
repo testing
RW+ = william_slepecki
我的 .ssh 配置没有改变。另外,我的日志中有这个
2012-05-08.13:01:13 19027 ssh ARGV=gitadmin SOC=git-upload-pack 'testing.git' FROM=10.99.5.146
2012-05-08.13:01:13 19027 access(testing, gitadmin, R, 'any'),-> R any testing gitadmin DENIED by fallthru
2012-05-08.13:01:13 19027 trigger,Writable,access_1,ACCESS_1,testing,gitadmin,R,any,R any testing gitadmin DENIED by fallthru
这是我的全局 git 配置的顶部片段
[user]
name = Willie Slepecki
email = william_slepecki@compaid.com
为什么这仍然坚持将 gitadmin 放在 repo 上,为什么不使用 william_slepecki?这究竟是从哪里得到要使用的名称的?