Repository#diffs_between('bugfix', 'master') returns "--broken-diff"

Created by: xiaohui-zhangxh

Started PUT "/avvo/forager/merge_requests/1" for  at 2013-05-07 11:59:28 +0800
Processing by MergeRequestsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"VK/UNCgA7cmcZE15ySaSpCqSrIRWisLt+CJ+C6E1ZKY=", "merge_request"=>{"source_branch"=>"lawyer_id", "target_branch"=>"master", "title"=>"need merge to master", "assignee_id"=>"1", "milestone_id"=>""}, "project_id"=>"avvo/forager", "id"=>"1"}
Completed 500 Internal Server Error in 891ms

NoMethodError (undefined method `to_hash' for "--broken-diff":String):
  app/models/merge_request.rb:217:in `map'
  app/models/merge_request.rb:217:in `dump_diffs'
  app/models/merge_request.rb:115:in `reloaded_diffs'
  app/models/merge_request.rb:98:in `reload_code'
  app/controllers/merge_requests_controller.rb:63:in `update'

Test calling within IRB, it indeed returns "--broken-diff", is there something wrong with my Debian env?

irb(main):005:0> project.repository.diffs_between('bugfix', 'master')
=> ["--broken-diff"]
git@cds:~/gitlab$ RAILS_ENV=production bundle exec rake gitlab:check
Checking Environment ...

Git configured for git user? ... yes
Has python2? ... yes
python2 is supported version? ... yes

Checking Environment ... Finished

Checking Gitlab Shell ...

GitLab Shell version? ... OK (1.3.0)
Repo base directory exists? ... yes
Repo base directory is a symlink? ... no
Repo base owned by git:git? ... yes
Repo base access is drwxrws---? ... yes
post-receive hook up-to-date? ... yes
post-receive hooks in repos are links: ...