11

私はここで本当に途方に暮れています。私はかなりの数の例を読み、それらすべてを試しました。最も基本的なものは問題なく動作しますが、もう少し複雑なものに移動しようとすると、すべてがバラバラになります(例を直接コピーしている場合でも)。また、記録のために、サーバースパムによって示されるように、私はgitoliteバージョン3を使用しています。

    this is gitolite@ubuntuserver running gitolite3 v3.1-2-g3eefc06 on git 1.7.9.5         

これはすべて、私が達成しようとしていることは(私が思うに)比較的単純であることを示しています。私にはジュニア開発者のグループ[@scrubs]がいますが、彼らに新しいブランチを作成してコミットし、マスターを読み取ったりプルしたりできるようにしたいだけです。そうすれば、コードがマージされる前にコードを確認できます。

私には、自由に統治したい上級開発者[@vets]のグループがいます。

私の設定ファイルは次のとおりです。

     @scrubs         = al ted matthew
     @vets           = kevin will guy

     @offlimitbranches = master$

     repo    gitolite-admin
             RW+     =   @vets matthew

     repo    dawebsite
             RW+                     =   @vets
             -   @offlimitbranches   =   @scrubs
             RW+                     =   @scrubs
             R   @offlimitbranches   =   @scrubs
             R                       =   daemon
             option deny-rules = 1

     dawebsite "Owner"               = "This is THE site"

追加するまで、拒否するために何も機能しないことに気づきました:

    option deny-rules = 1

そのうちの20の例のうちの1つで見つけたと思います(怒りのタッチは欲求不満を許します。

この現在の設定では、獣医は期待どおりに何でもできます。

スクラブはマスターにプルまたはプッシュすることはできません(これは、一致する可能性のある最初のルールを取得するためだと思いますか?)スクラブは、マスター以外のブランチにプルまたはプッシュすることも、新しく作成されたブランチをプッシュすることもできません。試行するたびに、同じメッセージが返されます。「致命的:[R/W]任意のdawebsitematthewがrefs/heads /master$によって拒否されました」

master、master $、@ offlimitbranches、さらにはrefs / heads / masterを使用してみましたが、ブランチrefは役に立ちませんでした。

誰かが私のためにこれにいくつかの光を当てるのを手伝ってくれるなら、私は非常に感謝するでしょう。

アップデート**

スクラブグループからマシューを削除して、マシューを直接操作しようとすると、気付いたことがあります。

    -       master$         =   matthew
    RW+                     =   matthew

彼が新しいブランチに移動して次のことを試した場合:(ログに頭を上げてくれたVonCに感謝します)

git pull origin newBranch
git push origin newBranch

それぞれがエラーを返します

引く:

ARGV=matthew    SOC=git-upload-pack 'dawebsite.git'     FROM=172.24.1.198
access(dawebsite, matthew, R, 'any'),-> R any dawebsite matthew DENIED by refs/heads/master$
trigger,Writable,access_1,ACCESS_1,dawebsite,matthew,R,any,R any dawebsite,matthew DENIED by refs/heads/master$
R any dawebsite matthew DENIED by refs/heads/master$<<newline>>(or you mis-spelled the reponame)

押す:

ARGV=matthew    SOC=git-receive-pack 'dawebsite.git'    FROM=172.24.1.198
access(dawebsite, matthew, W, 'any'),-> W any medehrdev matthew DENIED by refs/heads/master$
trigger,Writable,access_1,ACCESS_1,dawebsite,matthew,W,any,W any dawebsite matthew DENIED by refs/heads/master$
W any dawebsite matthew DENIED by refs/heads/master$<<newline>>(or you mis-spelled the reponame)

私のすべてのブランチがrefmaster$と一致しているようですが、それはすべてマスターから生成されたためですか?

4

2 に答える 2

14

私の設定、それは今働いています:

@gatekeepers = ustimenko
@developers  = ustimenko user1 user2
@deployers   = puppet

@project     = repo1
@project     = cakephp

repo @project
    RW+                 = @gatekeepers  
    R   master develop  = @developers
    -   master develop  = @developers
    RW+                 = @developers
    R                   = @deployers

  1. ゲートキーパーにはフル アクセスがあります。
  2. 開発者はマスターを読み取ってブランチを開発できますが、そこで他のアクションを拒否しました。
  3. 開発者は他のすべてのことを行うことができます。
  4. デプロイ担当者はすべてを読み取ることができます。
于 2012-11-23T15:39:02.710 に答える
0

うーん、私はドキュメントを見てきました。で、ここでやってみました。

@anythingは、ユーザーのグループまたは他のグループ用です。そこで試したことは正しくありません。「@」演算子を変数記号として使用することはできません。グループの文書化

repo    dawebsite
    RW+                 =   @vets
    -   branch1         =   @scrubs
    RW+                 =   @scrubs
    R   branch1         =   @scrubs
    R                   =   daemon
    option deny-rules = 1

Gitolite 権限

于 2012-10-19T19:11:57.123 に答える