gitolite权限被拒绝我没有改变的文件

时间:2013-11-07 21:32:43

标签: gitolite

我正在将项目从SVN迁移到Git / Gitolite并且我得到了一个无法解释的行为。配置文件的相关部分是

repo ade
    RW                                     = jenkins matt
    -   dev/USER/master and VREF/NAME/ade/ = @grads
    RW+ dev/USER/                          = @all
    option hook.post-receive               = jenkins

我认为这意味着“任何人都可以推送到他们自己的开发分支,只要他们不触摸ade /目录中的任何文件并尝试将其提交给他们的个人主分支”。是对的吗?嗯,好吧,破坏者,这不对,但我看不出我做错了什么。

问题是当我跑

git clone git@server:ade
git branch foo
git checkout foo
<<edit some file that's not in /ade/ and commit it>>
git push origin foo:dev/tom/foo

它说

remote: FATAL: W VREF/NAME/ade/filename.java ade tom DENIED by VREF/NAME/ade/
remote: error: hook declined to update refs/heads/dev/tom/foo

我不知道为什么。有什么想法吗?

编辑:

解决了问题... sorta。我仍然不知道我做错了什么,但我写了一个似乎做我想做的自定义VREF:

#!/usr/bin/env python
from subprocess import check_output
import sys

if sys.argv[8] in sys.argv[1] and "/".join(sys.argv[9:]) in check_output(["git", "diff-tree", "--no-commit-id", "--name-only", "-r", sys.argv[3]]):
  print sys.argv[7]

希望这能为下一个人节省几个小时的头发。

0 个答案:

没有答案