問題タブ [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 - タグがコミットされる前にファイルをコミットするにはどうすればよいですか?
を使用するときに、プロジェクトのバージョンを自動的に上げたいと考えていますhg tag XXX
。
hgrc に pretag フックを設定しました (注: わかりやすくするために、hg ルートの VERSION に出力されるようにするものを削除しました):
新しいタグを作成するとき:
エラーが発生します:
代わりにタグ フックを使用できますが、これは成功しますが、VERSION 番号はタグよりも正確に 1 リビジョン後です。つまり、タグ付けされたリビジョンに更新してからビルドすると、製品のバージョン番号が返されます (VERSION によって異なります)。ファイル) は正しくありません。
これを処理するより良い方法はありますか?SO question #2558531を見てきましたが、毎回バージョン番号を更新することを扱っています。リポジトリにタグを付ける前にバージョン番号を更新したいだけです。
mercurial - Mercurial: "hg commit" の前に "hg pull -u" を強制する
場合によっては、許可されるhg pull -u
前にMercurial ユーザーが実行されていることを強制する必要があります。つまり、着信キューが空であることを意味します。さらに、その人がブランチのヘッド バージョンを使用していることも必要です。hg commit
hg pull
どうすればそのような制限を設定できますか?
(これが DVCS 設計コアの一部に反することは十分承知しています)
mercurial - tortoisehg ワンステップ コミット プッシュ - 方法とログ ファイルの場所
Tortoisehg 2.3でwin XPを使用しています。個人のソース コードのバックアップにはビット バケットを使用しています。(ソース バックアップ ストアとしての真のバージョン管理にはほとんど使用されません)。現在、レポを右クリックしてコミットを選択し、コミットメッセージを入力する必要があります(前回使用したのと同じメッセージをコピーすることを選択しました。これを行うためのドロップダウンがあります)。コミットをクリックします。次に、もう一度右クリックして同期を選択し、このオプションを使用して最終的にプッシュします。ワークベンチを使用して、同様のことを行うことができます。このプロセスを最適化したいので、dos bat スクリプトを作成してコミットおよびプッシュすることにしました。Tortoisehg を押すと、hg コマンドがウィンドウに吐き出され、ここからカット アンド ペーストして表示されます。コミットの場合、内部で実際に行っていることは表示されません。TortoiseSVN をずっと前に使用したとき、実行されたすべての svn コマンドがデバッグ用に保存されたログファイルがあったことを思い出しました。そこで、TortoiseHg のログファイルを探し始めました。
誰か知っていますか:
1) Tortoisehg には、すべてのコマンド ライン オプションを使用して実行されたすべての mercurial コマンドを保存するログファイルがどこかにありますか?
2) (Tortoisehg gui またはバットまたはいくつかのアドオン/拡張機能などを介して) ワンステップ コミット プッシュを行うためのより良い方法はありますか?
よろしく
mercurial - 水銀更新フックは私に許可拒否エラーを与えます
SSHを使用して、リモートサーバーの中央のMercurialリポジトリにプッシュしています。
リモートリポジトリが更新されるようにフックを入れました:
リモートリポジトリにプッシュしようとすると、プッシュは成功しますが、次の出力が得られます。
私のためのアイデアはありますか?ありがとう!
python - Mercurial Hook - コミット前のコミット メッセージを変更する
編集ブランチ名とコミットメッセージのバグIDの不一致を防ぐために、この基本的なフックを作成しました。https://gist.github.com/2583189
基本的には、ブランチ名が bug_123 や feature_123 のような場合、フックはコミット メッセージの末尾に「BugID:xyz」を追加する必要があります。しかし、pretxncommit の人々のほとんどの例は変更セットの説明を変更したくないため、これを行う方法を見つけるのに問題があります。
これは私がこれまでに持っているものです。正しいメッセージで .hg/commit.save を更新しますが、このメッセージは決してコミットに転送されません。ただし、次のコミットのデフォルトのメッセージ ボックス (tortoisehg) に表示されます。おそらく pretxncommit は適切なフックではありませんか?
precommit フックを使用して、commit.save および repo['tip'].branch() ファイルを読み取り、それを変更できますか? その場合、どこからブランチ名を取得しますか?
少し関係のない話ですが、Fogbugz/Kiln チームの誰かがこれを見たら... ブランチ名を読み取るようにソフトウェアを更新してください。すべてのコミットに BugID:x を付ける必要はありません。まず第一に、それは私の時間を無駄にします。第 2 に、ケース ID が正しく入力されていない場合、多くの操作を行わないとバグに表示されません。多くの開発者は、バグ/機能システムごとにブランチを使用しています。私が働いている会社の方針です。Fogbugzは最悪です。
version-control - 展開しやすい方法で hg または git に変更をプッシュするためのカスタム ルールを実装する方法は?
ユースケース: トランクが赤でマークされているときに、人々がトランクにプッシュするのを防ぎたい - この場合、これを受け入れる前に確認を求めたい.
問題はローカル.hg/hgrc
フックです。これは、すべての開発者にこのようなものを実装したい場合に受け入れられるアプローチではありません。
誰にとってもうまくいく方法でそのようなことをどのように実装することが可能ですか。
mercurial - Mercurial prechangegroup フックからコマンドライン引数を読み取る
特定の条件が当てはまる場合、Mercurial リポジトリへのプッシュを禁止しようとしています。ただし、ユーザーが を使用する場合は、プッシュが関係なく通過することが不可欠です。push --force
pre-push
コマンドライン引数をフックに渡すフックを使用して、プッシュを実行しているマシンでこれを行うのは簡単であることを私は知っています。ただし、フックは伝播されないため、何らかの形でリポジトリのすべてのユーザーにフックを配布し、それらをいじらないようにする必要があります。
したがって、状態をチェックし、必要に応じてプッシュを中止するフックをリポジトリ サーバーに配置する方法があると考えましたがprechangegroup
、プッシュ中にユーザーが使用したコマンド ライン引数を取得する方法がわかりません。このフック。リポジトリサーバーでフックを使用するだけでこれを達成する方法はありますか?
可能な回避策は、pretxnchangegroup
代わりにフックを使用し、最新の変更セットのコミット メッセージが特定のパターンに従っている場合にプッシュを許可することです。ただし、この--force
オプションは、メッセージを正しく取得するためにダミーのコミットを実行する必要がないため、リポジトリ ユーザーの観点からははるかに簡単に見えます。
web-services - Web サービスからバッチ ファイルを呼び出してテキスト ファイルに書き込む
これは少しクレイジーに思えるかもしれませんが、より良い方法を教えてください。現在のバージョンの Mercurial リビジョン番号を表示する Web サービスが必要です。
この数値をテキスト ファイルに書き込む非常に単純なバッチ ファイルがあります。
バッチファイルを呼び出してからファイルの内容を読み取り、今のところ画面に書き込むメソッド(Webページで実行していますが、後で単純なサービスに移行します)
サービスディレクトリへの書き込みアクセスを全員に許可し、version.txt で明示的に許可しましたが、ページにアクセスすると、version.txt ファイルは常に空です。ファイルをメモ帳++で開いていると、ファイルが別のプログラムによって変更されているというメッセージが表示されます。再読み込みしますか。私がするとき、それは空です。ファイルにテキストを設定して保存すると、Web ページに再度アクセスすると、テキスト ファイルの内容が消去されます。
これを try/catch ブロックに入れましたが、例外がスローされなかったため、(わかりやすくするために) 削除しました。
最終的に必要なのは、
hg identify --numの結果を取得
して、別の SharePoint サイトによって呼び出される Web ページ/サービスに文字列として表示することだけです
mercurial - 送信フックで宛先リポジトリを決定する
特定の条件下でプッシュをブロックする Mercurial フックを作成しようとしていますが、プッシュをブロックするかどうかを判断するには、プッシュが送信されるリポジトリを知る必要があります。prechangegroup
理想的には、これはリモートリポジトリ側のフックで行われることを知っていますが、私の場合は不可能です-理由については以前の質問を参照してください。(Ry4anの提案は気に入りましたが、これを多数のリポジトリに対して行う必要があるため、リポジトリごとに複製を作成するのは適切ではないようです。)
とにかく、最初はpre-push
フックでこれを行っていましたが、それは非常に特定の状況でのみ呼び出されます。特に、ユーザーが に対して定義されたエイリアスを持っている場合、push
私のフックは呼び出されません。つまり、不注意でバイパスされる可能性があります。次に考えたのはpreoutgoing
フックでした。これは間違いなくより確実です。プッシュ以外の状況で呼び出される可能性がありますが、渡されたsource
パラメーターを使用して簡単に除外できます。
ただし、preoutgoing
フックには宛先リポジトリがありません。そのためにバグが報告されていますが、今のところあまり役に立ちません。現在、2 つのフックを使用してこの問題を回避しています。pre-push
目的地を決定するものと、実際preoutgoing
にそれに作用するもの。もちろん、pre-push
フックが実行されない可能性もありますが、その場合、プッシュが安全でない可能性があることをユーザーに警告し、プッシュを破棄するオプションを提供します。
2 つの質問があります。まず、これを達成するためのより良い方法はありますか? 第二に、そうでない場合、両方のフック (両方とも処理中) に渡されるオブジェクトが同じであると想定しても安全repo
ですか? つまり、次のようなことをすると
私のフックでは、後で呼び出されるフックが同じオブジェクトを受け取り、それを介してカスタム プロパティにアクセスできることがpre-push
保証されていますか? 環境変数または一時ファイルを使用してこれを行うことができることはわかっていますが、これはより良いように思え、その後のクリーンアップについて心配する必要はありません。this questionも見ましたが、あまり役に立ちませんでした。preoutgoing
repo