Skip to content

Git Submodule同步

和Fork同步的方法类似,基于Github Actions大体有三种方式:

  1. Parent Repo周期性同步
  2. Sub Repo更新时同时更新Parent Repo
  3. Sub Repo更新时触发21

其中1的通用性最广,不过周期性轮询不够优雅,每次同步不一定有更新导致Actions页面有很多无效的任务显示,运行周期和时效性也需要权衡。

2和3需要同时有两个Repo的权限(一般有Parent Repo而没有Sub Repo)。如果没有Sub Repo的权限,有一个折中方案,引入一个中间层Repo,cron的粒度很细,监听Sub Repo的有效事件再通知Parent Repo。也算是部分解决第一种方式中无效显示的弊端。

方案2涉及到A Repo的workflow更新B Repo,如果权限粒度足够细,可能会有串token的问题(token1 拥有A和B的读权限,token2拥有B的写权限),需要push前清理A Repo的token(git config --unset-all http.https://github.com/.extraheader2)

ref