Rabbit Slide Show

Ruby svn to git

2019-05-11

Description

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

Text

Page: 1

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

Page: 2

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

Page: 3

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

Page: 4

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

Page: 5

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

Page: 6

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

Page: 7

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

Page: 8

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

Page: 9

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

Page: 10

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

Page: 11

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

Page: 12

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

Page: 13

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

Page: 14

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

Page: 15

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

Other slides