1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

fairseqにプルリクを送るまで

Last updated at Posted at 2020-07-19

背景

  1. fairseq1を使っていたらバグを見つけた
  2. なんとか原因を突き止めて修正できた
  3. プルリク送りたい

Contributing guideline

ここに大体書いてありますので、公式の情報を見たい方はこちらからどうぞ。
https://github.com/pytorch/fairseq/blob/master/CONTRIBUTING.md

流れ

  1. Facebook OSS の CLA に登録
  2. issue を作成
  3. fairseq を fork
  4. fork したリポジトリをクローンし、ブランチを作成
  5. コードを修正
  6. コミット&プッシュ
  7. githubからプルリクエストを作成

詳細

1. Facebook OSS の CLA に登録

Facebookのオープンソースコミュニティのコントリビューターライセンス契約。
まずはこれに登録する。
プルリク送ったあとでも問題ないらしい。

リンク: https://code.facebook.com/cla

2. issue を作成

直接プルリクを作成しようとするとこんな感じのデフォルトメッセージが表示される。
image.png

issue で議論しておいたほうがいいことが書いてあるので、issue を立てる。

issue はここから立てられる。
スクリーンショット 2020-07-19 10.45.18.png

New issue をクリックすると、次の4つから選べるので、 Bug Report の Get started をクリック。

  • 🐛 Bug Report
    • Submit a bug report to help us improve
  • 📚 Documentation/Typos
    • Report an issue related to documentation or a typo
  • 🚀 Feature Request
    • Submit a proposal/request for a new feature
  • ❓ Questions/Help
    • If you have questions, please first search existing issues and docs

Bug Report の場合、次の項目がデフォルトで作成されるので、埋めていく。

  • Bug
  • To Reproduce
    • Code sample
  • Expected behavior
  • Environment
  • Additional context

それぞれ、下記のように書いた。

Bug: バグの内容を簡潔に2文程度で
To Reproduce: 実行した内容とコマンド
Expected behavior: 期待した挙動と実際の挙動を、実際の出力を添えつつどこが問題か分かるように
Environment: 必要そうな環境だけ
Additional context: 今回はPRを自分で作成する前提だったので、後でRPを送るよと

3. fairseq を fork

スクリーンショット 2020-07-17 9.45.37.png
ここをクリック。
そうするとリポジトリが自分のアカウントにコピーされて、
https://github.com/<user name>/fairseq
ができる。

リンク: https://github.com/pytorch/fairseq

4. fork したリポジトリをクローンし、ブランチを作成

  1. git clone https://github.com/<user name>/fairseq
  2. git branch issue
  3. git checkout issue

ブランチは作成してもしなくても大丈夫かもしれないが2、ガイドラインには書いてあるのでやっておく。
ブランチ名は何でもいいと思う。

5. コードを修正

バグ部分を修正。
今回は量の少ない修正だったこともあり、コーディング規約などはきちんと調べずに書いた。
スタイルは既存のコードを参考にしつつ。
問題があればレビュー時に修正してもらえるだろうという目算。

6. コミット&プッシュ

コードをgitでコミットしてプッシュ。
コミットメッセージは、PR作成時にデフォルトのタイトルと本文になるっぽいので、ここで修正内容がちゃんと分かるように書いておくと良いかもしれない。

7. githubからプルリクエストを作成

ここから。
スクリーンショット 2020-07-19 10.59.36.png
New pull request をクリックすると、変更がプッシュされている場合は、Create pull request をクリックできるようになるので、master に送りつける。

デフォルトのプルリクのメッセージが表示されるので、編集していく。
image.png

Before submitting の欄は、今回はissueは立てたけどまだ議論されていないので、2番目の Did you read the contributor guideline? にだけチェックを付けておいた。

What does this PR do? の欄で、(issue)となっている箇所を事前に立てた issue の番号に変えると、自動的に関連付けられる。
image.png
こんな感じで、issueの方に勝手にプルリクのリンクが付く。
github便利。

プルリクを送信すると、自動的にテストが行われる。
今回はテストが一部通らなかったが、そもそも master がテストに通っていないので、仕方ない。(commitをさかのぼってみてみたら、CIの種類を追加した当時から一度も通ってないっぽい。)
image.png


以上。

何かあれば通知が来るようになっているので、座して待つのみ。


追記:4日後に無事にマージされた :tada:

  1. Python で書かれた Facebook AI が開発した Sequence-to-Sequence ツールキット。機械翻訳のような系列変換のニューラルモデルの実装が多数含まれている。

  2. 他の人のPRを見たらブランチを作成していない人も見受けられた。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?