Mercurial .hgignore 正则表达式与文件夹及其子文件夹中的特定文件名匹配



我的Mercurial文件夹结构是这样的,其中"temp"在文件夹的根目录中。

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

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

使用语法:.hgignore 中的正则表达式,我可以使用 ^temp/(?!world$) 匹配临时>世界,但我无法正确获取完整的正则表达式字符串(以匹配所有临时子文件夹中的世界)。

任何指导将不胜感激!

更新

设法通过手动列出每个文件夹来获得我想要的结果:

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

但是,如果我可以用一种模式匹配所有子文件夹中的世界,我更喜欢它,因为当事情发生变化时很容易忘记更新 .hgignore 。

如果你无论如何都必须列出所有文件夹,你应该把.放在你的.hgignore,这意味着忽略所有内容,然后hg add你想要的world文件。

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

现在,您仍然有可能忘记再次运行hg add **/world而忘记添加新的world文件,但至少这比记住在.hgignore中添加另一个例外更容易。

相关内容

  • 没有找到相关文章

最新更新