Caching 创建mercurial存储库的本地透明缓存
我有很多不同的克隆体,我分别进行研究。当我想要更新这些克隆时,从服务器更新它们可能会非常慢。因此,我有一个“干净”的克隆,我定期从服务器上更新它,所有其他克隆都是从干净的克隆中克隆出来的(希望这是有意义的) 但现在我有一个两步的方法。首先转到干净的克隆并拖动,然后转到我正在处理的真实克隆并从干净的克隆中拖动。这可以分为一个步骤吗Caching 创建mercurial存储库的本地透明缓存,caching,mercurial,Caching,Mercurial,我有很多不同的克隆体,我分别进行研究。当我想要更新这些克隆时,从服务器更新它们可能会非常慢。因此,我有一个“干净”的克隆,我定期从服务器上更新它,所有其他克隆都是从干净的克隆中克隆出来的(希望这是有意义的) 但现在我有一个两步的方法。首先转到干净的克隆并拖动,然后转到我正在处理的真实克隆并从干净的克隆中拖动。这可以分为一个步骤吗 理想情况下,“干净的”克隆应该是透明的:当它被从中拉出来时,它会自己拉。这样我们就有了缓存和一步操作。有什么方法可以做到这一点吗?在本地保持一个干净的克隆是非常常见的,
理想情况下,“干净的”克隆应该是透明的:当它被从中拉出来时,它会自己拉。这样我们就有了缓存和一步操作。有什么方法可以做到这一点吗?在本地保持一个干净的克隆是非常常见的,通常也是一个好主意。我一直坚持使用您描述的两步流程,但是如果您愿意,可以使用钩子来实现这一点 在缓存repo中,您可以将这样的内容放入
.hg/hgrc
文件中:
[hooks]
preoutgoing = hg pull
这告诉回购在捆绑更改以响应对其发出的pull
或clone
请求之前,先执行hg pull
请注意,即使下游(真正的克隆)repo使用pull-r
或clone-r
请求变更集的子集,此缓存repo也会拉下所有内容。这很可能是你想要的,因为你的目标是一面镜子,但评论者指出这是值得指出的。你可以使用。在您的/.hg/hgrc
中,添加以下内容作为初稿:
[hooks]
# Before a pull from this repository, pull from upstream.
preoutgoing.autopull = [ $HG_SOURCE = 'pull' ] && hg pull
# After a push to this repository, push to upstream.
changegroup.autopush = [ $HG_SOURCE = 'push' ] && hg push
(注意:“
autopush
”和“autopull
”是可选标识符,没有特殊意义;如果没有定义其他挂钩,则可以将它们省略。)您可能收到了错误信息:预输出
不限于基于网络的拉取。此外,您还需要将预输出
钩子限制为拉取
请求的变更集,以防止它在从干净的克隆推送到上游时也触发。哦,预输出是正确的,这就更好了。我会更新的。好的,这不总是有效的。我认为这是因为只有当下游回购(我的签出)缺少来自上游回购(我的缓存)的提交时,才会触发传出。在这种情况下,将触发“传出”提交。有没有办法触发所有我从缓存中取出的情况?Hrm,你说得对。请尝试在外出前使用连字号进行操作,该操作会一直命中,或者永远不会命中。此操作在Windows上有效吗?我尝试了这一点,但我在等待由“LVKGamerPC:1308”持有的存储库c:\temp\cache的锁定时遇到了。这是在“克隆”部分,我尝试了使用=hg pull
,因为[…]
部分是针对Linux还是其他什么?