Slide 1

Slide 1 text

Ruby svn to git Kazuhiro NISHIYAMA 第86回 Ruby関⻄ 勉強会 2019/05/11 株式会社Ruby開発 Powered by Rabbit 2.1.8

Slide 2

Slide 2 text

⾃己紹介 ⻄⼭ 和広 Ruby のコミッター twitter, github など: @znz 株式会社Ruby開発 www.ruby-dev.jp 1/14

Slide 3

Slide 3 text

svn から git へ 参考: 令和時代のRubyコア開発 - k0kubun’s blog https://k0kubun.hatenablog.com/ entry/ruby-core-2019 Ruby のコア開発が Subversion から Git に移⾏ 2/14

Slide 4

Slide 4 text

歴史 バージョン管理システム以前 news (nntp) とかメーリングリスト (ML) と か CVS : ruby-cvs ML の名前の由来 Subversion : 安定版のメンテナンスは まだこちら Git : 開発版はこちら (安定版も 2.7 から) 3/14

Slide 5

Slide 5 text

歴史 (CVS → Subversion) 連携しているものもほぼない時代 すんなり移⾏ ruby-cvs ML の名前はそのまま svn → git の時は特に話題になることもなく 同様にそのままに 4/14

Slide 6

Slide 6 text

歴史 (Subversion → ?) svk を⼿元で使っている⼈もいた Mercurial などには移⾏せず Git が主流に svn も git-svn 経由で使う⼈が増えた 5/14

Slide 7

Slide 7 text

なぜ移⾏? バージョン管理システムの主流が Git git-svn を使っている⼈が多かったが ⾊々と面倒だった GitHub で貢献者が出なかった (Co-authored-by も git-svn が挟まる とダメだった) 6/14

Slide 8

Slide 8 text

GitHub ではなく cgit プロプライエタリなものは使わないポリ シーの⼈ (Eric Wong) がいた 独⾃ hook の都合でいきなり GitHub 移 ⾏は⼤変そうだった 7/14

Slide 9

Slide 9 text

Git化に必要だった作業達 コミットフックの Git 対応 Ruby リポジトリ内の tool/* スクリプト 公式の issue tracker の Redmine RubyCI や ci.rvm.jp などの CI や bot cgit の⽤意、運⽤、アナウンス 8/14

Slide 10

Slide 10 text

GitHub で運⽤している他 プロジェクトとの違い GitHub 上でのマージボタンは使わない 同期が⼀⽅向のため 開発版ブランチが trunk (master では ない) これも変更すると影響があるので変えるな らまた別途 9/14

Slide 11

Slide 11 text

制限事項 git push -f は禁⽌ trunk 以外へのブランチへの push は禁 ⽌ (安定版ブランチはまだ svn からのミラ ー) マージコミットはしない 移⾏直後に1個⼊れてみたらいくつか懸念点 があったので当面は使わない 10/14

Slide 12

Slide 12 text

よかったこと git-svn の複雑さに悩まなくてよくなっ た git.ruby-lang.org が日本からだと github.com より速い https://github.com/ruby/ruby/ graphs/contributors に貢献者がのる ようになった 11/14

Slide 13

Slide 13 text

GitHub はミラー GitHub は Subversion 時代と変わらず ミラー cgit とずれて push -f されることもある ⼿元のがおかしくなったら「git fetch - f」とか「git checkout -B trunk origin/trunk」とか clone し直しとか 12/14

Slide 14

Slide 14 text

GitHub pull request も可能 GitHub 上でのマージはしないが、コミッタ ーがマージして push できる 議論が必要なものは bugs.ruby- lang.org のチケットで 13/14

Slide 15

Slide 15 text

まとめ Ruby 本体のレポジトリは Subversion から Git に 安定版は次の 2.7 から 連携ツールもほぼ移⾏完了 GitHub はミラーだが pull request も 可能 14/14 Powered by Rabbit 2.1.8