如何使用tortoise hg“作为版本库的一部分”来忽略kiln / mercurial中的文件“

我们用窑乌龟与窑。 在我的vs 2010的c#项目中有一些文件是存储库的一部分,但是我想在我提交的时候让乌龟忽略它们。 例如,在login屏幕上说,我可能会硬编码的用户名,密码进行testing。 在提交过程中,我真的不想要这个文件。 我明白.hgignore文件,但这真的适用于不属于回购协议的文件。 在乌龟的任何伎俩忽略文件是回购的一部分 ? (所以它们在提交期间不会显示为已修改(M))。谢谢

我总是使用.hgignore和BeforeBuild (在.csproj文件中)这样的组合。

在我的一个宠物项目中,我有以下设置:

App.config包含我的真实硬编码用户ID和密码进行testing。
App.config.example是相同的,但伪造的数据,如“dummy_user”和“dummy_pw”。

App.config 不是存储库的一部分,它被忽略(在.hgignore )。
App.config.example是存储库的一部分。

然后,我的解决scheme的.csproj文件中的BeforeBuild目标中有以下内容:

 <Target Name="BeforeBuild"> <Copy Condition="!Exists('App.config')" SourceFiles="App.config.example" DestinationFiles="App.config"/> </Target> 

所有这一切有以下作用:

  • 具有真实数据的configuration文件永远不会意外地提交到存储库,因为它被忽略
  • 存储库只包含具有示例数据的configuration文件
  • 如果有人将版本库复制到他的机器上,他将不会有“真正的”configuration文件…但是如果缺less,它将在第一次生成Visual Studio / MSBuild之前自动创build,只需复制.example文件(然后他可以将他的真实login数据放入新创build的App.config文件中)。
  • 如果具有真实硬编码用户数据的App.config已经存在,那么它将不会在构build时被覆盖,因为BeforeBuild事件只会在App.config不存在的情况下发生

基督徒的答案是正确的,但我想提到的是,TortoiseHg支持你想要的自动排除列表 。

排除列表的一个问题是无法合并:您必须在合并时提交所有文件,因此您必须在搁置,合并,提交和取消搁置时进行一些跳舞。

当你做一个TortoiseHG提交时,有一个由他们checkbox的文件列表。 取消select您不想要的文件。

或者,在命令行中,执行hg commit --exclude "pattern" ,其中pattern在hg手册页中定义。

你可以随时使用hg忘记 。

Interesting Posts