【问题标题】:How do I make mercurial ignore any file with .xxx extension如何让 mercurial 忽略任何带有 .xxx 扩展名的文件
【发布时间】:2011-05-20 03:28:45
【问题描述】:

我希望 Mercurial 忽略任何具有特定扩展名的文件。

例如,我想忽略扩展名为 .SUO 的文件。 (无需对 Visual Studio 用户设置进行版本控制。)

所以我将 .hgignore 文件更改为:

syntax: glob
*.suo

但是,这没有任何效果,Mercurial 仍然可以看到我的 .suo 文件。

我在这里做错了什么?

【问题讨论】:

  • 您尝试忽略的文件当前是否已在您的存储库中跟踪(添加)?
  • 顺便说一句,这是在 Windows 上,对吧?

标签: mercurial file-extension hgignore


【解决方案1】:

如果在更改 .hgignore 文件之前运行 hg status 时,.suo 文件前面有一个 ?,那么现在应该忽略它。如果还有其他内容(例如MA),它已经被存储库跟踪,并且不会神奇地停止被跟踪。在这种情况下,您需要对文件执行 hg remove 以删除它并让 hg 停止跟踪它,或者只需对它执行 hg forget 以让 hg 停止跟踪它但保留文件。任何一个都应该跟一个提交。

如果文件的路径与 .hgignore 文件中的模式匹配,则从状态列表中忽略的唯一文件是未跟踪的文件。忽略一个被跟踪的文件是没有意义的,因为你永远看不到它是否被修改、添加或删除。

编辑:Mercurial 只跟踪文件(你不能让它跟踪空目录),但 .hgignore 中的模式只是针对相对于根目录的文件路径字符串运行存储库。当您运行hg status 时,它向您显示的相对路径完全相同。所以它确实可以按照您所说的方式工作,因为以下几行是我自己的 .hgignore 文件的标准部分:

语法:glob *\obj\* *\垃圾桶\* *.csproj.user *.suo

同样,当您运行hg status 并显示一个 .suo 文件时,该行开头的单个字符是什么?是MAR! 还是? 字符?之后的路径是什么?

【讨论】:

  • 但这不是我想要的行为。我希望被忽略的文件 NOT 显示在 hg 状态列表中。这完全适用于忽略整个文件夹,例如调试,那么为什么不 .suo 文件呢?我想答案一定与 Mercurial 只注意到文件而不是文件夹这一事实有关?
  • 请注意,您无需删除相关文件即可让 Mercurial 停止跟踪它,您只需让 Mercurial 忘记它即可。这将保留文件,但停止跟踪。删除 (hg remove) 相当于 hg forget 和文件系统删除。
【解决方案2】:

Mercurial 使用名为.hgignore 的文件中的条目来确定它完全忽略哪些文件。它通常位于存储库的根文件中(并且在 .hg 目录中,您可能会认为)。

您可以在这里找到更多信息:

http://www.selenic.com/mercurial/hgignore.5.html

通常,我们使用正则表达式语法来确保大小写不是扩展中的一个因素:

# use regexp syntax.
syntax: regexp
(?i)\.dcu
(?i)\.identcache
(?i)\.dof
(?i)\.dsk
(?i)\.bak
(?i)\.old

这样,它确保即使由于某种原因扩展的大小写发生变化,它仍然被忽略。

【讨论】:

  • 我试过上面的代码,还是不行。即使我创建了一个名为“test.dcu”的文件,它仍然包含在列表中。
  • 那么您的 .hgignore 文件将被忽略。
  • 你是从命令行做的吗?也许重置命令窗口环境?
【解决方案3】:

忽略/排除扩展名为 .o 的文件的示例:

.*\.o$

对于 .suo 扩展名,应转换为 .*\.suo$
我已经成功使用了这个方法

【讨论】:

    【解决方案4】:

    检查 .hgignore 文件的位置并确保它位于 $HOME 或项目根文件夹中。检查扩展的 CASE(与大小写)。我怀疑模式匹配是否不区分大小写。

    edit:经过测试,模式匹配不区分大小写。因此,如果您想忽略扩展名为“.SUO”的文件,请添加“*.SUO”。

    【讨论】:

    • 有问题的文件都是小写的。我试着把它改成大写,但还是不行。
    • 另外 .hgignore 位于项目根文件夹中,它可以完美地与:'/bin$ [linebreak] /obj$ [linebreak] wwwroot$' 配合使用。它似乎 only 不适用于文件扩展名忽略。
    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多