1

巨大なソース ツリーから、Mercurial で追跡するサブフォルダーを 1 つだけにしたい。

specific/component/subfolder

適切な正規表現ツール (Regex Coach、regexpal.com) では、次の手順で十分です (そして理解できます)。

^(?!specific/component/subfolder).+

一方 .hgignore は、

^(?!extras).+
^extras/(?!extensions).+
^extras/extensions/(?!sharing).+

先読みグループ内にスラッシュを入れるとすぐに、何も通過しません。

これをバグと呼ぶ前に (おそらく、さらに別の自家製の正規表現パーサーのことでしょうか?) 私は集合知性に尋ねます :-)

一体 hgignore が何に行きたいかについての間接的な手がかりのクレジット

否定先読みを使用して .hgignore ファイルを修正する

4

1 に答える 1

5

.hgignore で否定先読みを使用しないでください。本当。ここスタック オーバーフローで誰かがそれを提案するたびに、意図した機能ではないため、うまく機能しないことを知らせます。Mercurial の .hgignore ファイルがホワイトリスト システムであると想定されていた場合、実際のホワイトリスト構文が使用されます。これはブラックリストであり、そのように使用する必要があります。

否定的な先読み構文は、それが自家製の正規表現パーサーではないため、ほぼ正確に機能します-これはPythonに組み込まれているものであり、否定的な先読みを無効にする方法はやり過ぎのように思えますが、おそらくより良い選択でした.

絶対に満足できない否定的な先読み処理を使用するよりも優れた 2 つのソリューション:

  • リポジトリを1レベル下に移動するだけです-実際に追跡したいフォルダーに移動します
  • -または- すべてをブラックリストに登録してから、追跡するファイルを「hg add」します -- オーバーライドを追加して無視します

真剣に。これは意図した機能ではなく、うまく機能することはありませんが、下位互換性のために削除することはできません。

于 2012-05-03T15:53:40.990 に答える