0

私の Mercurial フォルダ構造は次のようなもので、「temp」はフォルダのルートにあります。

temp
|   1world
|   world
|   world.txt
|           
+---sub1
|       1world
|       world
|       world.txt
|       
+---sub2
+---sub3
|       misc.txt
|       other
|       otherfile.txt
|       
\---sub4
        world

「world」という名前のファイル(「1world」や「world.txt」などではなく「world」のみ)を除いて、一時フォルダーとそのサブフォルダー内のすべてを無視したいと思います。

構文を使用する: .hgignore で regexp を使用すると、 temp > world を使用して一致^temp/(?!world$)させることができますが、完全な正規表現文字列を正しく取得することはできません (すべての temp サブフォルダーでも world と一致させるため)。

どんなガイダンスでも大歓迎です!


アップデート

各フォルダーを次のように手動でリストすることで、必要な結果を得ることができました。

^temp/(?!world$|sub1|sub2|sub3|sub4)
^temp/sub1/(?!world$)
^temp/sub2/(?!world$)
^temp/sub3/(?!world$)
^temp/sub4/(?!world$)

ただし、状況が変化したときに .hgignore を更新するのを忘れやすいため、すべてのサブフォルダーの世界をパターンに一致させることができれば、それがはるかに望ましいと思います。

4

1 に答える 1

0

とにかくすべてのフォルダーをリストする必要がある場合は、すべて..hgignore無視することを意味する.hg addworld

は、実行時に表示される追加されていないファイルに影響を与えるためだけに存在しますが、無視.hgignoreしたくないすべてのファイルのエントリを追加する必要がある場合は、追加する必要があるファイルが表示されません。したがって、別の行を追加する代わりに、just .hg statusworld.hgignorehad add path_to_new_folder/world

ファイルが追加さ.hgignoreれると、まったく影響がありません。

したがって、最初からプロセスは次のようになります。

echo . > `.hgignore   # create a new hgignore file with just a single got in it
hg add **/world       # add all the files named exactly world
hg commit             # commit those world files

worldもう一度実行するのを忘れて、新しいファイルを追加するのを忘れる可能性は今でもありますhg add **/worldが、少なくとも別の例外を.hgignore.

于 2013-09-17T00:47:22.380 に答える