Hg 正则表达式语法未按预期工作

发布于 2024-12-09 10:19:52 字数 370 浏览 1 评论 0原文

这是我的文件/文件夹结构:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

权谋诡计 2024-12-16 10:19:52

这并不完全是您正在寻找的答案,但是 Mercurial 没有对 .hgignore 文件中的“一切除外”提供合适的语法(零宽度前瞻正则表达式不是计划)是因为 hg add 覆盖 .hgignore

您可以拥有一个 .hgignore 文件,其中仅包含以下内容:

^CASH/

然后执行一次性 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:

^CASH/

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.

§对你不离不弃 2024-12-16 10:19:52

在这种情况下,glob 可能会更容易。如果使用正则表达式,怎么样:

syntax: regexp
CASH/(?!bin)
CASH/bin/(?!FTI)

glob may easier in this case. If using regexp, how about:

syntax: regexp
CASH/(?!bin)
CASH/bin/(?!FTI)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文