kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

GitHub実践入門 (7)

マージされそうになければ自分のリポジトリに自分でマージする?
できるのかな?

やってみる

GitHubのNew Repositoryでリポジトリを作成
名前はself-pr
Initialize this repository with a README にチェックを入れてCreate

Forkできればしたいところなんだけれども
自分のプロジェクトを自分ではForkできないようなので
Forkはしないで進める

ローカルへクローン

$ git clone https://github.com/koba925/self-pr.git
Cloning into 'self-pr'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.

確認

$ cd self-pr
$ ls
README.md

トピックブランチ作成

$ git checkout -b update-readme
Switched to a new branch 'update-readme'

修正して確認

$ vi README.md 
$ git diff
diff --git a/README.md b/README.md
index eaf548b..0a76fd8 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,5 @@
 # self-pr
+
 Practice for Pull Requests
+
+This is a trial repository to learn pull request by merging the pull request by myself.

コミット

$ git commit -am "Updated README"
[update-readme 5d7feda] Updated README
 1 file changed, 3 insertions(+)

リモートブランチの作成

$ git push origin update-readme 
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 348 bytes | 348.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: 
remote: Create a pull request for 'update-readme' on GitHub by visiting:
remote:      https://github.com/koba925/self-pr/pull/new/update-readme
remote: 
To https://github.com/koba925/self-pr.git
 * [new branch]      update-readme -> update-readme
$ git branch -a
  master
* update-readme
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/update-readme

いよいよPull Request

GitHubでupdate-readmeブランチに切り替えてPull Requestタブを表示すると
update-readmeの右に"Compare & pull request"ボタンがある
これをクリックだなきっと
"Open a pull request"画面になるのでちょっとコメントを入れて
"Create pull request"をクリック

ここからPull Requestの取り込み

ここまではForkするかしないかだけでやったことのある手順
Forkしてないことによる差異は、GitHub上で比較してプルリクエストするとき
リポジトリを選択するところがないくらいだったかな?

Pull Requestタブを見るとさっきのプルリクエストが表示されている
"This branch has no conflicts with the base branch"と表示されてて
"Merge pull request"ボタンも表示されてますが押さないで本の流れに沿って進める

リモートリポジトリを取得
手元にすでにリポジトリがあるけど他人のふりをするため別ディレクトリにもう1回クローン

[study]$ git clone https://github.com/koba925/self-pr.git self-pr-maintainer
Cloning into 'self-pr-maintainer'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), done.

送信側のリモートリポジトリはoriginそのものなので
新たにremoteを追加する必要はないけど気分を出すために登録する
よけいなことだったりするかもしれないというそこはかとない不安

$ git remote add koba925 https://github.com/koba925/self-pr.git
$ git remote
koba925
origin

fetch
何もする必要はないはずだけど・・・

[self-pr-maintainer][master=]$ git fetch koba925
From https://github.com/koba925/self-pr
 * [new branch]      master        -> koba925/master
 * [new branch]      update-readme -> koba925/update-readme

何かしてるな
よけいなことだったかなあ

確認用のブランチを作成して変更を取り込み

$ git checkout -b pr1
Switched to a new branch 'pr1'
$ git merge koba925/update-readme 
Merge made by the 'recursive' strategy.
 README.md | 3 +++
 1 file changed, 3 insertions(+)
$ cat README.md 
# self-pr

Practice for Pull Requests

This is a trial repository to learn pull request by merging the pull request by myself.

取り込まれた

コードをレビューしたふりをしてコメントしてみる
プルリクエストの画面でFiles changedのタブを表示するとファイルの変更点が表示されるので
コメントをつけたい行をポイントして"+"アイコンがクリック
これをクリックしてコメントを書いてと
こんな感じだよなきっと

"Add single comment"というボタンと"Start a review"ボタンがあるんだけど
どっち押すんだろうf
"Start a review"が緑なのでこっちがおすすめなのかな
押してみた

Conversationに"Started a review"というログが残って
CommentやApprove、Request changesができるようになっている
たぶん修正したあとApproveしてマージするってことだろう

コメントつけられたほうの立場に戻って最初にcloneしたほうのディレクトリへ

$ cd ../self-pr/
$ vi README.md 
$ git commit -am "Updated as commented"
$ git push origin update-readme 

Pull RequestのConversationに "Updated as commented"というログが追加されている
元の修正は"Outdated"になってる
それなら新しい修正が表示されてもよさそうなものだけどされてない
・・・と思ってあちこち巡ってたら表示されるようになった
修正にコメントつけたくらいしか心当たりないけどそのおかげとはちょっと思えないなあ
若干気持ち悪いけど進む

えーとここからどうするの
Approveするのかな

その前にメンテナの立場で確認しないとか
まずはさっきの修正を取り込まむ

$ cd ../self-pr-maintainer/
$ git fetch
$ git merge origin/update-readme 

確認して納得したことにする
プルリクエスト確認用のブランチは削除

$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
$ git branch -D pr1
Deleted branch pr1 (was ebeff59).

masterにマージしなおす
やることは同じ

$ git fetch koba925
$ git merge koba925/update-readme 

確認

$ git diff origin/master
diff --git a/README.md b/README.md
index eaf548b..893b473 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,5 @@
 # self-pr
+
 Practice for Pull Requests
+
+This is a trial repository to learn managing pull requests by merging the pull request by myself.

ここでpushするとどうなるんだろう
ReviewをApproveしてないけど

[self-pr-maintainer][master>]$ git push
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 460 bytes | 460.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To https://github.com/koba925/self-pr.git
   5a8aba1..6e7eed8  master -> master

あ、closeされちゃった
Ownerが強権発動したみたいになったのかなあ

あとからでもApproveできるかもしれないと思ってポイントしてみたら
Pull request authors can't approve their own pull request
って言われた
ここは強権発動にならないのか
その人は私じゃないんです!とは言えない
まあしかたない

Review機能はもうちょっと調べたほうがいいかもしれない
コードにつけたコメントがPendingになってるのもApproveしてないせいかなあ

まあでもだいたいわかった気はするけど
もうちょっと場数を踏まないとかなあ