尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Gogs push 成功但仪表盘 timeline 不更新怎么排查

Gogs push 成功但仪表盘 timeline 不更新怎么排查 Gogs push 成功但仪表盘 timeline 不更新怎么排查【免费下载链接】gogsThe painless way to host your own Git service项目地址: https://gitcode.com/GitHub_Trending/go/gogs通过 SSH 向 Gogs 推送代码时客户端显示 push 成功但登录 Gogs 后首页仪表盘的 timeline动态和仓库页面的提交信息始终不刷新。这个问题与网络或数据库连接失败不同push 本身已经完成了卡在 Gogs 收到推送后的后续动作上。本文给出 Gogs 官方文档 Troubleshooting 中针对这一现象的排查路径先确认 hook 脚本是否真正执行再按仓库所在存储的挂载方式逐项检查最后在 hook 路径过期时重建 hook。先理解机制timeline 由 hook 脚本更新按 Gogs 文档的说明当使用 Git over SSH 时Gogs 依赖 hook 脚本来更新 timeline 和仓库展示信息。也就是说SSH push 成功只代表 Git 数据已写入仓库timeline 的更新是 post-receive hook 脚本执行后才会发生的动作。docs/asking/troubleshooting.mdx 同时指出若干条件会导致这些 hook 脚本无法执行尤其是仓库存放在挂载设备mounted device上时。因此排查的主线是确认脚本能不能被执行而不能只盯着 push 命令本身。第一步确认 hook 是否真的被执行在 push 的客户端输出中先看有没有 hook 报错。文档记录了一种相关现象当系统缺少bash时Gogs 的所有 hook 脚本都依赖bash运行push 会收到如下拒绝信息! [remote rejected] master - master (hook declined)如果你看到的是这条报错先确认服务器上bash可用即可不必再往下查挂载点。如果 push 输出完全正常、没有 hook 报错说明问题更可能是 hook 脚本因文件系统限制被静默阻止执行进入第二步。第二步检查仓库所在挂载点的执行权限这是文档列出的最主要根因。在 Gogs 服务器上运行mount查看仓库所在挂载点的当前挂载选项然后按以下三种情况分别处理三种情况都来自 docs/asking/troubleshooting.mdx 的原文方案挂载点带有noexec如果mount输出显示包含仓库的挂载点设置了noexechook 脚本无法执行。需要在/etc/fstab中为该挂载点添加exec选项然后重新挂载使其生效。修改/etc/fstab前建议先备份原文件。vfat以及可能的 cifs挂载如果仓库位于vfat文件系统上cifs 也可能出现同类问题需要确认uid、gid和fmask挂载选项允许运行 Gogs 的用户或其所属组执行文件。NFS、Samba 网络共享如果仓库通过网络挂载的共享NFS、Samba存放需要确认服务器端没有配置为禁止在远端文件系统中执行文件。第三步hook 路径过期时重建 hook另一种会导致 hook 失效的情况是Gogs 二进制被移动到了与原安装位置不同的目录导致 Git hooks 引用了过期的路径。文档给出的处理方式是登录管理面板/admin依次执行两个任务Rewrite.ssh/authorized_keysfileResync pre-receive, update and post-receive hooks of all repositories也可以通过命令行完成 hook 重建resync-hooks子命令会为所有仓库重新写入 Git server-side hooks参见 CLI referencegogs admin resync-hooks注意该命令作用于所有仓库会重写它们的服务端 hooks应在 Gogs 停止或业务低峰期执行。管理面板中的 Rewrite.ssh/authorized_keysfile 任务会整体替换authorized_keys文件文件里非 Gogs 添加的 key 会丢失执行前请先备份。验证修复是否生效timeline 不更新的排查没有独立的诊断命令验证方式就是复现原始场景通过 SSH 向任一仓库 push 一次新的提交然后刷新 Gogs 首页查看仪表盘 timeline 是否出现对应的 push 记录。如果 timeline 恢复更新说明 hook 已能正常执行仍然不更新时回到第二步核对mount的实际输出与/etc/fstab是否一致 fstab 修改后未重新挂载是常见遗漏。适用范围与限制本文只覆盖Git over SSH推送导致的 timeline 不更新这是该现象在文档中的适用前提文档将该问题与挂载设备场景强关联本地磁盘直存的部署可优先跳到第三步检查 hook 路径排查中涉及的命令mount、gogs admin resync-hooks均要求对 Gogs 服务器有 shell 访问权限。【免费下载链接】gogsThe painless way to host your own Git service项目地址: https://gitcode.com/GitHub_Trending/go/gogs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表