我的Mercurial文件夹结构是这样的,其中“temp”位于文件夹的根目录中。
temp
| 1world
| world
| world.txt
|
+---sub1
| 1world
| world
| world.txt
|
+---sub2
+---sub3
| misc.txt
| other
| otherfile.txt
|
\---sub4
world
我想忽略temp文件夹及其子文件夹中的所有内容,除了名为“world”的文件(仅“world”而不是“1world”或“world.txt”等)。
使用语法:.hgignore中的regexp,我可以匹配temp>世界使用^temp/(?!world$)
,但我无法正确获取完整的正则表达式字符串(以匹配所有临时子文件夹中的世界)。
非常感谢任何指导!
的更新
我设法通过手动列出每个文件夹来获得我想要的结果:
^temp/(?!world$|sub1|sub2|sub3|sub4)
^temp/sub1/(?!world$)
^temp/sub2/(?!world$)
^temp/sub3/(?!world$)
^temp/sub4/(?!world$)
但是,如果我可以将所有子文件夹中的world与模式匹配,我会更喜欢它,因为当事情发生变化时很容易忘记更新.hgignore。
答案 0 :(得分:0)
如果您必须列出所有文件夹,则应将.
放入.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
现在,您仍然可能忘记再次运行world
而忘记添加新的hg add **/world
文件,但至少比忘记添加更容易您.hgignore
的另一个例外。