問題タブ [mercurial-hook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2075 参照

mercurial - PythonフックからMercurialコマンド( "hg update")を呼び出す

MercurialhgwebをWindows200864ビットおよびIISでセットアップしています。リポジトリの場所はネットワーク共有です。

リポジトリにフックを作成して、changeroupで「hgupdate」コマンドを発行したいと思います。外部フックを使用できません。これは、作業ディレクトリとしてネットワーク共有を使用してcmd.exeを起動するためです(また、cmd.exeはネットワーク共有をサポートしていません)。

したがって、Mercurialコマンドを呼び出すPythonフックの例を探しています。Mercurial.commandsモジュールがあることに気付きましたが、Webで例を見つけることができず、Pythonの経験もあまりありません。

Pythonフックを使用してMercurialコマンドを呼び出す例はありますか?これをすべてhgrcで行うことは可能ですか、それとも外部の.pyファイルが必要ですか?

0 投票する
1 に答える
1296 参照

mercurial - 作業コピーをスキャンする Mercurial pre-push フック

人々がプッシュできるリポジトリにフックをセットアップする必要があります。これにより、検証が実行されます (検証が失敗した場合にプッシュを拒否することが目標です)。プッシュが成功した後に自動更新するようにいくつかのフックがセットアップされており、複数のヘッドが防止されます。

検証スクリプト (たとえば、単体テストを実行するシェル スクリプト) を書くのに問題はありませんが、完全な作業コピーで実行する必要があります。

私の問題は、それを pretxnchangegroup フックに入れるだけでは、更新されたファイルで動作しないことです。フック内で hg update を実行しようとすると、検証が失敗してプッシュがロールバックされるたびにリポジトリが破損します。

私の現在の解決策は、リポジトリを一時フォルダーに複製し、そこで実際の検証を実行することです。しかし、これは少し見苦しいと思います。更新だけを行うインプレース検証よりも効率が悪いです。この種のフックはセットアップできますか?

0 投票する
1 に答える
346 参照

python - 一部の拡張機能が hgrc ファイルで構成されているように、mercurial フックを構成できますか?

どのフックがいつ実行されるかを指定する方法を知っています。私が知りたいのは、hgrcファイルを介してフックに構成を渡すことができるかどうかです。拡張機能はこれを行うことができます。

フックについても同様のことができるようにしたい、例えば

このようなことは可能ですか?これを行う方法を検索しても、有用なものは何も見つかりませんでした...可能であれば、(Python インプロセス) フックハンドラーで構成を読み取るにはどうすればよいですか?

0 投票する
2 に答える
284 参照

mercurial - Mercurial フック -- フック間で情報を渡しますか?

現在pre-commit、mercurial プロジェクトにフックがあり、必要に応じてプロジェクトのバージョン番号を更新するオプションをユーザーに提供します (たとえば1.01.0.1または1.1またはに2.0)。これらのオプションのいずれかを選択すると、コミットが行われる前に、フックがプロジェクトのファイルの 1 つのバージョン番号を更新します。

を実行するhg commitと、このフックが実行され、関連するファイルが新しいバージョン番号で更新され、コミットが実行されます。

それも呼び出すようにフックに追加したいと思いhg tag <new_verson_number>ます。

ただし、これをpre-commitフックに追加することはできません。コミットが呼び出される前にタグが追加され、タグが古いリビジョンになるためです。

hg tagコマンドをcommitフック (コミット後に実行)に追加して、一連のイベントが次のようになるようにしたいと思います。

  • hg commit -m "my commit message"
  • ユーザーははいと言います。バージョン番号を変更したいです
  • バージョン番号は関連ファイルで更新されます
  • commit が発生する [ここまでは問題ありません]
  • ユーザーがバージョン番号を変更した場合は、コミット フックを実行しますhg tag <new_version_number>

ここで、格納されているファイルから新しいバージョン番号を読み取って実行する commit フックを追加できますがhg tag <new_version_number>、ユーザーバージョン番号を変更しないことにした場合はどうなるでしょうか? その場合、タグを付けたくないですし、やみくもに実行すると、hg tag <new_version_number>いらないタグ​​が付いてしまいます。

それで、pre-commitフックにいくつかの情報を残すようにフックに指示できる方法はありますかcommit(タグを追加するかどうかのはい/いいえ)、commitフックはこれを使用してタグを追加するかどうかを決定できますか?

乾杯。

0 投票する
2 に答える
468 参照

python - Mercurial Python フックから Django モデルを使用する

changegroup フック中に、DB でいくつかのビルド要求をキューに入れようとしています。DB テーブルは Django アプリによって管理されます。そのため、フックでは、Django モデルを使用してビルド リクエストを送信したいと考えています。ただし、モデルを正常にインポートするための設定を正しく行うことができません。

この ( https://docs.djangoproject.com/en/1.3/ref/django-admin/ ) 情報に基づいて、django サイトを sys パスに追加し、DJANGO_SETTINGS_MODULE を設定するだけです。django サイトは /opt/mysite にあるため、Python コンソールからこれを試してみます。

2 回目の試行:

これに基づいて ( http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/ ) setup_environ() を使用できます。Python シェルでこれを試すと、動作します:

ただし、Mercurial フックでこれを試すと、Build モデルをインポートしようとするとすぐにエラーが発生します。

「from mysite.myapp.models import Build」行に到達すると、次のエラー出力が表示されます。

この問題の原因について何か考えはありますか?

0 投票する
1 に答える
551 参照

node.js - プッシュ後にMercurialでノードアプリを更新して再起動する方法は? (hg の git post-receive に相当)

以前にこれを達成するために Git を使用したことがありますが、別のプロジェクトでは Mercurial が必要です。私の Git レシピにはpost-receive hook、次のような a が含まれていました。

サーバー上のリモートリポジトリにプッシュするたびに、作業中のアプリディレクトリが更新されます。次に、 node-supervisor :を使用してアプリを実行しますsupervisor server.js。これにより、ファイルの変更が監視され、git push / ファイルの変更後に Node が再起動されます。

私の質問は、Mercurial でこれを達成する最善の方法は何かということです。同様の代替手段としてフックを調べましたが、changegroupフックの例が見つかりません。ありがとう!


更新:私の実装

以下の回答とコメントに従って、changegroupフックを使用しました。具体的には、myrepo/.hg/hgrc私が使用した:

このプロジェクトでは、基本的なシェル スクリプトを使用してノードを再起動するか、上記のノード スーパーバイザーをインストールします。次のようになります。

実行中の Node プロセスは 1 つだけなので、pkill (all) が機能します。また、repo ディレクトリから直接 server.js を実行しています。

0 投票する
2 に答える
704 参照

mercurial - Mercurialチェンジグループフック:リポジトリURL

Mercurialリポジトリサーバーで、現在のリポジトリURLまたは少なくとも名前(サブパス)を(changegroupまたはある程度同等の)フックで把握するにはどうすればよいですか?IISでHgWebを実行しています。

$HG_URLpush受信リポジトリではなく、ersURLを返します。$HG_SOURCEのみを返しますserve

changegroupコンテキスト:JenkinsにSCMポーリングを実行するように指示するフックを使用して、Jenkinsを作成しようとして/mercurial/notifyCommit?url=<url>います。これを機能させることができない場合は、約50回のcURL呼び出しを実行する必要があります(サーバー上のリポジトリごとに1回)。すべてのchangegroupトリガーで、そしてこのリストをhgweb.config永遠に維持することを忘れないでください。

0 投票する
1 に答える
548 参照

python - Python のメイン関数を使用した Mercurial コミット フック

Python で複雑な水銀コミット フックを作成しようとしています。OptionParser を使用してパラメーターを渡すことも許可したいと考えています。これが私がこれまでに持っているものの要点です:

.hg/hgrc 構成:

pythonFile.py:

実行するhg commit -m 'message'と、「使用法: hg [オプション] hg: エラー: そのようなオプションはありません: -m」というエラーが表示されます。試してみるhg commit --test-dir '/somedir'と、「hg commit: オプション --test-dir が認識されません」というエラーが表示されます。

最後にcommit = python:/mydir/pythonFile.py:main --test-dir '/somedir'、hgrc 構成で指定しようとしたところ、次のエラーが発生しました: "AttributeError: 'module' object has no attribute 'main --test-dir '/somedir''"

ご協力ありがとうございました。

0 投票する
2 に答える
642 参照

mercurial - ファイルを変更するための Mercurial プリコミット スクリプト

Mercurial の分散型の性質にもかかわらず、私たち全員がプッシュし、夜間のビルド、パッケージングなどを行う集中型サーバーがあります...

私たちが達成したいことは次のとおりです。ソース管理されているファイルの 1 つに、理想的にはコミットごとに増やす必要があるメジャー + マイナー バージョン番号が含まれています。開発者のマシンでは集中番号付けができないため、コミットがプッシュされるたびに新しいマイナー バージョン番号をそのファイルに書き込む、メイン サーバー上のプリコミット スクリプトを考えていました。問題は次のとおりです。

  • プリコミットなので、このファイルの変更は同じコミットの一部になることができますか?
  • そうでない場合、プリコミットが別のコミットを引き起こす可能性がありますか?また、それがカスケード/再帰するのをどのように防ぎますか?
  • どうやってそれをしますか?
  • より良い解決策はありますか?