Tech Racho エンジニアの「?」を「!」に。
  • インフラ
  • 開発

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に取り込んでもらえました


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。