Skip to content

Committer How To JA

Jemma Issroff edited this page Jun 8, 2023 · 3 revisions

コミッタ固有の事項について。開発者全般については Developer How To JA を参照のこと 英語版: Committer How To

2022/09/14: 本稿 Committer How To JA は英語版 Committer How To に比べ内容が古くなっています。 新しい情報は Committer How To の方を参照・更新するようにしてください。

committer になるには

  • 標準添付ライブラリやブランチのメンテナを募集しているときに、行動を起こす。
  • 便利なライブラリを公開すると、そのライブラリを標準添付に取り込みたいのでcommitterになってメンテナンスしろと言われる(最近はあまりない)
  • コンスタントにrubyを改良するパッチを投げ続けていると、そのうちcommitter になれ、と言われる。
  • Rubyを抜本的に改善するパッチを投げると、committerになってそれをメンテナンスし続けろ、と言われる。
  • 未知のプラットフォームにrubyを移植して大量のパッチを投げると、committer になれ、と言われる。
  • Linus Torvalds - Part II : Open Voices: The Linux Foundation Podcastから引用(原文):
    • Jim Zemlin: 最後に、Linux の最前線で活動に参加したいと思っている組織や個人に対し何かアドバイスはありますか?
    • Linus Torvalds: 「何から始めたらいい?」という質問をしょっちゅう受けるけど、ぼくのアドバイスはそんな質問するなってことだけだね。 むしろ自分が挑戦したいと思うことがわかりきっているぐらいある特定の分野に興味を持っているのでないなら、挑戦しちゃだめだ。 そいつはさっさとあきらめて、もし「ぼくの方がうまくやれる」と言えるものに出会い、口だけのやつから実行するやつになる気が起きたとき、自分自身で答えが見つかるよ。

committer になることになったら

まず、matz の承認をもらう。

もらったら、次の情報を提供する。ruby-dev:23675

  • (PGPの公開鍵) optional
  • 希望アカウント名
  • SSH2の公開鍵
  • 公開鍵は安全な手段で渡す、HTTPS で取得可能な場所か PGP で暗号化する
  • PGP で暗号化した時は 、PGP公開鍵も渡す
  • @ruby-lang.org宛のメールを転送するメールアドレス

これらの情報を 指定されたアドレス(作業担当者: svn-admin at ruby-lang.org)に送る。

必要なツール

  • そのプラットフォームの開発ツール一式
  • ruby (ビルドに ruby が必要)
  • subversion
  • SSHクライアント
  • GnuPG
  • MUA
  • autoconf (2.60以降)
  • bison
  • sed
  • (gperf)
  • (git)

あると便利なツール

  • slack クライアント: 開発に関する議論を private な slack チャンネルでやってます。
  • merger.rb ブランチメンテナ用

gpg コマンドの使い方

PGP 鍵の生成の仕方

メールの署名の仕方

SSH2公開鍵の作り方

OpenSSHの入っているプラットフォームでは既に~/.ssh/id_rsaがあるかもしれない。その公開鍵id_rsa.pubを使っても良い。

無い場合はssh-keygen(1)で作成する。

$ ssh-keygen -b 2048 -f ruby_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): <パスフレーズ> 何か打ち込む
Enter same passphrase again: <パスフレーズ確認入力>
Your identification has been saved in ruby_key.
Your public key has been saved in ruby_key.pub.
The key fingerprint is:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX your@hostname

秘密鍵ruby_keyと公開鍵ruby_key.pubが生成される。秘密鍵は絶対に他人に見せないで大切に保管しておく。公開鍵を作業担当者に渡す。

committer になったら

  • ソースディレクトリ以外でビルドする
    • /path/to/somewhere/src 内にソース、/path/to/somewhere/obj 内でビルドするなら、objの中で../src/configureとか。
  • ソースディレクトリでもビルドする ./configure
  • ruby-dev, ruby-core, ruby-cvs の購読
  • redmine にユーザ登録
    • アカウントはChangelogに書き込んだりメーリングリストに投稿したりするのに使っているメールアドレスで登録すべき。
    • [project:Ruby]などのプロジェクトの開発者メンバー (Developer) に登録して貰う (コミッタが追加権限を持っている)

さらに余力があれば

  • GPG鍵にちゃんとキーサインをもらう
    • コミッタ同士でもサインすると良い
    • 名刺にfinger printを刷ると良い
  • Coverityにアカウントを作る
    • アカウントの作り方はちょっと面倒なので、slackなどで他のコミッタに聞く。
    • これ持ってる人ほとんどいない気がする
  • github にアカウントがあるなら your-svn-account@b2dd03c8-39d4-4d8f-98ff-823fe69b080e を Email Addresses に追加する。 ( https://github.com/ruby/ruby/commits/trunk などでアイコンが出てくるようになる)
    • 2016年現在では作れない模様。GitHubにコネがある人は要望を出そう!
  • Ruby:を通読していることが期待されていますが、そんなことが不可能なのもみんな知っているので、何か言われたら「それWikiのどこに載ってる?」と言い返しましょう

commit するときには

合意形成

  • 仕様変更・機能追加はメーリングリストで合意ができてから or MatzやMaintainersが認めてから
  • typoを直したぐらいのものは勝手にコミットする
  • コミットしてしまって怒られたら戻せばよいので、加減は怒られながら覚えること。
  • minirubyだけでなくruby自体もビルドできることを確認してからコミットする
    1. make testすると更に良い
    2. make test-allすると更に良い
    3. make test-rubyspecもすると更に良い

連絡

  • 一部のライブラリは外部でメンテナンスされていて、Rubyのリポジトリにあるのはコピーである。
    • これらはコミット後にメールでメンテナに連絡する。
    • 時間的余裕があれば、メンテナとメーリングリストにパッチを送ってメンテナにコミットしてもらうと更に良い。

該当するのは

  • rubygems
  • rdoc
  • openssl
  • json
  • psych

Git

(Caution: still incomplete!)

  • 2019年4月23日から Ruby はバージョン管理に主に git を使う。
    • trunk は git を使う。
    • 古いブランチは引き続き svn を使う。
  • データを入手するのは github から次のコマンドで: git clone https://github.com/ruby/ruby (要確認: 推薦できる便利なオプションは存在するのか?)
  • 重要: github に絶対 push しないこと! コミットのためには git@git.ruby-lang.org:ruby.git にプッシュする。 (要確認: 具体的なコマンドや設定など)

subversion

  • subversion の設定
  • ssh の設定
    • pass phrase を commit 毎に入力したくないとき: ssh-agent
    • .ssh/config
  • branch
    • 開発版は幹 (trunk)
    • 安定版は枝 (例: ruby_1_8, ruby_1_8_6)
  • commit 単位
    • changeset ごと
  • commit log
    • 下記 ChangeLog の記述内容から、変更内容についての部分を抜き出すだけ。(ChangeLogのヘッダは除く、タブインデントも入れない)
      以下のような感じ
      * filename.c (rb_xxx_yyy): short description of this commit.
        Fixes [ruby-dev:XXXX].
        (rb_zzz_aaa): yet another part.
      
      * filename.h (MACRO_NAME): value changed.
    • Redmine に対する指示を入れられる
      • commit log による close。例 fixes [Bug #123]
      • closeでなくともチケットに関係がある場合は参照を含めるべき。例 see [Feature #123]
    • GitHub に対する指示を入れられる
    • Travis CI に対する指示を入れられる
  • mail
  • 最近サーバーが別のサーバーに移設され,サーバーサイドのssh鍵が変わっているためgitがエラーを吐く場合は~/.ssh/known_hostsから一旦レコードを消してみるといいかもしれません.

RDoc

RDocをちゃんと書くと良い。

リファレンスマニュアル

情報の発信

ruby-lang.orgから情報を発信するには。

Subversion

ci.ruby-lang.orgにコミットするとsvn.ruby-lang.orgにも同期される。

管理作業依頼はcvs-admin AT ruby-lang.orgへメール

FTP

carbonのSSHアカウントをもらってSCPでアップロード

WWW

  • redmineから、wwwチームへ依頼する
  • なんかあれば webmaster AT ruby-lang.orgへメール

Redmine

  • Wikiはアカウントがあれば勝手に編集できる。
  • 改善依頼やバグ報告はredmine
  • なんかあれば its-admin AT ruby-lang.orgへメール

サーバの情報

  • lithium, carbon, boron
  • 現在の状態
    • git.ruby-lang.org:
      • git
    • ci.ruby-lang.org:
      • svn (開発用・非公開)
    • svn.ruby-lang.org:
      • Anonymous svn: svn.ruby-lang.org
      • 問題追跡システム: bugs.ruby-lang.org
    • carbon.ruby-lang.org:
      • WWW: www.ruby-lang.org, raa.ruby-lang.org
      • FTP: ftp.ruby-lang.org
      • Anonymous CVS: cvs.ruby-lang.org
      • メーリングリスト
    • boron.rubyist.net:
  • 元素のリスト

その他

  • コンパイルに必要なツール
    • autoconf (2.60以降)
    • bison
    • (ruby) (1.9 はレポジトリからのビルドに ruby が必要)
  • テスト
    • テストの追加 (bootstraptest と test)
    • テストの実行
      • make test
      • make test-all
      • make check は test と test-all を両方やる
  • 旧RubySpecとの連携
    • 2017年5月にtrunkに取り込まれて双方向に手動で同期されているはず
    • make test-rubyspec (または make test-spec) で検証
  • diff の形式
    • unified diff 推奨 (-u)
    • -p 推奨 (git diff でも)
  • メールでの MIME の使い方
    • blade でどう表示されるか
  • GitHub: https://github.com/ruby/ruby
  • cgit: https://git.ruby-lang.org/ruby.git
  • ML : ruby-dev, ruby-list, ruby-core, ruby-talk
  • commit mail (ruby-cvs)
  • version.h
    • 日時はJST
    • その日最初のコミットの後に自動で更新コミットが入る
  • NEWS
    • 大きな変更の時に書く

歴史的な情報

  • MANIFEST

CVS

昔はCVSでした。

Subversion

昔はSVNでした。

version.h 更新機構の履歴

サーバーの履歴

Clone this wiki locally