3

我的问题与这里基本相同但适用于水银。我有一组受版本控制的文件,一个保存操作会更改很多文件。一些由此产生的更改对于版本控制很重要,而一些更改只是垃圾。我可以将垃圾“分区”成单独的文件。这些垃圾文件需要成为基本检出的一部分才能正常工作,但它们的内容(以及随时间的变化)对于修订控制并不那么重要。现在我只是告诉我们所有的开发人员不要提交这些文件,但我们都忘记了,它在存储库中创建了很多额外的包袱。我不太喜欢提出的 svn 解决方案,因为有很多文件,我想要一个简单的克隆来工作,而无需所有这些额外的手动工作,所以我想知道 mercurial 是否有更好的选择。它' s 有点像 hg shelve 但不完全,有点像忽略,但不完全。是否有一些允许这样做的 hg 扩展?git可以吗?

4

3 回答 3

3

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

于 2010-12-09T06:21:43.740 回答
2

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

于 2010-12-10T05:13:27.150 回答
1

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

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

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

于 2010-12-09T05:31:16.243 回答