mercurial暂时忽略版本化文件

时间:2010-12-09 05:23:45

标签: mercurial ignore

我的问题基本上与here相同,但适用于mercurial。我有一组受版本控制的文件,一个保存操作会更改很多文件。一些最终的更改对于版本控制很重要,而且一些更改只是垃圾。我可以将垃圾“分区”成单独的文件。这些垃圾文件需要是基本结账的一部分才能使其正常工作,但它们的内容(以及随时间的变化)对于版本控制并不重要。现在我只是告诉我们所有的开发人员不要提交这些文件,但我们都忘了,它在存储库中创造了许多额外的包袱。我真的不喜欢提出的svn解决方案,因为有很多文件,我想要一个简单的克隆才能在没有所有这些额外的手工工作的情况下工作,所以我想知道mercurial是否有更好的选择。它有点像hg搁置但不完全,有点像忽略,但不完全。是否有一些hg扩展允许这个? git能做到吗?

3 个答案:

答案 0 :(得分:3)

Mercurial不支持此功能。正确的方法是提交thefile.sample然后让您的开发人员(或更好地部署脚本)从thefile.samplethefile执行复制,如果thefile不存在。这样任何人都可以更新示例文件,但是他们没有提交本地更改的风险(比如他们的个人数据库连接字符串)。

答案 1 :(得分:2)

啊哈!因此,TortoiseHG的存储库和全局设置具有自动排除列表,您可以在其中定义在打开状态,提交和搁置对话框时默认情况下将取消选中的文件列表。所以他们仍然出现,但用户必须检查它们才能真正做出提交。该设置存储在hgrc中,但它位于[tortoisehg]标题下,因此mercurial本身不支持它。然而,它符合我的需要。

答案 2 :(得分:1)

对此的一个解决方案是使用嵌套树支持(git中的子模块),其中“垃圾”将被放置在不同的存储库中(以避免混乱主存储库),同时允许在一个存储库中检出整个事物。一致的方式(两个回购同步的正确版本)。

https://www.mercurial-scm.org/wiki/Subrepository?action=show&redirect=subrepos

在git中,子模块是这个问题的一个解决方案 - 但它们并不是那么出色的UI。我所做的是保留两个完全独立的存储库,并在需要使用垃圾回购更新主存储库时使用子树合并策略:http://progit.org/book/ch6-7.html