我有很多不同的克隆,我分开处理。当我想更新这些克隆时,从服务器更新它们可能会非常慢。所以我有一个“干净”的克隆,我定期从服务器更新,所有其他克隆克隆从干净的克隆(希望是有道理的)。
但现在我所拥有的是一个两步走的方法。首先进入干净的克隆并拉动,然后转到我正在处理的真正的克隆并从干净的克隆中拉出来。这可以分为一步吗?
理想情况下,“干净”的克隆是透明的:当它被拉出时,它会自行拉动。这样我们就有了缓存和一步。有没有办法做到这一点?
答案 0 :(得分:2)
在本地保持一个干净的克隆是非常普遍的,一般来说是一个好主意。我一直坚持你描述的两步过程,但如果你愿意的话,你可以用钩子做到这一点。
在您的缓存存储库中,您可以在.hg/hgrc
文件中添加如下内容:
[hooks]
preoutgoing = hg pull
告诉repo在捆绑更改以响应对其发出的hg pull
或pull
请求之前执行clone
。
请注意,即使下游(真实克隆)repo使用pull -r
或clone -r
请求更改集的子集,此缓存仓库也会撤消所有内容。这可能是你想要的,因为你的目标是一面镜子,但评论者指出值得指出。
答案 1 :(得分:1)
您可以使用hooks执行此操作。在<clean-clone>/.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
”是可选标识符,没有特殊含义;如果没有定义其他挂钩,则可以将它们保留。)