【Git】GitLabで1人コードレビューごっこしてみた①(GitLab登録からCloneまで)

##コードレビュー

今回の記事で言うところのコードレビューというのは
下記記事に列挙されたフローのことです。

[プルリクエストを使った開発プロセス](https://backlog.com/ja/git-tutorial/pull-request/03/)

`>>>引用`

>①[ 開発者 ] 作業対象のソースを clone または pull します。
②[ 開発者 ] 作業用のブランチを作成します。
③[ 開発者 ] 機能追加、改修といった開発作業を行います。
④[ 開発者 ] 作業が完了したら push します。
⑤[ 開発者 ] プルリクエストを作成します。
⑥[ レビュー・マージ担当者 ] 通知されたプルリクエストから変更を確認しレビューします。
⑦[ レビュー・マージ担当者 ] レビュー結果を判断し、必要ならば開発者にフィードバックします。
⑧[ レビュー・マージ担当者 ] レビューの結果、問題がない場合はマージします。
⑨[ レビュー・マージ担当者 ] レビューの結果、対応自体が不要となるなど、プルリクエスト自体が必要ない場合はクローズします。

引用元のサイトでは`GitHub`と`Backlog`に沿った手順が挙がっていたので
`GitLab`バージョンを試してメモします。


##Git Bash
下記リンクの手順通りです。
だいぶ前に入れたので今も同じ手順かどうかは確認してません。

【参考リンク】：[自分用 Git For Windowsのインストール手順](https://qiita.com/toshi-click/items/dcf3dd48fdc74c91b409)

##GitLab

GitHubとなんかいろいろと違うらしいんですが、ここではあまり関係ないので触れません。
【参考リンク】：[GitLabに触ってみて、GitHubと比較した](https://qiita.com/developer-kikikaikai/items/3fd1277a9a5778000638)

###登録

登録はここから→[GitLab](https://about.gitlab.com/)

右上のRegisterからアカウント作成します。

###プロジェクト作成

`Create a project`して次に進みます。
![CreateAProject.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/65dfa4e8-918d-dfc5-4d87-d4f5ed2c4f93.png)

名前等を入力して`Create project`します。
![GitLabTest.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/f6abfff1-4e9b-212e-44fc-2807f8f60880.png)

これでプロジェクトが完成しました。
プロジェクトと言いながらリポジトリも勝手に作られていました。
GitHubのリポジトリとそっくりですね。

![GitLabP.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/9ebf005f-f770-5bca-41f8-a50026d9c400.png)

##Clone...の前に
GitLab上のリポジトリをローカルにコピーします。
ただその前に、今回はSSH接続の処理をしていきます。

###SSH接続
`https`だとうまくいかなかったのでSSH接続の準備をします。
どちらにせよ、SSH接続は運用上必要だと思うので、設定しておいて損はないと思います。

`GitLab`×`SSH`接続の記事は山のように出てきますが、
OSがWindowsで、加えて細かい設定の方法となると
MacやLinuxに情報が偏っている分、情報を見つけるまでに時間を要しました。

MacやLinuxだと今回とはまた別の方法で行う必要があるのでしょうが、
その時にまた詰まったらメモを残すとして、
今回はWindowsでしんどかったところのメモとします。

####SSH Key作成
PuTTYを使って作成する方法もあるみたいですが、今回はせっかくなので
Git Bash上で作成していきます。

ディレクトリを指定して作成しても良いですが、
`cd`で保存先のディレクトリに移動しておきます。

```:GitBashで実行
cd "クローンを保存したいディレクトリ"
```

移動したディレクトリに鍵を作ります。

```:GitBashで実行
ssh-keygen -t rsa -f お好きなキーの名前
```

---
2019/12/08 追記

下記の方が良いみたいです。
メールアドレスをコメントに追加しないとエラーが出るという記事が多数ありましたので一応メモ。

```:GitBashで実行
ssh-keygen -t rsa -C "your.email@example.com" -b 4096
```
上記のコマンド入力後、思考停止でエンターキーを連打しておけば
`C:\Users\ユーザー名\.ssh`の中に公開鍵と秘密鍵ができあがるはずです。
自分で指定したディレクトリに鍵を作成すると毎回[【リンク先】](https://qiita.com/OKsaiyowa/items/ad6fd969d5de042a4f24#%E7%A7%98%E5%AF%86%E9%8D%B5%E3%81%AE%E8%A8%AD%E5%AE%9A)の手順を
Git Bashを立ち上げる度に行わなくてはいけません。

その毎回行う手順をなくすにもまためんどうな手順があるので
デフォルトの生成先に委ねた方が楽です。

【参考リンク】：[GitLabへ公開鍵を登録したい](https://qiita.com/evansplus/items/08cf1284ed8d5837c9cf)

---

今回、キーの名前は`gitlab_rsa`にしました。
成功した場合、下記のように公開鍵(pubの方)と秘密鍵が作成されます。
![gitlabPubSSH.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/556acd61-d6ec-ed18-7728-7c809fc5b2db.png)


好きなテキストエディタで公開鍵を**全文コピー**します。

####GitLabのSSH Keys

右上の自分のアカウントのアイコンを選択し、
`Settings`に移動します。

左下の`SSH Keys`を選ぶと入力画面が出てくるので、先程コピーした公開鍵を貼り付けます。
![ssh-rsa.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/729ac441-0e47-7e02-017a-c76403e4f28b.png)

これでOK！かと思ったんですが、ダメでした。

####秘密鍵の設定
ここまでの設定でクローンを実行した場合、下記画像のようなエラーが出てしまいます。
![GitLabPermission.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/7fa4c089-7585-f3ee-a6bc-646557e0e6ef.png)

どうやら、秘密鍵を紐づける？設定が必要のようです。
下記コマンドで秘密鍵の設定が可能！みたいなの記事あったので試しましたが
Windowsではダメでした。

```
ssh-add "秘密鍵の保存先のpath"
```

なんのことかよくわかりませんが、
下記を実行しとけば上記のコマンドが通るようになるそうです。

```:GitBashで実行
eval `ssh-agent`
```

【参考リンク】：[ssh-addできなかったときへの対処](https://qiita.com/sshojiro/items/60982f06c1a0ba88c160)

####いよいよClone!

これでようやくCloneできるようになりました。

```:GitBashで実行
git clone クローンするリポジトリのSSH版URL "クローンを保存したいディレクトリ"
```

##まとめ
ようやく準備が整いました。。。

>①[ 開発者 ] 作業対象のソースを clone または pull します。


なんと今回できたのは上記の箇所だけです。
次回は一気に進めたい。。。

書きました～
→[【Git】GitLabで1人コードレビューごっこしてみた②(branch作成からMergeRequestまで)](https://qiita.com/OKsaiyowa/items/5b21074c33528046d08d)

##参考リンク
[GitLabにSSHで接続するまでの手順](https://qiita.com/kyamawaki/items/07fb3332cf3c2f47728a)