Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mercurial中是否有“提交时忽略”选项?_Mercurial_Hgignore - Fatal编程技术网

mercurial中是否有“提交时忽略”选项?

mercurial中是否有“提交时忽略”选项?,mercurial,hgignore,Mercurial,Hgignore,使用mercurial提交时,有没有办法忽略对某些文件的更改 我有一个特定的情况,我们有一个指向127.0.0.1的默认oracle tnsnames.ora文件,但是一些开发人员会修改它以指向其他系统,但我们不想更改默认文件 在subversion中,我简单地将其添加到提交时忽略变更列表中。在mercurial中有这样做的方法吗?在mercurial的文档中查找.hgignore文件 下面是一个忽略文件的示例 # use glob syntax. syntax: g

使用mercurial提交时,有没有办法忽略对某些文件的更改

我有一个特定的情况,我们有一个指向127.0.0.1的默认oracle tnsnames.ora文件,但是一些开发人员会修改它以指向其他系统,但我们不想更改默认文件


在subversion中,我简单地将其添加到提交时忽略变更列表中。在mercurial中有这样做的方法吗?

在mercurial的文档中查找.hgignore文件

下面是一个忽略文件的示例

       # use glob syntax.
       syntax: glob

       *.elc
       *.pyc
       *~

       # switch to regexp syntax.
       syntax: regexp
       ^\.pc/

您可以将commit别名为'hg commit-X excluded_file.ext'我从未使用过mercurial,所以我只看一下手册页。

传统上,解决这个问题的方法不是对文件本身进行版本控制,而是将其副本作为模板进行版本控制,供其他人使用

因此,您需要
hg mv tnsnames.ora tnsnames.ora template
,然后提交,然后直接将tnsnames.ora-template的文件系统副本复制到tnsnames.ora,并将tnsnames.ora添加到.hgignore文件中

       # use glob syntax.
       syntax: glob

       *.elc
       *.pyc
       *~

       # switch to regexp syntax.
       syntax: regexp
       ^\.pc/

对模板的后续更改仍将被推出,但除非有人将模板复制到实际文件中,否则不会实际更改工作环境。

如果要从“hg commit”命令中忽略的文件已被“跟踪”,则应使用-X选项。传递给-X的模式非常灵活,因此可以运行,例如:

% hg stat
A etc/foo.conf
M src/bar.c
M lib/libbar/loader.c
% hg commit -X '**.conf'
避免提交任何扩展名为“.conf”的文件,不管它在源代码树中有多深。在上面显示的工作区中,这将提交“src/bar.c”和“lib/libbar/loader.c”,而不是“etc/foo.conf”

要排除多个文件名模式,请使用多个-X选项,即:

% hg commit -X '**.conf' -X '**.sh'

tnsnames.ora文件已签入。我想忽略本地更改,因为它们仅适用于我的计算机。这就是为什么.hgignore不工作于“hg帮助模式”以获取有关“**.conf”样式模式的信息。是否有任何方法使其永久化?我不想在每次提交时都使用-X。@Kugel看起来不像这样。Mercurial给我的印象是,对于一个拥有20个配置文件的代码库来说,这是一个糟糕的选择,这些配置文件中都有用户特定的内容。我不应该写脚本来让版本控制为我工作,而不是反对我。不,20个配置文件也不是我的主意。我猜那个家伙也选择了Mercurial。@Kugel:可以用相同的名称为命令创建别名,如“因此覆盖它”中所述。尽管有人说这几乎总是个坏主意,但如果不是的话,情况可能会是这样。你不能在.hgignore中尝试一些东西吗?因此,如果你有app.config并将其重命名为app.config-template,那么存储库中将不再有app.config。这将导致自动生成出现问题。我认为构建过程需要被告知这个“模板”,并重新命名它。这不是很好。你不想重命名,你想复制和修改。您可以通过autobuild脚本或者通过钩子来实现这一点,但是无论哪种方式,如果您的文件在不同的克隆中会有所不同,那么必须在某个地方应用一些智能。