几个月前,我在默认分支上对项目设置文件夹进行了版本控制,然后随着时间的推移创建了许多默认分支。现在我决定我宁愿不控制项目设置文件夹的版本,因为它在分支之间切换时会产生很多问题。
所以我已经有了hg forget
这个项目设置文件夹,它可以让我将文件保存在我的本地机器上,但会删除它们。但是,当从仍然具有此文件夹版本的旧分支之一切换回默认分支时,它实际上会从本地计算机中删除文件,这很糟糕。
我该如何防止呢?
该文件夹现在也处于.hgignore
默认状态。
几个月前,我在默认分支上对项目设置文件夹进行了版本控制,然后随着时间的推移创建了许多默认分支。现在我决定我宁愿不控制项目设置文件夹的版本,因为它在分支之间切换时会产生很多问题。
所以我已经有了hg forget
这个项目设置文件夹,它可以让我将文件保存在我的本地机器上,但会删除它们。但是,当从仍然具有此文件夹版本的旧分支之一切换回默认分支时,它实际上会从本地计算机中删除文件,这很糟糕。
我该如何防止呢?
该文件夹现在也处于.hgignore
默认状态。
这是不可能的。
但是通常的做法是config.ini.dist
在您检查源代码后立即保存在您的存储库中并通过某些构建系统构建特定于环境的配置。
处理这个问题的标准方法是对模板配置文件进行版本控制并忽略真正的配置文件。然后真正的配置文件可以包含模板文件,或者模板文件有时会被复制一次。
您的问题的根本原因是运行:
$ hg forget config.ini
与运行完全相同:
$ hg remove config.ini
$ hg cat config.ini > config.ini
忘记命令将文件留在您的工作目录中,但您提交的仍然是文件删除。这意味着之后,Mercurial 无法区分“文件被遗忘”和“文件被删除”——只有删除被提交,所以这两个命令看起来完全一样。