如何使用汞"that are part of the repository"忽略窑/汞中的文件



我们窑用龟hg。在我的vs2010 c#项目中,有一些文件是存储库的一部分,但我希望在提交时忽略它们。如。例如,在登录屏幕中,我可以硬编码用于测试的用户名和密码。我真的不希望在提交时考虑这个文件。我理解。hgignore文件,但这真的适用于不属于repo的文件。在龟hg 中有什么技巧可以忽略属于repo的文件吗?(这样它们就不会在提交期间显示为修改(M))谢谢

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

在我喜欢的一个项目中,我有以下设置:

App.config包含我真实的硬编码用户id和密码用于测试。
App.config.example是相同的,但有假数据,如"dummy_user"one_answers"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已经存在,它将不会在构建时被覆盖,因为BeforeBuild事件只会发生在App.config 已经存在

Christian的回答是正确的,但是我想提一下,TortoiseHg支持你想要的自动排除列表。

排除列表的一个问题是它不能用于合并:你必须在合并时提交所有文件,所以你必须做一些关于搁置、合并、提交和解除搁置的小动作。

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

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

你可以用hg forget

相关内容

最新更新