2012-04-11 15 views
1

特定のユーザーがチェンジセットをリポジトリのデフォルトブランチにプッシュするのを制限したいとします。可能であればどうしますか?変更セットをデフォルト(Mercurial)にプッシュしないように制限する

+0

サーバーの設定に関する詳細情報をご提供ください。 – C2H5OH

+0

私たちはWindowsサーバー2008がインストールされたマシンにリポジトリを保存します。そのマシン上の水銀のバージョンは1.7.5です。すべてのリポジトリはc:\ repositoryフォルダに移動するように設定されています。各ユーザーは自分のマシン上に独自のローカルクローンを持っています。ユーザーは、作業が完了したときにのみサーバーにコミットします。そこから、リポジトリに実際にコミットする前に、ユーザ名とパスワードでログインする必要があります。私は[acl.deny.branches]を使って調べましたが、実際にユーザーを制限することには何の幸運もありませんでした。 – themaniac27

答えて

4

ACL extensionが適しています。ただし、次の点を考慮する必要があります。

  • 拡張子はサーバーリポジトリで有効にする必要があります。つまり、各務めリポジトリのhgrcファイルには、ACLの設定が定義されている必要があります。

    [extensions] 
    acl = 
    
    [hooks] 
    pretxnchangegroup.acl = python:hgext.acl.hook 
    
    [acl] 
    sources = serve 
    
    [acl.deny.branches] 
    default = user1, user2, user3 
    
  • プッシュが拒否されていこれらのユーザーは、システムユーザーです。つまり、ユーザー名は、Webサーバーによって提供された資格情報から取得されます。コミットメタデータのAuthor:フィールドには、はありません。があります。

  • チャージグループの許可または拒否は、のみです。拒否されたユーザーのうち1人がを含むコミットのグループをプッシュすると、がデフォルトのブランチにコミットされます(他のコミットが許可されていても)全体のプッシュは拒否されます。これは、ユーザがデフォルトのブランチと頻繁にマージする傾向がある場合にはそれほど奇妙ではありません。

また、独自のpretxnchangegroupフックを書くこともできますが、ACL拡張機能よりもはるかに能力がありません。

関連する問題