硬盘数据恢复后 push 代码,控制面板不更新

请先搜索确保没有重复发帖。

Gogs 版本:0.11.86.0130
系统类型及版本:Debian 9
数据库:MarialDB 10.1.38
问题描述:

由于误操作将装有数据的硬盘格式化导致 Git 数据(gogs-repositories)丢失;
随后从备份盘上拷贝 Git 数据(gogs-repositories)恢复;
备份盘的 Git 数据缺少几条 commit,恢复后控制面板显示了缺失的 commit

恢复完成后,可以 Push / Pull 代码,Gogs 里面也能访问仓库;
进入相应仓库也会显示 commit 记录,但是首页控制面板不会同步显示记录;
就算在 Gogs 中新建文件然后提交,控制面板一样不会显示记录;
简单的说:除了控制面板不更新记录外,所有功能都正常。

期间有尝试过

  • 删除所有丢失 Git 文件的仓库记录
  • 对仓库进行垃圾回收
  • 重新同步所有仓库的 pre-receive、update 和 post-receive 钩子
  • 重新初始化所有丢失 Git 文件的仓库
  • 转移仓库所有权

不知道问题具体出在哪里,日志也没发现错误信息;
想请教一下有没有办法让控制面板继续更新记录?

硬盘说明
Debian:安装在 [系统盘]
MarialDB:安装在 [系统盘],数据也在 [系统盘]
Gogs:安装在系统盘,数据通过 Linux 软链接到 [硬盘data]

/home/git/gogs# ls -l
total 33684
drwxr-xr-x  3 git git     4096 Jul 14  2018 custom
drwxr-xr-x  4 git git     4096 Jun 21 16:14 data
-rwxr-xr-x  1 git git 34439112 Jun 21 15:12 gogs
lrwxrwxrwx  1 git git       29 Nov  5  2018 gogs-repositories -> /media/data/gogs-repositories/
-rw-r--r--  1 git git     1054 Jun 21 15:12 LICENSE
drwxr-xr-x  3 git git     4096 Jun 21 15:13 log
drwxr-xr-x  7 git git     4096 Jun 21 15:12 public
-rw-r--r--  1 git git     8253 Jun 21 15:12 README.md
-rw-r--r--  1 git git     5351 Jun 21 15:12 README_ZH.md
drwxr-xr-x  7 git git     4096 Jun 21 15:12 scripts
drwxr-xr-x 11 git git     4096 Jun 21 15:12 templates

可以去管理面板 /admin 执行 “重新生成所有 Git 钩子” 文件

感谢开发者大大抽时间回复。

/admin 没找到 重新生成所有 Git 钩子 但有个 重新同步所有仓库的 pre-receive、update 和 post-receive 钩子。试过后没有效果。

感谢回复,目前已经解决了

  • 直接使用 重新同步所有仓库钩子 无效,需要先删除每个版本库下 hooks 文件夹
  • 或者执行下面的命令也可以

···
cd /home/git/gogs/gogs-repositories
chmod +x */hooks/post-receive
chmod +x */hooks/pre-receive
chmod +x */hooks/update
···

额。。觉得能用就行!嘿嘿

1 Like

嗯谢谢回复
应该是跨文件系统备份导致的
下次备份的时候使用 tar 备份试试