7

複数の開発者向けの共有サーバーに開発環境をセットアップしています。本番環境で使用されるすべてのコードを格納する 1 つのリポジトリと、チームのさまざまなメンバーが開発に使用する他の多くのリポジトリを用意します。私が望むのは、本番レポが「プルのみ」であることです。ユーザーはいつでもそこからプルして本番の変更をローカルで取得できますが、プッシュは本番管理者が処理するか、少なくともパスワードを要求する必要があります。何かのようなもの:

[user@machine /devroot/myrepo]$ git pull $PRODUCTION master
From <location>
*branch             master       ->  FETCH_HEAD
Already up-to-date 

[user@machine /devroot/myrepo]$ git push $PRODUCTION master
error: user `user` is not authorized for this action

または

[user@machine /devroot/myrepo]$ git push $PRODUCTION master
HEAD @ `$PRODUCTION`-Please enter password:

ファイルのアクセス許可でこれを行うことができると思いますが、それはエレガントな解決策とは思えません。gitにはこのようなものが組み込まれていますか?

4

6 に答える 6

3

複雑なリポジトリ アクセス制御が必要な場合は、Gerritを調べることをお勧めします。その主な焦点はコード レビューです (これも非常に価値があります!) が、副作用としてアクセス制御も行います。

それ以外の場合は、本当に単純なものが必要な場合は、ファイルのアクセス許可は、1 台のマシンでこれを処理するのに最適な方法です。ユーザーがリポジトリを含むディレクトリ内のファイルに書き込むことができない限り、プッシュすることはできません。私はそれについてまったくエレガントではありません!

于 2013-07-17T17:03:13.943 に答える
3

より「同意する大人」のような解決策はうまくいくでしょうか?

たとえば、git では、リモート フェッチのみを設定し、リモート プッシュをダミーの存在しない URL のままにして、ユーザーが誤っgit pushてアクセスできないようにします。

編集: これは、この質問で受け入れられているものと似ています。

于 2016-07-27T07:05:37.313 に答える
2

gitoliteまたはgitosisを使用できます。次に、各ブランチをプル、プッシュできるユーザー、タグを作成できるユーザーのリストを作成できます。

私はギトーシスよりもジトライトの方がよく知っています。構成は、ファイルの単純な構文を持つ git リポジトリのみです。

于 2013-07-17T18:02:16.043 に答える
1

git 自体には、権利管理は含まれていません。

git リポジトリを管理するソフトウェアでは、これを 1 レベル高くすることができます (多少集中化されたアプローチを採用する場合ですが、ほとんどの企業がこれを望んでいると思います)。そのため、gitolite ( http://gitolite.com/gitolite/ ) または gitlab ( http://gitlab.org/ ) でこれを行うことができます

于 2013-07-17T20:28:28.707 に答える