問題タブ [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.
mercurial - PythonフックからMercurialコマンド( "hg update")を呼び出す
MercurialhgwebをWindows200864ビットおよびIISでセットアップしています。リポジトリの場所はネットワーク共有です。
リポジトリにフックを作成して、changeroupで「hgupdate」コマンドを発行したいと思います。外部フックを使用できません。これは、作業ディレクトリとしてネットワーク共有を使用してcmd.exeを起動するためです(また、cmd.exeはネットワーク共有をサポートしていません)。
したがって、Mercurialコマンドを呼び出すPythonフックの例を探しています。Mercurial.commandsモジュールがあることに気付きましたが、Webで例を見つけることができず、Pythonの経験もあまりありません。
Pythonフックを使用してMercurialコマンドを呼び出す例はありますか?これをすべてhgrcで行うことは可能ですか、それとも外部の.pyファイルが必要ですか?
mercurial - 作業コピーをスキャンする Mercurial pre-push フック
人々がプッシュできるリポジトリにフックをセットアップする必要があります。これにより、検証が実行されます (検証が失敗した場合にプッシュを拒否することが目標です)。プッシュが成功した後に自動更新するようにいくつかのフックがセットアップされており、複数のヘッドが防止されます。
検証スクリプト (たとえば、単体テストを実行するシェル スクリプト) を書くのに問題はありませんが、完全な作業コピーで実行する必要があります。
私の問題は、それを pretxnchangegroup フックに入れるだけでは、更新されたファイルで動作しないことです。フック内で hg update を実行しようとすると、検証が失敗してプッシュがロールバックされるたびにリポジトリが破損します。
私の現在の解決策は、リポジトリを一時フォルダーに複製し、そこで実際の検証を実行することです。しかし、これは少し見苦しいと思います。更新だけを行うインプレース検証よりも効率が悪いです。この種のフックはセットアップできますか?
python - 一部の拡張機能が hgrc ファイルで構成されているように、mercurial フックを構成できますか?
どのフックがいつ実行されるかを指定する方法を知っています。私が知りたいのは、hgrc
ファイルを介してフックに構成を渡すことができるかどうかです。拡張機能はこれを行うことができます。
フックについても同様のことができるようにしたい、例えば
このようなことは可能ですか?これを行う方法を検索しても、有用なものは何も見つかりませんでした...可能であれば、(Python インプロセス) フックハンドラーで構成を読み取るにはどうすればよいですか?
mercurial - Mercurial フック -- フック間で情報を渡しますか?
現在pre-commit
、mercurial プロジェクトにフックがあり、必要に応じてプロジェクトのバージョン番号を更新するオプションをユーザーに提供します (たとえば1.0
、1.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
フックはこれを使用してタグを追加するかどうかを決定できますか?
乾杯。
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」行に到達すると、次のエラー出力が表示されます。
この問題の原因について何か考えはありますか?
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 を実行しています。
mercurial - Mercurialチェンジグループフック:リポジトリURL
Mercurialリポジトリサーバーで、現在のリポジトリURLまたは少なくとも名前(サブパス)を(changegroup
またはある程度同等の)フックで把握するにはどうすればよいですか?IISでHgWebを実行しています。
$HG_URL
push
受信リポジトリではなく、ersURLを返します。$HG_SOURCE
のみを返しますserve
。
changegroup
コンテキスト:JenkinsにSCMポーリングを実行するように指示するフックを使用して、Jenkinsを作成しようとして/mercurial/notifyCommit?url=<url>
います。これを機能させることができない場合は、約50回のcURL呼び出しを実行する必要があります(サーバー上のリポジトリごとに1回)。すべてのchangegroup
トリガーで、そしてこのリストをhgweb.config
永遠に維持することを忘れないでください。
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''"
ご協力ありがとうございました。
mercurial - ファイルを変更するための Mercurial プリコミット スクリプト
Mercurial の分散型の性質にもかかわらず、私たち全員がプッシュし、夜間のビルド、パッケージングなどを行う集中型サーバーがあります...
私たちが達成したいことは次のとおりです。ソース管理されているファイルの 1 つに、理想的にはコミットごとに増やす必要があるメジャー + マイナー バージョン番号が含まれています。開発者のマシンでは集中番号付けができないため、コミットがプッシュされるたびに新しいマイナー バージョン番号をそのファイルに書き込む、メイン サーバー上のプリコミット スクリプトを考えていました。問題は次のとおりです。
- プリコミットなので、このファイルの変更は同じコミットの一部になることができますか?
- そうでない場合、プリコミットが別のコミットを引き起こす可能性がありますか?また、それがカスケード/再帰するのをどのように防ぎますか?
- どうやってそれをしますか?
- より良い解決策はありますか?