Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby svn to git

Ruby svn to git

第86回 Ruby関西 勉強会での発表資料です。

Ruby本体の開発のメインリポジトリがsubversionからgitに変わったので、その話をします。
k0kubunさんのブログの[令和時代のRubyコア開発](https://k0kubun.hatenablog.com/entry/ruby-core-2019)を見ておくとわかりやすいかもしれません。(このブログ記事からの抜粋と関連する話をする予定です。)

Kazuhiro NISHIYAMA

May 11, 2019
Tweet

More Decks by Kazuhiro NISHIYAMA

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 歴史
    バージョン管理システム以前
    news (nntp) とかメーリングリスト (ML) と

    CVS : ruby-cvs ML の名前の由来
    Subversion : 安定版のメンテナンスは
    まだこちら
    Git : 開発版はこちら (安定版も 2.7 から)
    3/14

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 制限事項
    git push -f は禁⽌
    trunk 以外へのブランチへの push は禁

    (安定版ブランチはまだ svn からのミラ
    ー)
    マージコミットはしない
    移⾏直後に1個⼊れてみたらいくつか懸念点
    があったので当面は使わない 10/14

    View Slide

  12. よかったこと
    git-svn の複雑さに悩まなくてよくなっ

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide