Mercurial - 指定应该始终拉出某些文件但从不推送?

时间:2011-06-14 20:49:37

标签: version-control mercurial

我的存储库中有某些文件我希望能够在本地编辑。但我绝不想将这些文件的任何更改推送到服务器。我可以设置它吗?

编辑:澄清一下,我确实希望得到其他人所做的改变。但我不想推动我的改变。

3 个答案:

答案 0 :(得分:2)

这不容易。 Mercurial不推送和拉动文件,推送和拉动变更集。您唯一的途径是永远不会提交这些文件。忽略它们不是一种选择,因为它们已被跟踪(添加)并且跟踪总是忽略覆盖。

您可以在类似的提交上明确排除它们。

hg commit -X a-file-I-changed -X another-file 

因为你最终会忘记这样做,你可以在你的hgrc中设置一个别名:

[alias]
mycommit = -X a-file-I-changed -X another-file 

然而,我会想到你正在谈论像数据库设置文件这样的配置文件。处理它的最好方法是不提交database.conf(或者不管它叫什么),而是提交database.conf.sample,然后让你的启动脚本将database.conf.sample复制到database.conf(如果它还没有)存在。这是正常做法。

答案 1 :(得分:2)

如果您的更改很重要,请考虑将其作为Mercurial Queue中的补丁。您可以pop更改,撤消更改,然后push将您的更改重新发送到工作目录。如果这是一个你无法忍受的变化,你可以让队列成为它自己的存储库,然后在其他地方克隆那个存储库。

答案 2 :(得分:1)

Ry4an写道,您可以在提交时排除该文件。我的一位同事做了一个简单的扩展,在简单的情况下将自动化:

  

https://www.mercurial-scm.org/wiki/ExcludeExtension

     

https://bitbucket.org/aragost/exclude/

非简单的情况是合并 - Mercurial不允许您在提交合并时排除文件。现在,您必须将修改后的文件移到一边,还原它,然后在合并后将其移回。欢迎补丁来处理这种情况!