Hg 正则表达式语法未按预期工作
这是我的文件/文件夹结构:
Code/.hg
Code/.hgignore
Code/CASH/readme.txt
Code/CASH/bin/FTI/abc.dll
我正在尝试在 .hgignore 文件中创建一个将忽略的正则表达式CASH 文件夹下的所有内容(/bin/FTI 文件夹中的所有内容除外)。
这是我的 .hgignore 文件不起作用:
syntax: regexp
CASH/(?!bin/FTI/).*
这最终会忽略 CASH 文件夹中的所有内容,包括我不想忽略的 /bin/abc.dll 文件。
有什么想法吗?
Here's my file/folder structure:
Code/.hg
Code/.hgignore
Code/CASH/readme.txt
Code/CASH/bin/FTI/abc.dll
I'm trying to create a regular expression in my .hgignore file that will ignore everything below the CASH folder except for everything in the /bin/FTI folder.
Here's my .hgignore file that doesn't work:
syntax: regexp
CASH/(?!bin/FTI/).*
This ends up ignoring everything in the CASH folder, including the /bin/abc.dll file that I'd like to not ignore.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这并不完全是您正在寻找的答案,但是 Mercurial 没有对 .hgignore 文件中的“一切除外”提供合适的语法(零宽度前瞻正则表达式不是计划)是因为
hg add
覆盖.hgignore
。您可以拥有一个
.hgignore
文件,其中仅包含以下内容:然后执行一次性
hg add CASH/bin/FTI/**
并且您将进行跟踪对该目录中已存在的所有文件的所有未来更改。当然,如果新的二进制文件出现在 CASH/bin/FTI 中,您必须记住添加它,但对已添加的二进制文件的更改不需要任何额外的操作。除非具有新名称的二进制文件经常出现,否则这是更常见的设置。
This isn't exactly the answer you're looking for, but the reason Mercurial doesn't have decent syntax for "everything except" in .hgignore files (zero width look ahead regular expressions weren't the plan) is because
hg add
overrides.hgignore
.You can have a
.hgignore
file with just this in it:and then do a one-time
hg add CASH/bin/FTI/**
and you'll be tracking all future changes to all the files that already exist in that directory.Sure, if a new binary shows up in CASH/bin/FTI you'll have to remember to add it, but changes to those already added won't require any extra action. Unless binaries with new names are a regular occurrence this is the more common setup.
在这种情况下,glob 可能会更容易。如果使用正则表达式,怎么样:
glob may easier in this case. If using regexp, how about: