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

时间:2011-09-08 16:01:41

标签: mercurial dvcs tortoisehg kiln

我们用窑龟用虎。在我的vs 2010 c#项目中,有一些文件是存储库的一部分但是我想在我提交时忽略它们。 例如,在登录屏幕中,我可以硬编码用户ID,密码用于测试。我真的不希望在提交期间考虑此文件。我理解.hgignore文件,但这确实适用于不属于repo的文件。 togoise hg中的任何技巧忽略属于repo的文件? (因此在提交期间它们不会显示为已修改(M)。)谢谢

4 个答案:

答案 0 :(得分:17)

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

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

App.config包含我用于测试的真实硬编码用户ID和密码 App.config.example是相同的,但是使用了像“dummy_user”和“dummy_pw”这样的假数据。

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

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

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

所有这些共同具有以下效果:

  • 带有真实数据的配置文件永远不会被意外地提交到存储库,因为它被忽略了
  • 存储库仅包含带有示例数据的配置文件
  • 如果有人将存储库克隆到他的机器上,他就不会拥有“真正的”配置文件......但是如果它丢失了,它将在Visual Studio / MSBuild首次构建之前自动创建,只需复制.example文件(然后他可以将他的真实登录数据放入新创建的App.config文件中。)
  • 如果已存在具有真实硬编码用户数据的App.config,则在构建时不会覆盖它,因为仅当App.config 已存在时,才会发生BeforeBuild事件

答案 1 :(得分:4)

Christian的答案是正确的,但我想提一下TortoiseHg用Auto Exclude List支持你想要的东西。

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

答案 2 :(得分:1)

当您执行TortoiseHG提交时,会有一个包含复选框的文件列表。取消选择您不想要的文件。

或者,在命令行上,执行hg commit --exclude "pattern"形式的提交,其中模式在hg手册页中定义。

答案 3 :(得分:0)

您可以随时使用hg forget