第86回 Ruby関西 勉強会での発表資料です。
Ruby本体の開発のメインリポジトリがsubversionからgitに変わったので、その話をします。 k0kubunさんのブログの[令和時代のRubyコア開発](https://k0kubun.hatenablog.com/entry/ruby-core-2019)を見ておくとわかりやすいかもしれません。(このブログ記事からの抜粋と関連する話をする予定です。)
Ruby svn to gitKazuhiro NISHIYAMA第86回 Ruby関⻄ 勉強会2019/05/11株式会社Ruby開発Powered by Rabbit 2.1.8
View Slide
⾃己紹介⻄⼭ 和広Ruby のコミッターtwitter, github など: @znz株式会社Ruby開発 www.ruby-dev.jp1/14
svn から git へ参考:令和時代のRubyコア開発 - k0kubun’sbloghttps://k0kubun.hatenablog.com/entry/ruby-core-2019Ruby のコア開発が Subversion からGit に移⾏2/14
歴史バージョン管理システム以前news (nntp) とかメーリングリスト (ML) とかCVS : ruby-cvs ML の名前の由来Subversion : 安定版のメンテナンスはまだこちらGit : 開発版はこちら (安定版も 2.7 から)3/14
歴史 (CVS → Subversion)連携しているものもほぼない時代すんなり移⾏ruby-cvs ML の名前はそのままsvn → git の時は特に話題になることもなく同様にそのままに4/14
歴史 (Subversion → ?)svk を⼿元で使っている⼈もいたMercurial などには移⾏せずGit が主流にsvn も git-svn 経由で使う⼈が増えた5/14
なぜ移⾏?バージョン管理システムの主流が Gitgit-svn を使っている⼈が多かったが⾊々と面倒だったGitHub で貢献者が出なかった(Co-authored-by も git-svn が挟まるとダメだった)6/14
GitHub ではなく cgitプロプライエタリなものは使わないポリシーの⼈ (Eric Wong) がいた独⾃ hook の都合でいきなり GitHub 移⾏は⼤変そうだった7/14
Git化に必要だった作業達コミットフックの Git 対応Ruby リポジトリ内の tool/* スクリプト公式の issue tracker の RedmineRubyCI や ci.rvm.jp などの CI や botcgit の⽤意、運⽤、アナウンス8/14
GitHub で運⽤している他プロジェクトとの違いGitHub 上でのマージボタンは使わない同期が⼀⽅向のため開発版ブランチが trunk (master ではない)これも変更すると影響があるので変えるならまた別途9/14
制限事項git push -f は禁⽌trunk 以外へのブランチへの push は禁⽌(安定版ブランチはまだ svn からのミラー)マージコミットはしない移⾏直後に1個⼊れてみたらいくつか懸念点があったので当面は使わない 10/14
よかったことgit-svn の複雑さに悩まなくてよくなったgit.ruby-lang.org が日本からだとgithub.com より速いhttps://github.com/ruby/ruby/graphs/contributors に貢献者がのるようになった11/14
GitHub はミラーGitHub は Subversion 時代と変わらずミラーcgit とずれて push -f されることもある⼿元のがおかしくなったら「git fetch -f」とか「git checkout -B trunkorigin/trunk」とか clone し直しとか12/14
GitHubpull request も可能GitHub 上でのマージはしないが、コミッターがマージして push できる議論が必要なものは bugs.ruby-lang.org のチケットで13/14
まとめRuby 本体のレポジトリは Subversionから Git に安定版は次の 2.7 から連携ツールもほぼ移⾏完了GitHub はミラーだが pull request も可能14/14Powered by Rabbit 2.1.8