mercurial - 如何使用草龟hg "that are part of the repository"忽略窑炉/ Mercurial 中的文件

标签 mercurial dvcs tortoisehg kiln

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

最佳答案

对于此类事情,我总是将.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事件
  • 关于mercurial - 如何使用草龟hg "that are part of the repository"忽略窑炉/ Mercurial 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351076/

    相关文章:

    version-control - Mercurial — 恢复到旧版本并从那里继续

    Mercurial 和 TortoiseHG - 推送更改后更新远程存储库

    mercurial - 给 hg 中的 URL 命名?

    version-control - 想在 TortoiseHG/Mercurial 中为我的 .hgignore 文件创建一些默认值

    mercurial - 有 hgignore.io 吗?

    mercurial - 每个版本的分支与代码升级分支?

    Mercurial 本地分支并推送到共享存储库

    svn - 将公司从 SVN 转换为 Hg?

    version-control - 检索文件的旧版本而不更改工作副本父对象

    mercurial - TortoiseHg 图表颜色的含义