2011-01-12 11 views
9

私が達成しようとしているのは次のとおりです。 同僚がグループ@共同作業者で、 クライアントがグループ@clientsにあります。Gitoliteで特定のリポジトリブランチの読み取りを拒否する

Gitリポジトリは、誰でも読むことができますが、特別な支店があります。私は新しいブランチ「インターン」を作成し、@coworkersがRWの+のアクセスもしなければならないが、クライアントはRまたはW.

できないようにする必要があり つまり私は私が

repo myrepo 
    - intern = @clients 
    RW+   = @clients @coworkers 

であることを達成することができます思った。しかし、これはありませんうまくいかない。

答えて

0

私はギトライト専門家ではありませんが、私はと思っています。のルールは順番に処理されています。最後の2行を単に逆転させてみましたか?つまり、まず@clientsと@coworkersに許可を与え、次に@clientsによってinternへのアクセスを拒否します。

9

は、gitoliteの著者でdiscussionによると、アクセス制限は、枝のために可能ではないお読みください。

Gitoliteのあたりの分岐のもののみ書き込みアクセスのために働きます。それは は読み込みアクセスでは機能しません。なぜなら、git自体はその区別を行うために をサポートしていないからです。

+0

git *では設計上*の読み取りアクセスを制限することはできません。クローン作成時に常に完全なリポジトリを取得する必要があります。 – sleske

+0

最新バージョンのGitoliteの部分コピー機能で可能になりました。下の私の答えをチェックしてください。 –

3

gitoliteのpartial-copy feature

  1. 最新gitoliteバージョンのコメントを外し
  2. を使用してくださいを使用してgitolite v3.xの最新バージョンの枝をgitoliteへの読み取りアクセスを制限することが可能になりました〜/ .gitolite.rcファイル
  3. ENABLEセクションでpartial-copy行は〜/ .gitolite.rcファイル
  4. 使用partial-に$GIT_CONFIG_KEYS = '.*'を設定しましたコピーオプションを使用して、元のリポジトリのコピーですがブランチのない別のリポジトリを作成します。

例:あなたがクライアントをしたい場合はgitのは、それはあなたがサーバー上でこのコマンドを使用することができmasterブランチを削除することはできませんという苦情が寄せられた場合のみ、deployブランチ

repo my-repo 
    RW+  = @coworkers 

repo my-repo-deploy 
    RW deploy = @clients 
    -   = @clients 

    - VREF/partial-copy   = @all 
    config gitolite.partialCopyOf = my-repo 

へのアクセス権を持っている:

sudo git config --system receive.denyDeleteCurrent warn 
sudo git config --global receive.denyDeleteCurrent warn 

クライアントは、次のようなコマンドでmy-repo-deployリポジトリのdeployブランチをクローンできます。

git clone -b deploy [email protected]:my-repo-deploy 
関連する問題