GitLabをアップデートしたら行コメントが消えてしまったとき

GitLabはバージョンアップが頻繁で、気づいたら安定版が5.1にまでなってました。

先日社内サーバと個人サーバのGitLabをそれぞれ3系から5.1にアップデートしたのですが、いつの間にかgitolite→gitlab-shell、resque→sidekiq、unicorn→pumaとすごい変化ですね。

アップデートは横着せずにマニュアル通りにやれば特に難しくありません。3.1の段階で、sqlite→mysqlに移行しておくのを忘れずに。

しかし問題が1点、コミットの行に付けていたコメントが表示されなくなってしまいました。

行コメント

行コメント

これは、4.1以降で行コード(line_code, line_anchorなどとコード内で呼ばれている)のフォーマットが変わったのが原因です。
アップデートしてもデータが消失してしまったわけではないので、5.1にアップデート後、以下の手順を実行すれば解決できました。

  1. MySQLのデータをバックアップ
  2. この移行スクリプト(以下にも記載)をlib/tasks/migrate/migrate_note_linecode.rakeとして保存
  3. sudo -u git -H RAILS_ENV=production bundle exec rake migrate_note_linecode
desc "GITLAB | Migrate Note LineCode"
task migrate_note_linecode: :environment do
  Note.inline.each do |note|
    index = note.diff_file_index
    if index =~ /^\d{1,10}$/ # is number. not hash.
      hash = Digest::SHA1.hexdigest(note.noteable.diffs[index.to_i].new_path)
      new_line_code = note.line_code.sub(index, hash)
      note.update_column :line_code, new_line_code
      print '.'
    end
  end
end

※アップデート前3.1、アップデート後5.1でのみ動作確認しました。必ずバックアップは取っておいてください。

5/13追記
masterに取り込んでもらえました

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。

高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(15区分 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、CITP、Ruby Programmer Goldなどを保有。

babaの書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ