如何在Mercurial中保存本地版本文件

如何在Mercurial中保存本地版本文件,mercurial,Mercurial,我有一个版本控制的配置文件,我们称之为Web.config。我希望能够将原始版本的文件作为模板保存在repo中,但通过拉取、获取、合并等方式维护我的本地修改版本。这在Mercurial中可能吗?这里经常有人问/回答这一问题,但我会咬一口: 实现这一点的方法是在存储库中保留一个作为模板的版本,并将实际修改的版本仅保留在本地,并在.hgignore中列出。例如,将文件app.config.sample保留在repo中,并让构建/启动脚本查找app.config,该文件列在.hgignore中。如果您

我有一个版本控制的配置文件,我们称之为Web.config。我希望能够将原始版本的文件作为模板保存在repo中,但通过拉取、获取、合并等方式维护我的本地修改版本。这在Mercurial中可能吗?

这里经常有人问/回答这一问题,但我会咬一口:

实现这一点的方法是在存储库中保留一个作为模板的版本,并将实际修改的版本仅保留在本地,并在.hgignore中列出。例如,将文件
app.config.sample
保留在repo中,并让构建/启动脚本查找
app.config
,该文件列在
.hgignore
中。如果您想变得更有趣,您甚至可以让您的启动/构建脚本将示例文件复制到实际文件(如果在运行时它不存在)

简言之,如果不想使用诸如
hg commit-I app.config等命令手动执行此操作,则无法同时跟踪(添加)和未跟踪(未提交更改)文件,即使使用别名,您最终也会忘记此操作。

您可以:

  • 在MQ修补程序中创建仅本地的自定义配置(重命名或复制模板,对本地配置应用所需的更改),为本地工作应用修补程序,在推送之前取消应用(或为修补程序使用安全阶段,即使应用了修补程序,也不会发布)
  • 在本地分支中构建自定义的本地配置(普通命名分支,必须从不合并为默认分支,只能将默认分支合并为本地分支),并始终使用
    push-b default
    (直接或作为别名命令):因为本地分支没有默认分支头的祖先,所以不会推送它

我不确定“作为模板”对您意味着什么,但这听起来像是每个版本控制系统都会做的事情。想要原始版本时,请签出原始版本。如果需要版本“n”,则签出版本“n”。“简言之,无法同时跟踪(添加)和取消跟踪(未提交更改)文件”-错误,失败。我知道至少有两种方法你是对的。我应该说“没有好办法”。你的两种方法都很糟糕,因为它们造成的问题比它们解决的问题还多,但是如果你想加入我们的#mercurial并帮助解决大量的“我意外地推了包含配置分支的密码”和“mq吃了我的午餐”帮助请求,我会在那里与你见面。我将是那个从你答案中的坏建议中清理别人狗屎的人。