【问题标题】:Ignore future changes to a file in Mercurial, but still track it [duplicate]忽略 Mercurial 中文件的未来更改,但仍会跟踪它[重复]
【发布时间】:2011-09-30 16:39:56
【问题描述】:

可能重复:
Mercurial: How to ignore changes to a tracked file

我在 Mercurial 存储库中有一个文件,我想将其作为示例配置文件,但在开发它时,我想对它进行一些我不想跟踪的特定更改,例如数据库密码。我尝试将该文件添加到 .hgignore,但 Mercurial 仍然注意到修改。

我是否可以在 Mercurial 存储库中“跟踪”一个文件,但忽略未来对该文件的本地更改而不将其从存储库本身中删除?

【问题讨论】:

  • 不跟踪your.config.example 并忽略真正的your.config 工作?这样,当您需要添加设置时,示例配置就会被跟踪,但您的特定设置会被忽略。
  • @Mat 这是个好主意,但最好不要要求克隆人重命名文件。
  • @Rich - 强迫人们复制配置文件模板/示例的好处在于,它还提醒他们可能想要为他们的环境配置应用程序,而不是仅仅用任何东西运行它上次签入配置文件;当然,不利的一面是,当对模板进行更改时,他们也必须手动更新其配置(亲:他们正在考虑新的配置选项)。此外,如果它真的困扰您,您可能可以将复制/合并作为构建的一部分......
  • @Chris 感谢您说服我;我最终走上了这条路。如果用户尝试构建项目而不重命名示例文件,我添加了一个小口哨。

标签: mercurial


【解决方案1】:

我不认为这种能力存在(虽然喜欢看到其他人的答案有一个选项:))。我使用的替代方法是将文件检入名为“config.template”的源代码管理中(例如)。该应用程序实际上使用了一个名为“config”的文件,然后我通过复制模板文件来创建该文件。然后确保将“config”文件排除在 .hgignore 文件中,这样您就不会在某个时候意外签入。

【讨论】:

    【解决方案2】:

    不,Mercurial 中没有内置支持来自动处理这个问题,嗯......不是你问的方式。

    文件有两种状态:

    • 已跟踪
    • 未追踪

    .hgignore 文件所做的唯一一件事就是帮助所有命令查看所有未跟踪的文件并将它们添加到存储库(即添加它们以进行跟踪。)一旦文件被跟踪,它将始终被跟踪。

    剩下的留给手动处理,这意味着如果您跟踪一个文件,但不想提交对它的更改,您将不得不取消选中、忽略或以其他方式确保提交命令不会提交它,每次你提交。

    处理此问题的首选方法是提交模板。然后,如果可能,您在构建过程中添加一个步骤,检查实际配置文件是否存在,如果不存在,则从模板中复制一份。您确保不会跟踪此实际配置文件,并将其添加到 .hgignore 文件中。

    这样,你可以更改实际的配置文件,但除非你特意将它添加到存储库中,否则它不会被自动跟踪,并且在提交期间没有任何事情可做。

    【讨论】:

      【解决方案3】:

      您可以在以后的提交中排除该文件。

      如果您在命令行中使用 hg 这可能会很麻烦,因为您必须手动指定要提交的文件,但如果您使用 tortoisehg 之类的东西,您可以取消选中提交表单中的配置文件并它的更改不会进入变更集。

      【讨论】:

        猜你喜欢
        • 2015-11-21
        • 2014-08-19
        • 2012-12-17
        • 2015-02-03
        • 2012-10-30
        • 2011-10-30
        • 2015-06-18
        • 1970-01-01
        相关资源
        最近更新 更多