0

Subversionでは、フックはリポジトリごとに記述されます。各フックは、リポジトリのルートにある「hooks」という名前のフォルダに、説明的なファイル名(pre-commitなど)で書き込まれます。BZRのドキュメントによると、フックは通常、グローバルにインストールされます(たとえば、〜/ .bazaar / plugins /ディレクトリに)。

たとえば、ブランチにコミットされ、ユーザーがプラグインをインストールしなくても実行されるpre-commitフックを作成することは可能ですか?

ドキュメントやいくつかのコードディスカッションで、「ブランチフック」と呼ばれるものへの参照があります。これは有望に聞こえます。

私はこのブログを見つけました:http ://schettino72.wordpress.com/2008/01/20/how-to-execute-tests-on-a-bazaar-pre-commit-hook/ 、引用:

「バザールのプラグインはプロジェクト固有ではないため、プラグインを適用するプロジェクト(ブランチ)を制御することはできません(すべてに適用されます)。」

これはあまり有望ではありません。ブログには、リポジトリにフックが存在する場合にそれを呼び出すプラグインを作成してインストールするという回避策が記載されています。理想的には、ユーザーがプラグインをインストールして、本当に基本的なフック、つまり単純なテストを実行することに依存したくないのです。これは可能ですか?

4

3 に答える 3

2

バザーサーバーを使用して、フックをインストールできます。

また、興味のある次のリンクを見つけることができます:

http://people.samba.org/bzr/jelmer/bzr-shell-hooks/trunk/

http://bazaar.launchpad.net/~stianse/%2Bjunk/bzr-shell-hooks/

于 2010-03-04T16:54:01.207 に答える
2

私はこれについていくつかの調査を行い、分散型リビジョン管理システムにブランチ固有のフックがないことの背後にある動機を見つけました。必要な機能の例として、一元化されたRCSであるSubversionと比較しました。

GITとMercurialは分散型RCS(Bazaarなど)であり、ブランチ固有のフックやグローバルフックへのさまざまなアプローチなど、フック用のツールがあります。とにかく、フックはリビジョン制御されておらず、セキュリティ上のリスクがあるため、ブランチのユーザーがフックを有効にする必要があります。フックに関するMercurialのドキュメントの「フックとセキュリティ」というタイトルのセクションでは、次のように述べています。

Mercurialでは、フックはリビジョン制御されておらず、リポジトリのクローンを作成したり、リポジトリからプルしたりするときに伝播しません。この理由は単純です。フックは完全に任意の実行可能コードです。それはあなたのマシン上であなたの特権レベルであなたのユーザーIDの下で実行されます。

分散型リビジョン管理システムがリビジョン管理されたフックを実装することは非常に無謀です。これは、リビジョン管理システムのユーザーのアカウントを破壊するための簡単に悪用可能な方法を提供するからです。

Subversionのような一元化されたRCSでは、フックはリポジトリサーバーで実行されるため、ユーザーのアクセス許可とサーバーのセットアップにより、損傷を与えるフックスクリプトの影響が制限されます。分散RCSでは、フックは通常、ユーザーのローカルマシンで実行されるため、リスクが伴います。

Vitaly.v.chが言及しているように、Bazaarサーバーは、プッシュおよびプルされたときにフックを実行するように設定できます。ただし、コミットはユーザーのマシンで行われるため、pre-commitフックは意味がありません。その場合、それはプレプッシュフックのようになります。

Bazaarにはフックに必要なすべての機能がありますが、フックにはセキュリティ上のリスクがあるため、フックをインストールして有効にするには、個々のユーザー構成が必要です。

于 2010-03-06T21:16:46.360 に答える
1

いいえ、ユーザーはフックをアクティブにするためにプラグインをインストールする必要があります。

于 2010-02-24T22:29:07.633 に答える