Eclipse/Che で GitHub プルリク・プラグインを使う手順

# 2020/09/18 追記

Che-Theia のベースである Eclipse/Theia で、[VSCode Autheintication Plugin API への対応がマージ](https://github.com/eclipse-theia/theia/pull/8402) されました。
これらが Che-Theia にもマージされると、下記の手順と異なる、より簡便な方法で使えるようになります。

# 背景

GitHub との連携は、バージョン 7 系の Eclipse/Che における弱点の一つで、同じ Theia ベースのエディタを持つ GitPod にも負け続けていました。
しかし、最近の Eclipse/Che [^1] は、[VSCode Github Pull-request Plugin](https://code.visualstudio.com/docs/editor/github#_pull-requests) に対応しています。

[^1]: 厳密に記すと、対応しているのは、Che に含まれる Che-Theia エディタ。

このことは、[公式ドキュメント](https://www.eclipse.org/che/docs/che-7/end-user-guide/version-control/#managing-pull-requests-using-the-github-pr-plug-in_version-control) にも記載されています。しかし、大抵の開発者はドキュメントを読まないでしょうし、またドキュメントの記載が簡潔すぎて、読んでも上手く動作させられないかもしれません。本家のドキュメントを拡充すべきかもしれませんが、まずは日本語で書き記します。

なお、スクリーンショットは、Eclipse.org の事実上の公式 SaaS である che.openshift.io ではなく、[PizzaFactory/Camino](https://camino.pizzafactory.jp) の [Banco エディション](https://che-banco.camino.pizzafactory.jp/) を用いています。しかし、読者自身が立てた Che インスタンスの場合も含め、差はないはずです。

# 手順

## Workspace にプラグインを追加する

まず、ワークスペースは作成済みとします。

dashoboard の左上にある Workspaces をクリックし、既存のワークスペースの一覧を表示します。

プラグインを加えたいワークスペース名の右側にある歯車アイコンを押して、編集画面を開きます。

画面上側にあるリボンメニューで `plugins` を選択し、GitHub Pull Requests の横にあるボタンをクリックして有効化します。

![Screenshot 2020-09-15 at 09.27.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/883cf876-cdd2-495c-ac6d-45d991853c65.png)

(余談ですが、GitLens など Git を便利に使うためのプラグインも、ここで追加できます。)

編集すると画面右下に `Save` ボタンが出現しますので、もちろん押してください。

## ワークスペースを開く

いつもと同じようにワークスペースを開いてください。プラグインが増えた分だけすこし起動時間が長くなりますが、気になるおどの差はないはずです。

## 表示される通知を無視してトークンを取得する。

起動すると、下記のような通知が表示されるはずです。

![Screenshot 2020-09-15 at 09.10.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/a889a531-333b-18b2-3fd9-de242ac153fb.png)

画面左側にある Octocat アイコンを押しても、情報が取れていないことがわかります。

![Screenshot 2020-09-15 at 09.35.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/e7e82183-830b-749e-e1df-7b39f40c0dcb.png)

しかし、ここで早まって `Sign in` ボタンを押しては **いけません**。 *ここが「罠」です。*

無視して `F1` キーを押し `GitHub authenticate` コマンドを実行します。

![Screenshot 2020-09-15 at 09.36.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/2e05eb30-8ce3-22f0-851a-31b6850d512f.png)

そうすると、別ウインドウがポップアップし、トークンの取得が実行されます。

ダッシュボードが表示されるまでの認証方法によっては、ここで権限の許諾を求められるかもしれません。SSH 公開鍵の操作など、ちょっと怖い権限も含まれています。git プラグインで ssh を使うからという正当な理由はあるのですが、Che インスタンスの運用者を信じられないようであれば、ここで諦めたほうが安全です。

トークンの取得が終わると、リロードを促す通知が表示されます。

![Screenshot 2020-09-15 at 09.09.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/118acd92-3a5d-ecbf-af4f-aeb17d2f1266.png)

`Ctrl-R` など押してリロードしましょう。

リロードが完了すると、プルリクの状態が表示されるはずです。

![Screenshot 2020-09-15 at 09.38.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/a2469a2f-6ebe-06e7-18c1-08fe37028261.png)

## 本稿執筆時点での制約

一連の作業は、ワークスペースを起動するたびに行う必要があるようです。面倒ですが、プルリクが必要なときまで作業を遅延させるなどして、手間を省くことはできるでしょう。

## おまけ: `Sign In` ボタンを押したらどうなるか。

新たにウインドウが開き、認証を求められます。

![Screenshot 2020-09-15 at 09.11.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/2e4bd9a6-ac83-780e-693e-6ea7fc0ab7f0.png)

しかし、`Continue` を押しても、認証は失敗します。

![Screenshot 2020-09-15 at 09.11.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/63c23c3d-41d7-268b-10da-385dc2e3e0a5.png)

ここから手動で GitHub token を取得し、プラグインに与えることでログインできますが、圧倒的に手間なので、お勧めはしません。(手順も記しません)