如何调试从 ./script/rails runner 运行的 Repository.fetch_changesets

如何调试从 ./script/rails runner 运行的 Repository.fetch_changesets

一段时间以来,我一直使用以下命令在服务器上手动更新变更集:

$ cd /custom/www-data/
$ source /custom/www-data/.rvm/scripts/rvm
$ ./script/rails runner "Repository.fetch_changesets" -e production
fatal: bad object beacccb6c1107dfd0c62e4dd5d7ffbded9a93af5

我怀疑这是一些 git commit。

我尝试使用递归 grep 在 repos 文件夹中找到此 uuid:

grep -rl'beacccb6c1107dfd0c62e4dd5d7ffbded9a93af5'/数据/存储库

在存储库文件夹中,但没有成功。

如何调试从 ./script/rails runner 运行的 Repository.fetch_changesets?

我使用 redmine-2.3.4 和 ruby​​ 2.0.0-p247。

答案1

根据http://www.redmine.org/issues/12505

bad object您可以使用以下命令找出哪个存储库包含此内容:

$ mysql redmine

mysql> select * from repositories where extra_info like '%beacccb6c1107dfd0c62e4dd5d7ffbded9a93af5%'\G

现在您可以删除并重新添加此存储库,一切都应该正常了。

答案2

正如我在来源中发现的:

# Redmine is able to be clever and only fetch changesets
# going forward from the most recent one it knows about.

如果我们使用 mercurial,redmine 会自动检测 head。如果我们使用 git,我们必须指定要使用哪个 head。

为了更改 repos 表中的 head,我使用了以下 SQL:

UPDATE redmine.repositories SET extra_info="---
heads:
- 42ab65e323d6bcc7dbec14f0fa45d220ef5db501
db_consistent:
ordering: 1" 
WHERE id=116;

相关内容