如何使用tortoise hg“作为版本库的一部分”来忽略kiln / mercurial中的文件“
我们用窑乌龟与窑。 在我的vs 2010的c#项目中有一些文件是存储库的一部分,但是我想在我提交的时候让乌龟忽略它们。 例如,在login屏幕上说,我可能会硬编码的用户名,密码进行testing。 在提交过程中,我真的不想要这个文件。 我明白.hgignore文件,但这真的适用于不属于回购协议的文件。 在乌龟的任何伎俩忽略文件是回购的一部分 ? (所以它们在提交期间不会显示为已修改(M))。谢谢
我总是使用.hgignore和BeforeBuild
(在.csproj文件中)这样的组合。
在我的一个宠物项目中,我有以下设置:
App.config
包含我的真实硬编码用户ID和密码进行testing。
App.config.example
是相同的,但伪造的数据,如“dummy_user”和“dummy_pw”。
App.config
不是存储库的一部分,它被忽略(在.hgignore
)。
App.config.example
是存储库的一部分。
然后,我的解决scheme的.csproj文件中的BeforeBuild
目标中有以下内容:
<Target Name="BeforeBuild"> <Copy Condition="!Exists('App.config')" SourceFiles="App.config.example" DestinationFiles="App.config"/> </Target>
所有这一切有以下作用:
- 具有真实数据的configuration文件永远不会意外地提交到存储库,因为它被忽略
- 存储库只包含具有示例数据的configuration文件
- 如果有人将版本库复制到他的机器上,他将不会有“真正的”configuration文件…但是如果缺less,它将在第一次生成Visual Studio / MSBuild之前自动创build,只需复制
.example
文件(然后他可以将他的真实login数据放入新创build的App.config
文件中)。 - 如果具有真实硬编码用户数据的
App.config
已经存在,那么它将不会在构build时被覆盖,因为BeforeBuild事件只会在App.config
不存在的情况下发生
基督徒的答案是正确的,但我想提到的是,TortoiseHg支持你想要的自动排除列表 。
排除列表的一个问题是无法合并:您必须在合并时提交所有文件,因此您必须在搁置,合并,提交和取消搁置时进行一些跳舞。
当你做一个TortoiseHG提交时,有一个由他们checkbox的文件列表。 取消select您不想要的文件。
或者,在命令行中,执行hg commit --exclude "pattern"
,其中pattern在hg手册页中定义。
你可以随时使用hg忘记 。