Eul*_*ges 5 mercurial mercurial-phases
我目前在一家使用 mercurial 的公司工作,但大多数开发人员使用 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 =
Run Code Online (Sandbox Code Playgroud)
以及~/.hgrc
:
[extensions]
# evolve = => Disabled on purpose
Run Code Online (Sandbox Code Playgroud)
只需使用钩子删除.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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
318 次 |
最近记录: |