け日記

SIerから転職したWebアプリエンジニアが最近のITのキャッチアップに四苦八苦するブログ

Visual Studio Team ServicesでGitHub Flow

Visual Studio Advent Calendar 2016 - Qiitaの 13日目のエントリです。 (飛び入り参加で失礼します。)

個人のプロジェクト管理にVisual Studio Team Services(VSTS、かつてのVisual Studio Online)を利用しています。

今回はVSTSGitHub Flow開発する方法を紹介したいと思います。 (プロジェクトの始め方は前回の記事を参考にしてみてください。)

f:id:ohke:20161127144307j:plain

バックログの作成

最初にバックログを作成します。

f:id:ohke:20161127150527j:plain

ちなみにこのバックログは、プルリクストのマージと同期していないので、New、Approve、Committed、Doneなどの状態管理は手動で行う必要があります。 (ブラウザからだけではなく、Visual Studioからもできます。)

f:id:ohke:20161127160520j:plain

ブランチの作成

登録したバックログの一つを選んでmasterからブランチを切ります。

バックログの詳細画面を開き、「Create New Branch」を選択します。

f:id:ohke:20161127151734j:plain

バックログ番号(ここでは#34)を入力し、「Create branch」でブランチを作成します。

f:id:ohke:20161127151147j:plain

そうすると、「#34」というブランチが作成されます。

f:id:ohke:20161127151158j:plain

チェックアウト

作成したブランチを、次にVisual Studioでチェックアウトします。

まず、チームエクスプローラから同期を行います。

f:id:ohke:20161127152138j:plain:w300

すると、先ほど作成したリモートブランチ(#34)が現れますので、チェックアウトします。

f:id:ohke:20161127152331j:plain:w300

チェックアウトが完了すると、ローカルブランチも「#34」へ切り替わっていることが確認できます。

f:id:ohke:20161127152529j:plain:w300

プルリクエスト

チェックアウトしたブランチに対してコミットとプッシュを行い、プルリクエストします。

まずはプッシュして、リモートブランチ(#34)へ変更を反映します。 コミットコメントにバックログ番号を先頭に付加しています。

f:id:ohke:20161127154922j:plain:w300

チームエクスプローラから新しいプル要求を行います。

f:id:ohke:20161127153328j:plain:w300

ブラウザでVSTSが立ち上がりますので、プッシュしたコミットが含まれていることを確認し、Reviewerを指定して(ここでは自分自身にします)、「New pull request」でプルリクエストを行います。 ちなみに、コミットコメントのバックログ番号がバックログへのリンクとなっています。

f:id:ohke:20161127153816j:plain

レビュー

レビューアはプルリクエストを確認します。もちろんレビューアもレビューイも自分です。

試しに、ソースコードに対してコメントし、Rejectすることで修正を促します。

f:id:ohke:20161127154616j:plain

f:id:ohke:20161127154743j:plain

f:id:ohke:20161127154731j:plain

修正版をチェックインして再レビューを行い、OKであればApproveとします。

f:id:ohke:20161127155304j:plain

マージ

最後にmasterへマージします。

プルリクエスト画面の「Complete」を押下し、コメント等を確認し、「Complete merge」でマージされます。 デフォルトではマージ後にブランチは削除されます。

f:id:ohke:20161127155452j:plain

これで完了です。 ローカルのmasterブランチのチェックアウトと#34ブランチの削除もしておきましょう。

f:id:ohke:20161127155706j:plain

まとめ

現在のところ、一人での開発でしか使っていませんが、バックログやタスクのアサインもできますので、チーム開発でも十分利用できるかと思います。