1

プロジェクトを 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/ディレクトリ内のファイルに触れず、それを自分のマスターブランチにコミットしようとしない限り、誰でも自分のdevブランチにプッシュできる」ことを意味すると私は信じています。そうですか?ええと、スポイラー、それは正しくありませんが、何が間違っているのかわかりません。

問題は、私が実行するときです

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

理由はわかりません。何か案は?

編集:

問題を解決しました...ちょっと。何が間違っていたのかはまだわかりませんが、自分のやりたいように見えるカスタム 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]

うまくいけば、これにより、次の人が数時間の髪を引っ張る時間を節約できます.

4

0 に答える 0