一段时间以来,我一直使用以下命令在服务器上手动更新变更集:
$ 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;