最近、PhpStormでGitHubにあるコードを読んでいます。
コードジャンプに高速grepにと非常に助かっていますが、古いバージョンのコードを読もうとしたときに、一瞬だけ迷ったので記録します。
Gitの仕組みをご存知なら何を今更なことですが。
cloneするだけならすでにありましたorzPhpStormでGitHubのリポジトリをプロジェクトにする方法&設定をインポートする方法
概要
PhpStormを使ってGitHubのRepositoryからmasterをcloneし、特定のtagに切り替えます。
前提
(筆者環境)
GitHubのアカウントを持っていて、一度PhpStormにアカウントを設定したことがある。
(PhpStormへの初期設定も簡単だったので、PhpStormにアカウント設定していなくても実行時に簡単に設定できると思います。)
(PhpStormを動かすマシンにgitが必要かは未検証です…すみません)
マスターパスワードを登録済みである。
(基本的に、事前登録・設定しなくても必要な時に初回設定できるはずです。が、初回登録の解説がここではできないということです)
手順
repositoryのclone
プロジェクトを開いていない状態ならこう
既に開いているならこうじゃ
PhpStormを開いて最初の外部通信はマスターパスワードを求められるので入力。
(GitHubやWindowsのログインパスワードとかとは別で、PhpStorm用のパスワードです1)
続いて、GitHubの認証です。(Save passwordしているなら出ないかも)
アカウント未所持でも優しくSign upリンクを貼ってくれる、実家のような安心感。
冗談抜きでPhpStormは世話やきオカン並になんでもしてくれます。
認証が通れば、cloneするRepositoryの選択です。
なんでもいいのですが、Laravelにしてましょう
LaravelのGitHubページを開きます
https://github.com/laravel/laravel/tree/master
赤枠のボタンを押して、clone用URLをクリップボードにコピー
ここで、ブランチやタグを選択しても、このURLは代わりません。(いつもmasterがcloneされる)ひっかかりポイントでした。
PhpStormにURLを貼り付けると、Directoryも設定してくれます。
現状不具合は起きてませんが、不安ならTestしましょう。Repositoryへの接続テストです。
Cloneボタンを押すと、cloneが始まって、しばらく待機。
完了したら開くか尋ねられます。
cloneだけしておきたい需要ってあるんでしょうか?
Yesで開きましょう。
既にプロジェクトを開いている場合はプロジェクト切り替えか、新規ウィンドウで開くか聞かれますが、画像は割愛
開いたらインデックスの作成が始まりますので、ちょっと待ちましょう。
tagへの切り替え
インデックスの作成が終わったら、右下に注目。
いつもは文字コードや改行コードがある場所に「Git:master」とあります。
ここからバージョンコントロールします。
branchの場合は既に一覧が表示されているので、それをチェックアウトすればいいです。
tagへの切り替えは「Git:master」をクリックして「Checkout Tag or Revision」
すると名前かハッシュの入力が求められます。
ハッシュなんて難しいので名前にしましょう。
打ち間違えは嫌なので、GitHubから名前をコピーしたいです。
Laravelのページに戻り、表示をmasterからtagに変更します。
ところが、意外と名前をコピーできる場所がHTMLにはない。
(tag名はボタンになっててコピー不可)
ひっかかりポイントその2
なので、GitHubをtagに切り替え、URLの末尾から取得するか
https://github.com/laravel/laravel/tree/v5.1.4
リリースページから文字列をコピーしましょう。
(厳密にはさらにtagボタンをクリックしてそこから取得するんでしょうが、リリースページでも別にいいと思います。GitHubのリリース機能を使う)
tag名が正しければ、PhpStorm上での切り替えは完了です。
PhpStorm上でもtag情報は取れると思いますが、できるだけ難しそうな機能は使わず、簡単にということで、ブラウザを使ったtag切り替えの一例でした。
追記 ハッシュの取得方法
tag名はすぐに取れませんが、ハッシュはすぐにとれました。
クリップボードへのコピーボタンがあるので打ち間違えもコピーミスもないはずです。
ハッシュに拒絶感がなければこれでいいと思います。
-
自分は当時、外部のDB参照時に登録が求められて、よくわからなかったのでDBのパスワードにしちゃいました。 ↩