我目前在一家使用Mercural的公司工作,但是大多数开发人员使用MQ而不是新的演进流程。因此,大多数用户没有启用扩展。
每次我推送到主存储库时,.hg/store/obsstore
都会使用过时的变更集自动推送。这是有问题的,因为在此之后所有未启用扩展名的用户都收到以下消息:
过时的功能未启用,但找到了33个标记!
此答案中提出的一种解决方案涉及.obsstore
在本地删除,但这不是我想要的,因为我仍在使用evolve
,这意味着我希望过时的变更集保持隐藏。不仅如此,过时的标记和变更集应该在服务器存储库中可用,以便我们保留使用evolve
诸如智能冲突解决之类的好处。
我希望一种方法不将过时的变更集推送到服务器存储库中,或者(正确的方式)让服务器不将过时的数据推送到未evolve
启用的客户端。
这可能吗?如果没有,为什么不呢?
我发现此问题有两种解决方法(破解),因为在撰写此答案时,看起来Mercurial无法解决此问题:
evolve
从~/.hgrc
文件中删除扩展名,在每个存储库的基础上启用它,然后使用SSH指向存储库(在我们的示例中,它位于NFS上,这是问题的根源)。
也就是说,在您的存储库中,hgrc
您将拥有:
# This is <repo>/.hg/hgrc
[paths]
default = ssh://localhost//path/to/origin/repo
[extensions]
evolve =
并继续~/.hgrc
:
[extensions]
# evolve = => Disabled on purpose
只需使用钩子即可删除.obspurge
存储库上的文件hgrc
:
# This is <repo>/.hg/hgrc
[alias]
obspurge = !echo "Purging obsolete markers" && rm /path/to/origin/repo/.hg/store/obsstore
[hooks]
post-push = hg obspurge
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句