故障排查

故障排查: 迁移仓库后 git push 返回 403

为什么在 GitHub 上转移或重命名仓库之后推送会返回 403,以及如何用从 GitHub 重新同步把它指回去,让推送恢复正常。

为什么拉取正常,推送却失败

当您在 GitHub 上把仓库转移到某个组织(或重命名它)之后,旧的 owner/repo 路径仍然作为重定向存在。GitHub 会悄悄把 fetchclone 转发到新位置,所以拉取一直正常,一切看起来都没问题,直到您推送为止。

推送不会被重定向。 GitHub 会用 403(权限被拒)拒绝对旧路径的推送,因为 CICDoo 和您的实例里存的远程仓库仍然是旧的所有者。解决办法是让 CICDoo 指向新的所有者,再让您的实例接收这个变更。

修复主仓库

  1. 打开项目,进入 设置,然后是 GitHub 标签页。
  2. 仓库 字段是特意设为只读的。点击 从 GitHub 重新同步: CICDoo 会向 GitHub 询问该仓库当前的名称,并自动更新所有者。字段会刷新为新的 owner/repo
  3. 重启 该项目的每个实例。重启时,实例会把自己的检出指向新的所有者。您在编辑器中的文件和未提交的更改不受影响,改变的只有远程 URL。参见 重启、停止和删除实例

重启完成后,在编辑器终端里再推送一次,应该会成功,而不是返回 403。

子模块与额外仓库

如果移动的是一个 子模块额外仓库 中的一项),通常您什么都不用做: 运行中的实例会检测到这次移动,并在大约十秒内自行把该子模块指向新地址,于是下一次推送就能成功。

如果该子模块位于非 GitHub 的托管服务上,或者您更希望明确处理,请在实例 设置Odoo 子标签页下的 额外仓库 中修改它的 URL,然后重启实例。子模块在每次重启时都会从这份列表重新克隆,所以新的 URL 会立即生效。参见 实例设置详解

如果重新同步找不到仓库

重新同步使用的是为该仓库所有者连接的 GitHub 令牌。如果这个令牌不再有权访问已移动的仓库(例如仓库被转移到了该令牌看不到的组织),重新同步会报告找不到该仓库。请重新连接 GitHub,或让该令牌获得对新所有者的访问权限,然后再试一次。参见 连接 GitHub

如果遇到困难,请从工单页面或聊天组件提交支持工单。

仍未解决?在应用中提交工单,或与工程师沟通