# Ruby Git Migration FAQ # THIS IS NOW FOR COMMITTERS 複数の回答があるものは議論の余地があるものです。そのような点は今後何かしら問い合わせが来るでしょうので、一度空気感合わせて、問い合わせがあったときに「とりあえず現状移行でばたばたしててご迷惑おかけしてますがこんな感じでやってるんです。ご意見ありがとうございます今後改善します」的な感じにしてやっていきましょう。 ## どこから何をcloneしてくればいいのかわからない `git clone git@git.ruby-lang.org:ruby.git` リポジトリへのアクセスは、コミッタであれば提出しているはずのssh鍵を使って行われます 以下はもう少し凝った設定をしたい人向け。 * pushのみgit.r-l.oを使い、pullなどはGitHubから行うようにする * trunkブランチの別名としてmasterブランチを用意する * これは誤ってmasterブランチをpushしてしまうことがあるようなので要注意。 * サーバ側での対応が検討中→[https://bugs.ruby-lang.org/issues/15843](https://bugs.ruby-lang.org/issues/15843) * logコマンドなどでruby-trunk-changesが表示されるようにする ```bash git clone https://github.com/ruby/ruby.git cd ruby git remote set-url --push origin git@git.ruby-lang.org:ruby.git # For those who want to use "master" branch git symbolic-ref refs/remotes/origin/master refs/remotes/origin/trunk # For those who want to show ruby-trunk-changes git remote add ruby-trunk-changes https://github.com/nagachika/ruby.git git config remote.ruby-trunk-changes.fetch '+refs/notes/commits:refs/notes/commits' ``` ## タグが新しくならない `git fetch --tags` ## マージボタン押していい? ~~ダメです~~ 押して良くなりました ## GitHubにpushしていい? ダメです。事故を防止するために github の url を origin の push に設定するのはやめましょう。 一応、GitHub の ruby/ruby リポジトリの write 権限を持つ人(adminとか)以外は push できないようになってます。 ## cgitにpushしていい? trunkだけOK。 それ以外へのブランチの作成、topic branchの作成、タグの作成は禁止です。 ## ruby_2_6 にコミットしていい? ダメです。 git云々以前に、従来から安定版ブランチはそのブランチのメンテナ以外はコミット禁止です。 変更を加えて欲しい場合はbackportを依頼してください ## ruby_2_6 ブランチも cgit が canonical なの? ruby_2_6 以下のバージョンのブランチは svn が canonical です。cgit, github は引き続きミラーです。 ## マージコミットしていい? ダメです。現在はフックで禁止されています。 * マージコミットがあると、新たに入ってきたコミットの特定が難しくなるので、「git log が読みにくい」「rubyfarm-bisect などで対応が必要」などが問題になっています。 ## user.nameやuser.emailに制限はある? ssh key に対応する user.email でないとコミットできません。対応は↓のフックスクリプトの冒頭に対応表が書いてあります。 https://github.com/ruby/ruby-commit-hook/blob/master/bin/check-email.rb このスクリプトにまだ対応が書かれていない人は、2019 年中は自由な user.email でコミットできます。2020 年からは、対応表のとおりでないとコミットできなくなる予定です。 コミット(git push)されるたびに git サーバで ssh key と user.email の対応を記録しています。不定期にこれを check-email.rb の対応表に反映していく予定です。 ## コミットに署名はすべき? したい人はしてください。必須ではないです ## GitHub の PRをとりこんでもいい? ### そもそもどうやってやればいいの? ~~まず、繰り返しますが**マージボタンは押してはいけません**。~~ マージボタンを押してください ### Q: conflictなどしてマージできない * A: rebaseするように作者に言いましょう * Q: 言ったけどしばらく(どれくらい?)返事がない * A1: 直してマージ * A2: そのままマージして、直後のコミットで修正