はじめに
GitLab.org / GitLab recipes | GitLab に従って新規にインストールした GitLab 6.7 でプロジェクトを作成した後、画面の指示に従って git clone や add, commit, そして push を行ってから、再度 GitLab にて Project にアクセスしたところ、500 Internal Server Error が発生しました。
エラーログでぐぐってみたところ、同じ問題で困っている人も数名いるようでした。日本語の情報は見つからなかったので、ここに記録しておきます。
エラーログ
Started GET "/yu-umezawa/gitlabtest" for 202.225.5.123 at 2014-04-15 02:24:33 +0000
Processing by ProjectsController#show as HTML
Parameters: {"id"=>"yu-umezawa/gitlabtest"}
Rendered projects/_dropdown.html.haml (4.7ms)
Rendered shared/_clone_panel.html.haml (0.7ms)
Rendered projects/_home_panel.html.haml (27.5ms)
Rendered events/_event_last_push.html.haml (6.6ms)
Rendered shared/_event_filter.html.haml (3.0ms)
Rendered projects/repositories/_download_archive.html.haml (4.2ms)
Rendered projects/show.html.haml within layouts/projects (51.3ms)
Completed 500 Internal Server Error in 92ms
ActionView::Template::Error (undefined method `sha' for nil:NilClass):
39: = link_to project_compare_index_path(@project, from: @repository.root_ref, to: @ref || @repository.root_ref), class: 'btn btn-block' do
40: Compare code
41:
42: - if @repository.readme
43: - readme = @repository.readme
44: = link_to project_blob_path(@project, tree_join(@repository.root_ref, readme.name)), class: 'btn btn-block' do
45: = readme.name
app/models/repository.rb:183:in `tree'
app/models/repository.rb:167:in `block in readme'
app/models/repository.rb:166:in `readme'
app/views/projects/show.html.haml:42:in `_app_views_projects_show_html_haml___3251137056208210433_70225973183040'
app/controllers/projects_controller.rb:69:in `block (2 levels) in show'
# Allow login via Twitter, Google, etc. using OmniAuth providers
# see https://github.com/gitlabhq/gitlab-public-wiki/wiki/Working-custom-omniauth-provider-configurations
app/controllers/projects_controller.rb:63:in `show'
app/controllers/application_controller.rb:58:in `set_current_user_for_thread'
原因と解決方法
config/gitlab.yml
で指定する git パスが間違っていることが原因でした。デフォルトでは /usr/bin/git
が指定されていますが、Install Git from Source (optional) に従って最新をインストールしていたので、/usr/local/bin/git
を指定しなければなりませんでした。
上記ドキュメント中では、わざわざ make prefix=/usr/local install
しているのでハマる人は多そうです。Contribute to GitLab recipes に従ってプルリクエストを送ろうと思います。