2010-11-18 15 views
5

私は私の作業コピーの最上位にあり、Mercurialフックとして使用したいスクリプトを持っています。フックに絶対パス名を使用しても問題ありませんが、相対パス名が必要なので、他の作業コピーや他の開発者がhgrcをそのままコピーすることができます。Mercurialフックに相対パス名を使用する方法

/space/project/.hg/hgrcはられたGenIDスクリプトはスペース/プロジェクト/私は/スペース/プロジェクトだ場合はフックがうまく起動され

をられたGenID /である

[hooks] 
update = genid 

が含まれています私の現在のディレクトリが/ space/project/src/toolsの場合、 'hg update'はフックが見つからないのでエラーを出します。

+0

誰かが 'hg update null'を実行して作業ディレクトリをクリアするとどうなりますか? 'hg'コマンドを実行しようとすると、存在しない拡張機能をロードしようとします。もちろん、これは絶対パスでは依然として問題になる可能性がありますが、あなたが積極的に取り組んでいるレポに拡張スクリプトが含まれていると、はるかに高い可能性があります。 –

+1

それでは、そうしないでください!フックはデフォルトでは空で、積極的に追加する必要があります。作業コピーがない場合は、フックを追加しないでください。これは、プロジェクトに取り組んでいる他の開発者にとっては問題ではありません。 –

+1

@TimDelaney致命的な影響はありません。フックの実行は失敗しますが、コミットはまだ発生します。 –

答えて

2

Pythonのフックで

[hooks] 
update = $MercurialHooks/genid 

参照のFAQ(12)は、相対パスを使用することはできません。スクリプトのフックは次のようになります。

[hooks] 
update = ./genid 
+0

これはうまく動作します! – pyfunc

+1

あなたは明確にすることができました - 私はこの作業を得ることができませんでした。ディレクトリを.hgディレクトリの上に置きたい。 wouldnt ./何かだけが現在のディレクトリを参照していますか? –

+0

* Pythonフックは相対パスを使用できません* - 参考にしてください。 –

2

場合によっては、環境変数が水銀設定で展開されていることがあります。したがって、環境変数を使用できるかどうかチェックすることができます。 https://www.mercurial-scm.org/wiki/TipsAndTricks

+0

現在操作中のリポジトリを指す環境変数は設定されていません。 –

+0

@Roger Binns:私が言ったのは、あなたがそれを設定して使うことができるということです。 – pyfunc

+0

はい、私はあなたがそれを意味すると理解しました。しかし、複数の異なる場所にチェックアウトがある場合や、リポジトリを別のディレクトリに移動する場合など、私のシナリオではうまくいかないでしょう。環境変数を維持しなければならない場合は、$ PATHでもかまいません。 Mercurialが$ HG_REPO_DIRのように1つを設定していれば素晴らしいだろう。 –

0

私は同じ問題があり解決できませんでした。回避策は簡単でした!私はレポのファイルをバージョン管理し、それを私の.hgフォルダにコピーしました!理想的ではありませんが、それは変わる可能性がなく、他のrepoユーザーはまだファイルのコピーを得ることができます

関連する問題