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