【新機能】CodeCommit でプルリクエストがサポートされました

【新機能】CodeCommit でプルリクエストがサポートされました

Clock Icon2017.11.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

以下のニュースで紹介されておりますが、Amazon CodeCommit で Pull Requests がサポートされました。 そのため、CodeCommit 上でのコードレビューやディスカッションが出来るようになっております。

CodeCommit を利用するための事前準備については、以下のブログで紹介されておりますので合わせてご参照ください。

やってみた

今回、検証で利用した筆者の環境は以下のとおりです。

$ git --version
git version 2.13.6 (Apple Git-96)
$ sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.12.6
BuildVersion:   16G1036

なお、本記事では既に利用可能な CodeCommit リポジトリが作成されていることを前提としているため予めリポジトリを作成しておいてください。 本記事では、codecommit-test リポジトリが準備済みの状況であり作成済みの README.md をローカルリポジトリから CodeCommit へ追加するところから始めます。

$ git commit -m "First commit."
[master (root-commit) c0c01c2] First commit.
 1 file changed, 3 insertions(+)
 create mode 100644 README.md
$ git push
Counting objects: 3, done.
Writing objects: 100% (3/3), 271 bytes | 90.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/codecommit-test
 * [new branch]      master -> master
$ git branch -a
* master
  remotes/origin/master

マネジメントコンソールから、リポジトリを確認してみます。

AWS-CodeCommit-1-640x416.png

README.md が確認できました。必須ではありませんがマネジメントコンソール上で、新しいブランチを作成してみたいと思います。

AWS-CodeCommit-2-640x147.png

Create branch ボタンをクリックします。

AWS-CodeCommit-3.png

ブランチ名を入力し、ブランチ元を選択の上 Create ボタンをクリックすることで新しいブランチが作成できます。

ブラウザを離れ端末を起動しローカルリポジトリでもブランチを作成します。 また、README.md 更新後 CodeCommit リポジトリに Push します。

$ git checkout -b update
Switched to a new branch 'update'
$ git branch
  master
* update
$ vi README.md 
$ git status
On branch update
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
$ git diff ^HEAD
diff --git a/README.md b/README.md
index b6bf3c9..dd60b3f 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
 ## AWS CodeCommit 

-- is not support PullRequest
+- New! Support Pull Requests.
$ git add .
$ git commit -m "update code commit"
[update 1aacefc] update code commit
 1 file changed, 1 insertion(+), 1 deletion(-)
 $ git push --set-upstream origin update
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 306 bytes | 153.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/codecommit-test
   c0c01c2..1aacefc  update -> update
Branch update set up to track remote branch update from origin.

再度、マネジメントコンソールから確認してみます。

AWS-CodeCommit-4-640x159.png

先ほど、Push したコミットメッセージがブランチのリストから確認出来ました。 Create pull request のリンクからプルリクエストを作成していきます。

AWS-CodeCommit-5-640x381.png

プルリクエストの作成画面です。update ブランチの更新を master ブランチに取り込んでもらうため Title や Description などを記載し、Create ボタンをクリックすることでプルリクエストが作成されます。

AWS-CodeCommit-6-640x311.png

なお、プルリクエスト作成画面より、コードの変更点を確認することができます。

AWS-CodeCommit-7-640x281.png

プルリクエストが作成できました。メニューの Pull requests リンクをクリックし一覧から確認してみます。

AWS-CodeCommit-8-640x167.png

プルリクエストが一覧に表示されています。もう少し詳細を確認するため対象のプルリクエスト(Title)をクリックします。

AWS-CodeCommit-9-640x385.png

Changes タブを確認すると、変更差分を確認することができます。 また、プルリクエストに対して Markdown 形式でコメントすることができるようです。 Split ボタンをクリックしてみます。

AWS-CodeCommit-10-640x380.png

変更差分が左右に分かれて見易くなりました(個人的な感想)。

修正されたコードに問題が無いことを確認し、Merge ボタンをクリックします。

AWS-CodeCommit-11.png

最終確認のウィンドウが表示されるため、再度 Merge ボタンをクリックすることによりプルリクエストがマージされます。 また、Delete pull request branch <ブランチ名> after merge のチェックボックスがチェックされていた場合は、 マージ後に指定のブランチが CodeCommit 上から削除される動作となるようです。

AWS-CodeCommit-12.png

無事、master ブランチに取り込まれたようです。

さいごに

AWS CodeCommit は、AWS アカウントさえ持っていればフルマネージドかつリポジトリ数が無制限の Git リポジトリを 以下の条件で無料で利用できます。(アクティブユーザー数が 5人を超えた場合、ユーザー毎に 1USD/月必要)

  • 毎月 5人のアクティブユーザーまで
  • 50GB のストレージ/月
  • 10,000回の Git リクエスト/月

詳細については、CodeCommit の料金ページを参照ください。

Git のホスティングサービスも多々ありますが、CodeCommit の優位性は 言うまでもなく各 AWS サービスとの親和性だと考えています。 これからは、ソースコードなどをバージョン管理するだけでなくプロジェクトのメンバーと共同で プルリクエストモデルによる開発に利用されてみてはいかがでしょうか。

ではでは

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.