我们在 Kiln 中使用 tortoise hg。在我的 vs 2010 c# 项目中,有一些文件是存储库的一部分,但我希望 tortoise hg 在我提交时忽略它们。例如,假设在登录屏幕中,我可能会硬编码用户 ID、密码以进行测试。我真的不想在提交期间考虑这个文件。我了解 .hgignore 文件,但这确实适用于不属于 repo 的文件。乌龟 hg 有什么技巧可以忽略作为 repo 一部分的文件吗?(因此它们在提交期间不会显示为已修改(M)。)谢谢
问问题
2454 次
4 回答
17
我总是使用 .hgignore 和BeforeBuild
(在 .csproj 文件中)的组合来处理这样的事情。
在我的一个宠物项目中,我有以下设置:
App.config
包含我真正的硬编码用户名和密码以进行测试。
App.config.example
是相同的,但带有“dummy_user”和“dummy_pw”等虚假数据。
App.config
不是存储库的一部分,它被忽略(在 中.hgignore
)。
App.config.example
是存储库的一部分。
然后,我的BeforeBuild
解决方案的 .csproj 文件的目标中有以下内容:
<Target Name="BeforeBuild">
<Copy
Condition="!Exists('App.config')"
SourceFiles="App.config.example"
DestinationFiles="App.config"/>
</Target>
所有这些一起产生以下效果:
- 带有真实数据的配置文件永远不会被意外提交到存储库,因为它被忽略了
- 存储库仅包含带有示例数据的配置文件
- 如果其他人将存储库克隆到他的机器上,他将没有“真正的”配置文件......但如果它丢失,它将在 Visual Studio / MSBuild 首次构建之前自动创建,只需复制
.example
文件(和然后他可以将他的真实登录数据放入新创建的App.config
文件中)。 - 如果具有真实硬编码的用户数据已经存在,则在构建时不会被覆盖,因为 BeforeBuild 事件仅在不存在
App.config
时才会发生App.config
于 2011-09-08T16:21:18.563 回答
4
Christian 的答案是正确的,但我想提一下 TortoiseHg 的Auto Exclude List支持你想要的。
排除列表的一个问题是它不能与合并一起工作:您必须在合并时提交所有文件,因此您必须在搁置、合并、提交和取消搁置方面做一些小动作。
于 2011-09-08T21:43:23.813 回答
1
当你执行 TortoiseHG 提交时,会有一个带有复选框的文件列表。取消选择您不想提交的文件。
或者,在命令行上提交表单hg commit --exclude "pattern"
,其中模式在 hg 手册页中定义。
于 2011-09-08T16:08:26.043 回答
0
你总是可以使用hg forget。
于 2011-09-08T16:43:50.563 回答