【问题标题】:Mercurial - Always take local for files matching on a specific folderMercurial - 对于在特定文件夹中匹配的文件,始终使用本地文件
【发布时间】:2016-07-09 04:39:04
【问题描述】:

我需要设置 Mercurial HG,以便始终在特定文件夹中匹配文件的 take local 版本。

例如:when conflict on /**/dist/ always take local

这是因为我需要提交一些构建文件。 在此先感谢

编辑:

我需要提交一些由某些处理器(libsass、webpack)生成的文件,这取决于我的构建系统暂时不可用。所以,我从hgignore 中删除了这些文件。现在,我遇到的问题是这些生成的文件上的 Mercurial 冲突我想使用这些文件的本地版本自动进行合并解析。类似于:How to keep the local file or the remote file during merge using Git and the command line?,但用于 Mercurial HG

【问题讨论】:

  • 简洁明了很好,但这对我来说太简短了。你根本没有说你试图做什么以及你的问题究竟是在过程的哪个步骤。你想选择一些文件吗?为什么?在什么过程中?为了什么目的,你想对选择做什么?请详细一点。
  • 请注意,当发生冲突时,合并工具将发挥作用;即使使用您的解决方案,也将在两个方向上合并非冲突更改。您确定要在您构建的文件上发生这种情况吗?
  • 不是真的,我不想要多个公司。我只想始终采用(例如)webpack 输出的本地版本。因为 Webpack 一直在运行,所以它会在每次 hg pull 后重建所有内容。有解决办法吗?

标签: mercurial


【解决方案1】:

您可以在 ~/.hgrc.hg/hgrc 中放置一个合并模式,以指定给定文件的默认合并工具:

[merge-patterns]
**/dist/* = :local

:local 合并工具将优先考虑本地版本。有关内部合并工具的完整列表,请参阅 hg help merge-tools。请注意,在合并期间使用--tool 选项将覆盖此选择;但是,设置 ui.merge 选项来定义您的默认合并工具不会。

**/dist/* 模式可能是也可能不是您需要的。请根据您的需要对其进行调整(并注意,如果需要,还可以使用正则表达式模式以提供额外的灵活性)。

或者,您也可以在合并后自动解析这些文件,例如与:

hg resolve --tool :local $(hg files -I '**/dist/*')

或者,如果文件列表太大而无法在命令行中显示:

hg files -0 -I '**/dist/*' | xargs -0 hg resolve --tool :local

【讨论】:

  • 谢谢,完美。接受!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 2011-04-06
  • 2021-11-30
  • 2021-01-13
  • 1970-01-01
相关资源
最近更新 更多