You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写仓库根目录运行脚本,替代onsub扩展更新所有子仓库

替代Onsub扩展的Mercurial子仓库更新脚本

原来依赖的Onsub扩展确实在2017年就停止维护了,不过咱们完全可以用Mercurial自带的子仓库命令来实现同样的效果,而且不需要硬编码任何子仓库列表,直接在根仓库运行就行。

给你两个可行的方案,选哪个都可以:

方案一:用hg subrepo foreach(最简洁)

这个命令是Mercurial官方提供的子仓库遍历工具,会自动读取根目录的.hgsub文件来识别所有子仓库,完美替代Onsub的功能。脚本如下:

# 先更新主仓库并执行变基,和你原来的逻辑一致
hg pull --rebase

# 遍历所有子仓库,依次执行pull--update和update
hg subrepo foreach "hg pull --update && hg update"

方案二:用hg repos手动循环(更灵活)

如果需要额外的日志输出或者自定义逻辑,可以用hg repos -S获取所有子仓库的相对路径,再逐个处理:

hg pull --rebase

# 遍历每个子仓库路径
for repo in $(hg repos -S); do
  echo "正在更新子仓库: $repo"
  # 进入子仓库目录执行命令,用子shell避免影响当前目录
  (cd "$repo" && hg pull --update && hg update)
done

两种方案都不需要你手动维护子仓库列表,完全和原来的Onsub脚本效果一致,而且是Mercurial原生支持的,不用担心扩展失效的问题。

内容的提问来源于stack exchange,提问作者Violet Giraffe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:51:47