Pharo のコントリビュータにオレはなる！！

# 概要
[Pharo](https://pharo.org/)がソースコードを[github](https://github.com/)に置くようになって、既に1年が過ぎていた。[レポジトリ](https://github.com/pharo-project/pharo/)の周りの巨大なソースコードはPharoersの第二の故郷となり、人々はそこでコミットを産み、プルリクし、そしてマージしていった。
さあ、君もプルリクを送って [Pharo コントリビュータ](https://github.com/pharo-project/pharo/graphs/contributors) になろう！

# はじめに
Pharoの更新の大雑把な概要は以下の手順になっています。

1. 問題点を発見したら、~~[fogbugz](http://bugs.pharo.org/)~~[issue tracker](https://github.com/pharo-project/pharo/issues)に登録する。
2. ~~fogbuz~~issue tracker のイシュー番号でブランチを切って、修正し、プルリクを送る。
3. Pharoのコミッターがプルリクを確認しマージする。

本エントリでは、2.の部分について説明します。

# 準備
ブランチを切り、修正し、コミットし、プルリクを送る作業は全てPharo上で行うことができます。Pharo上でのgithubからレポジトリをクローンし、コミットし、プルリクを作成する作業は[Iceberg](https://github.com/guillep/iceberg/)というツールを使って行います。まずは、pharo-projectのpharoレポジトリをフォークします。そして、最新のPharoイメージをダウンロードし、レポジトリをクローンします。

まず最初に、pharoレポジトリをフォークします。ウェブブラウザで[github上のpharo-project/pharoレポジトリ](https://github.com/pharo-project/pharo/)を開いて、ログインして、右上の「Fork」ボタンを押しましょう。

次に、最新のイメージを入手します。PharoLauncherを使うとイメージの管理を含め簡単にできます。[PharoLauncherで日本語を使えるようにする3つの方法](https://qiita.com/tomooda/items/fa60135868df43e7ba78)を参考に、PharoLauncherをダウンロードし、起動し、Pharo 7.0の64ビットの最新イメージをダウンロードしてください。

IcebergはToolsメニューから起動することができます。
![World menu>>tools>>Iceberg](https://qiita-image-store.s3.amazonaws.com/0/59918/766dcc01-53a7-5fe0-340a-f5f1c2b53439.png)

Icebergを起動すると、icebergとpharoのレポジトリが「local repository missing」と表示されています。これは、レポジトリと連携できていない状態になっていることを示しています。コンテキストメニューの 「Repair repository」で連携させます。

![repair.png](https://qiita-image-store.s3.amazonaws.com/0/59918/0ad6b49b-e5cb-17ab-e73f-7829063b7789.png)

まだローカルにcloneしていないので、「Clone again this repository」を選択します。

![repair-clone.png](https://qiita-image-store.s3.amazonaws.com/0/59918/70956295-903d-a4ca-0095-cbabc28d47a8.png)

「Clone from github.com」を選択し、Owner nameとして自分のgithubアカウント名を入力し、Project nameとして「pharo」と入力して、Protocolとして「HTTPS」を選んでください。

![repair-clone-github.png](https://qiita-image-store.s3.amazonaws.com/0/59918/a0843da3-9e60-4290-f452-ecdaef9c92d7.png)

OKボタンを押すと、しばらく時間がかかりますが、github上の自分のpharoレポジトリからローカルレポジトリをcloneします。

# イシュー用のブランチを切る

いよいよ本題です。プルリクを作るために作業用のブランチを作成します。Icebergでpharoレポジトリを選択して、コンテキストメニューから「Pharo」の「Create new branch for issue...」を選択します。

![branch.png](https://qiita-image-store.s3.amazonaws.com/0/59918/25047e26-d8f7-d5e9-dcff-064a394a4b27.png)

~~fogbugz の~~イシュー番号を入力すると、イシュータイトルを自動的に読み込んでくれます。

![branch-create.png](https://qiita-image-store.s3.amazonaws.com/0/59918/f9d87013-bfe8-7c70-f724-dfa7c2c60a69.png)

OKボタンを押すと、作業用ブランチが「イシュー番号-イシュータイトル」というブランチ名で作成されます。

# 修正する

がんばれ。

# コミットしてプルリクを作成する

イシューで報告された問題が解決されたら、コミットしてプルリクを作成します。Icebergでpharoレポジトリを選択してコンテキストメニューで「commit」を選択して、修正されたコードをコミットします。

![commit](https://qiita-image-store.s3.amazonaws.com/0/59918/de2e3f8b-89f8-1ac7-9d79-39e9996e3b9e.png)

コードの差分などを確認して、コミットコメントを記入し、OKボタンを押します。

再びIceberg上でpharoレポジトリを選択し、コンテキストメニューから「Github」の「Create Pull Request...」を選択します。

<img width="622" alt="スクリーンショット 2018-12-15 17.29.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/59918/f7af45fd-877a-e8ae-1510-bff8cbe2d591.png">

これでさきほどのコミットがpharo-projectのpharoレポジトリにプルリクとして送られます。

# マージされるのを見る

コミッターさんがあれこれ質問したりすることがあるので、ちゃんと対応しましょう。納得してもらえたら、pharoレポジトリにマージされます。

# おわりに

文章にするとメンドくさそうに見えますが、やってみると思ったより簡単です。さあ、あなたもPharoのコントリビュータになろう！

# 追記
Pharo 7 からイシュートラッカーが fogbuzz から github(https://github.com/pharo-project/pharo/issues )に変更されました。
また、[イシュー報告](http://pharo.org/contribute-report-bug)や[プルリクエスト送信](https://github.com/pharo-project/pharo/wiki/Contribute-a-fix-to-Pharo)の how to が更新されているので、参考にしてください。