【问题标题】:Converting .gitignore to .hgignore and vice versa将 .gitignore 转换为 .hgignore,反之亦然
【发布时间】:2019-09-19 12:19:31
【问题描述】:

我正在尝试在这些 DVCS 格式之间转换忽略文件。我知道这个问题之前已经问过,但是已经有一段时间了,报告的答案似乎已经过时了。正如其中一个回复中指出的那样“对于 git 版本 1.8.3.4,它不适用于每个有效的 .hgignore”

Mercurial 使用 syntax 来选择要使用的匹配类型:

syntax: regexp    #Regular expression, Python/Perl 

或

syntax: glob      #Shell-style glob.

git 使用什么语法?我读过它使用 glob,但我不是 100% 确定它是同一件事。如果我为我的 mercurial 忽略文件指定 glob,那会 100% 与 git 兼容吗? (忽略语法声明行)

【问题讨论】:

  • 十年前的问题的答案仍然有效。该答案下方的 cmets 没有足够的细节来弄清楚抱怨 glob 语法差异的人在说什么,但确实有 6 年历史的 Git 版本无法处理现代 **与现代的方法相同:**/ 在 Git 1.8.3 中添加,并在 1.8.4 中对其进行了修复。 (Git 1.8.2 发布于 2013 年 3 月。)

标签: git mercurial


【解决方案1】:

正如上面@VonC 所述,不可能完全准确地转换。

不过,我已经在https://github.com/devzendo/hgignore-to-gitignore 编写了一个非常基本的 .hgignore 到 .gitignore 转换器

它尝试将正则表达式的元素转换为 glob 元素,并按原样传递 glob 元素(因为 hg 似乎比 git 具有更简单的 glob 形式,我假设 git 可以处理 hg 的 glob)。

【讨论】:

    【解决方案2】:

    是的,这是10 years ago 提出的问题,并强调了以下事实:

    你可能会convert a glob pattern to a regex(也做过here in ruby,或描述过in this article)。
    但是您不能将 all 正则表达式转换为 glob 模式。

    【讨论】:

    • 我确实看到了这个答案,但有人指出,至少对于 git 版本 1.8.3.4,它不适用于每个有效的 .hgignore
    • @WhiskerBiscuit 你用的是什么版本的 Git?
    猜你喜欢
    • 2010-12-03
    • 2011-10-08
    • 2013-03-15
    • 2013-12-29
    • 2011-09-22
    • 2012-05-14
    • 2020-03-01
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多