我们窑用龟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