新commit无法自动关联issue


#1

Gogs 版本:0.11.19.0609
系统类型及版本:ubuntu 16.04
数据库:sqlite3
问题描述:手动修改数据库后,工单和commit关联失效

在某次commit中,错误的填写了issue编号(#14填成了#12),并push到服务器上。之后修改了commit内容后重新push,导致issue上#14和#12都关联了这个commit。

之后通过手动在数据库中删除comment表中多余的项(#12与commit关联的链接项),然后该仓库所有新的commit都无法关联到相关的issue了。

比如在之后创建了一个issue #18,并在某次commit中添加了issue #18,无法自动在comment表中生成关联表项,导致新的issue页面上无法查看到与之对应的commit。

手动向comment表中insert相关commit信息后,在issue页面能够看到与之对应的commit。

该问题只出现在被手动修改的仓库上,其他新建仓库不受影响。

是什么判断条件导致新的commit无法自动关联到issue?要如何修复数据库呢?


#2

Gogs 不对手动修改数据库负责…

关联本质上就是一个特殊类型的 comment。。你可以手动再改一次

如果相同 commit ID 已经关联过,就会被直接忽略


#3

恩,手动改动数据库会引起未知的问题…

新提交的commit是全新的,未在git仓库或者gogs数据库中出现过的,还是无法关联。
所以现在只能每次需要关联的时候手动向comment表中添加一列数据,太麻烦了。
目前出问题的仓库中(出问题的仓库只在之前手动删除过一条记录,并添加一条新纪录…),新的带有 “issue #xxx” 的commit都不会自动关联,需要手动一个个添加,而其他仓库正常。

所以想请教下,是否自动关联的判断条件具体是什么,然后我好通过判断条件看看是哪个地方导致自动关联issue操作没有执行或者执行失败…


#4

。。你先看看有没有日志错误吧,,我觉得你可能有其他问题 path/to/gogs/log/hooks


#5

日志没有错误信息,不过通过ugly的方法解决了目前的问题,这里详细说明下,为出现同样情况的兄弟做个参考…

  1. 在gogs web页面上修改原始仓库的名称;
  2. 新建一个仓库,与原始仓库同名;
  3. 更新issue、issue_user、label、milestone等表中的repo_id,从原始的ID改为新创建的ID(仓库ID可以通过repository表查询);
  4. 更新repository表中的新仓库相关属性,例如我这里更新了num_watches、num_stars、num_forks、num_issues、num_closed_issues、num_pulls、num_closed_pulls、num_milestones、created_unix等字段(注意,这里的字段根据自己的实际情况来,新仓库的值与老仓库一致);
  5. 更新repository表中所有fork_id为老仓库ID的字段,值为新仓库ID;
  6. 重新上传本地代码到新仓库中;

总体原则就是:不知道数据库中原仓库相关字段哪里出问题,那就直接重新新弄一个,然后将所有已知与老仓库关联的信息重新关联到新仓库,最后上传本地git库到新仓库。

最后提新各位看到这条issue的兄弟们,手动有风险,改前需备份…
:joy::joy::joy:


#6

… 你这个方法也太恐怖了,