0

我的 Mercurial 文件夹结构是这样的,其中“temp”位于文件夹的根目录中。

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

我想忽略临时文件夹及其子文件夹中的所有内容,除了名为“world”的文件(只有“world”而不是“1world”或“world.txt”等)

使用语法:.hgignore 中的正则表达式,我可以使用 匹配 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 add的文件。world

A 的.hgignore存在只是为了影响您在执行 a 时看到哪些未添加hg status的文件,但是如果您必须为不想忽略的每个文件添加一个条目,那么您world无论如何都看不到需要添加的文件。.hgignore因此,不要在您的just中添加另一行had 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 回答