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にアップデート後、以下の手順を実行すれば解決できました。
- MySQLのデータをバックアップ
- この移行スクリプト(以下にも記載)をlib/tasks/migrate/migrate_note_linecode.rakeとして保存
- 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に取り込んでもらえました
