web-dev-qa-db-ja.com

Mercurialのフォルダ内のすべてを無視するにはどうすればよいですか

指定したフォルダーの下にあるすべてのファイルを無視するための.hgignoreファイルの式を探しています。

例:binの下のすべてのファイルとフォルダーを無視したい

実際、表現がどのように形成されるかについてのアドバイスは素晴らしいでしょう

148
Xian

代わりに:

syntax: glob
bin/**
167
Ry4an Brase

いくつかの実験を行ったところ、Windowsの正規表現構文は現在のリポジトリから始まるパスに適用され、バックスラッシュがスラッシュに変換されることがわかりました。

たとえば、リポジトリがE:\ Devにある場合、hg statusは、foo/bar/file1.cなどに対してパターンを適用します。アンカーはこのパスに適用されます。

そう:

  • グローブはパス要素に適用され、要素パーツに根ざしています
  • fooは、fooという名前のフォルダー(またはファイル)に一致します(「foobar」や「barfoo」ではありません)
  • * foo *は、名前に「foo」が含まれる任意のフォルダーまたはファイルに一致します
  • foo/bar *は、「bar」で始まる「foo」フォルダー内のすべてのファイルに一致します


  • 正規表現では大文字と小文字が区別され、固定されていません
  • もちろん、のような正規表現の特殊文字をバックスラッシュで囲みます。 (ドット)
  • /は、Windowsの\パス区切り文字に一致します。 \はこの区切り文字と一致しません...
  • fooは、「foo」を含むすべてのファイルとフォルダーに一致します
  • foo /は、「foo」で終わるフォルダーのみに一致します
  • / foo /は、パスのどこかにあるフォルダー "foo"と一致します
  • / foo/bar /は、パスのどこかにあるフォルダー「foo」内のフォルダー「bar」と一致します。
  • ^ fooは、リポジトリのルートにあるfooで始まるファイルまたはフォルダーに一致します
  • foo $は、fooで終わるファイルと一致します

これが助けになることを願っています。 HGIGNORE(5) ページを少し簡潔に見つけました。

51
PhiLho

どちらもcabinと呼ばれるディレクトリを除外しますが、これはあなたが望むものではないかもしれません。トップレベルでフィルタリングする場合は、次を使用できます。

^/bin/

ルートの下のbinディレクトリの場合、^を省略できます。構文を指定する必要はありません。regexpがデフォルトです。

8
Derek Slager

気にしない、私はそれを得た

syntax: regexp
bin\\*

式は、標準のPerl正規表現構文に従います。

2
Xian

構文:glob bin/**

この答えは上に示されていますが、*と**が異なる方法で処理されることも追加したいと思います。 **は再帰的ですが、*は再帰的ではありません。

Hgパターン を参照

0
balrob

.classファイルを無視する

syntax: regexp
?\.class
0
user2427