6

特定のユーザーが特定のディレクトリ内にあるファイルだけを変更できるように git と gitolite を構成する方法は?

たとえば、origin master ブランチのファイル:

/dir1/
/dir2/file1
/dir2/file2
/dir3/file1

ユーザーkathrine、変更のみ/dir2/file1を許可し、/dir2/file2

$kathrine: git clone git@example.com:test.git

結果:

/dir2/file1
/dir2/file2

ディレクトリごとのディレクティブはありますか、gitolite.confまたはこのユーザーの新しいブランチで git を構成する必要がありますか?

グラフィック デザイナーにソース コード ファイルへのアクセスを許可したくないだけです。

4

1 に答える 1

4

2010: Gitolite 2 用 (gitolite 3 用に変更されている可能性があります)

いいえ (つまり、適切なコンテンツを含む専用のブランチを作成する必要があります)。

gitoliteの著者自身が次のように述べています。

私は、中央サーバー上の複数の git リポジトリに対するブランチ レベルのアクセス制御という素晴らしい仕事をしている gitolite というプロジェクトの作成者です。私のターゲット「市場」は、まさに git の企業ユーザーです。

これまでのところ、読み取りアクセスをリポジトリの一部に制限する必要がある状況は見たことがありません (git ではそれができません)。

[まばらなチェックアウトが役立つかもしれませんが、とにかく簡単ではありません)

多くの場合、書き込みアクセスを制限する必要があり、gitolite では以下を制限できます。

  • 両方ともブランチ名 (たとえば、QA リードのみが一連のコミットを「QA-done」ブランチにプッシュできます)
  • またはファイル名で指定します (たとえば、チーム リーダーだけが Makefile と のファイルを変更できますsrc/very-important-and-critical-module)。

セクション「セキュリティ、アクセス制御、および監査」を参照してください。書き込みアクセスの例を次に示します。

conf/example.confファイルには詳細な構文がすべて含まれています。

repo foo
        RW+ = lead_dev # rule 1
        RW = dev1 dev2 dev3 dev4 # rule 2

        RW NAME/ = lead_dev # rule 3
        RW NAME/doc/ = dev1 dev2 # rule 4
        RW NAME/src/ = dev1 dev2 dev3 dev4 # rule 5

プッシュされているコミットによって触れられた各ファイルは、それらのルールに対してチェックされます。

  • lead_dev は変更を任意のファイルにプッシュできます。
  • doc/dev1/2 は " " および " "のファイルに変更をプッシュできますsrc/(ただし、トップレベルにはプッシュできませんREADME)。
  • また、dev3/4 は " " 内のファイルにのみ変更をプッシュできますsrc/

そうは言っても、OPが言うように、難しい質問が残っています:

選択したファイルのみを使用して新しいブランチを作成し、以前のコミットを削除して、グラフィック デザイナーがそれらにアクセスできず、クローン後に選択したファイルのみを表示するにはどうすればよいですか?

一般原則:

それらのファイルが存在しなかった履歴の時点で「graph_designer」ブランチを作成します

そこから、次の 2 つの選択肢があります。

  • 現在のコミット ( git rebase --interactive) を再編成して、最初にdir2ファイルのみのコミットを作成します (その後、他のディレクトリに影響を与えるコミットを行います)。
  • または、最初の選択肢があまりにも多くの作業を表している場合 (または、それらのコミットが他のリポジトリで既にプッシュおよびプルされているために不可能な場合)、その新しいブランチに関連ファイルをコピーして追加するだけです。
    つまり、それらのファイルの過去の履歴はありませんが、最初からその履歴は必要ない場合があります。

その ' graph_designer' はクローンを作成できる唯一のブランチであり、許可されていないファイルの履歴は含まれません。

于 2010-07-08T15:23:18.900 に答える