4

最近、mercurial ressoitory をセットアップしました。すべての pusing は ssh 経由で行われます。現在、LDAP アカウントを持つユーザーのみが変更をリポジトリにプッシュできます。ただし、ローカル リポジトリにコミットする場合、 --user を使用して任意のコミッター名を使用できます。コミッター名が LDAP アカウント名と一致しない状況が発生する可能性があります。これは避けたい。

これが起こらないようにするための最善の方法は何でしょうか? この問題に対処するには、フックが最適な方法でしょうか? これをローカルフックにしたくはありませんが、リポジトリと同じマシンに存在するフックです。プッシュのイベントでコミッター名が LDAP アカウントと一致するかどうか、および適切なエラー メッセージが返されないかどうかを確認する必要があります。

これは賢明な進め方のように思えますか、それとも私は間違った方法で問題に取り組んでいますか?

4

1 に答える 1

1

ユーザー名が正しいことを確認したいだけの場合は、Mercurial Serverを使用するときに可能です。これは、すべてのプッシュがユーザーの ssh キーで認証され、$REMOTE_USER 環境変数でキー名が見つかるため、pretxncommit タイプのフック(つまり、変更が適用された後) 作成者名とキー名が一致することを確認し、一致しない場合はコミットを拒否してロールバックできます。

たとえば、すべてのキーを coders/"name"_rsa.pub のようなパスに保存するという規則がある場合

次に、このコードでチェックを行う必要があります。

if [ "$REMOTE_USER" != "coders/`hg tip --template "{author}\n"`_rsa.pub" ]
   then
      echo "reject msg.." ; exit 1
fi

ただし、ユーザーが他のリポジトリから変更をプルしたばかりで (つまり、他の人が作成したコミット)、自分のキーを使用してそれらをリポジトリにプッシュした場合に問題が発生する可能性があります。その後、最初のコミットでユーザー名が正しかったとしても、フックはそれらを拒否します.. hg を使用すると、さまざまなユーザー名のリストであっても、リポジトリ間でチェンジセットを転送できます..これ..

于 2010-06-30T08:29:28.233 に答える