次は作成したブランチを編集してみよう。新しいブランチのソース編集を行う場合、ソース管理エクスプローラーで対象となるブランチのフォルダーを右クリックして、コンテキストメニューから[最新のソースコードをダウンロード]を実行する。
ブランチしたソースコードはクライアントの作業フォルダーにダウンロードされるので、そのソリューションをオープンして必要な変更を行う(今回は上述したNuGetパッケージの更新を行ったものとする)。なお、ブランチ作成後は作業フォルダーが変更されるだけで、通常のプログラム作成と異なるところはない。
VS Onlineで自動ビルドを構成していたソリューションをブランチした場合、自動ビルドは複製されない。VSの標準機能およびVS OnlineのWebポータルではビルド定義を複製できないが、無償の拡張機能であるCommunity TFS Build Manager VS2013を使用すれば既存のビルド定義を複製できる。
複製したビルド定義の対象ソリューションのみ変更すれば比較的少ない手間でビルド定義を作成できる。また、この拡張機能は他にも便利な機能があるので、自動ビルドを設計するような人はインストールしておくことをお勧めする。
上述したようにNuGetパッケージを更新すると、派生元との差分ができているはずだ。差分をマージするまでの間に派生元のブランチが全く変更されていなければ何の問題もないが、実際はブランチでの作業中に、派生元でもバグ修正などの更新が行われることが普通だ。
大元のブランチには、Featureブランチ以外にもDevelopブランチやHotfixブランチから修正されたコードがマージされている可能性がある。TFVCではこういったブランチ/マージの状況はソース管理エクスプローラーで可視化できる。
ソース管理エクスプローラーでブランチを右クリックしてコンテキストメニューの[履歴の表示]を選択するか、ツールバーの[履歴]ボタンをクリックすると、選択したブランチのチェックイン履歴が表示される。
調べるチェックインを選択して、ツールバーあるいはコンテキストメニューから[変更セットのトラッキング]を実行すると、変更セット(チェックインで登録されたファイル群を「変更セット」という)を視覚化したものが表示される。
対象のソリューションを選択して、[視覚化]ボタンをクリックすると、ブランチの状態をグラフ化したものが表示される。
ブランチの編集を行ったので、派生元にマージしてみよう。すぐにマージを実行してもいいが、まずは比較を行い、予定外の編集が行われていないか確認しておこう。
マージを行うときや、差分ブランチ派生元のフォルダーと比較を行い、フォルダーとソース管理エクスプローラーで、分岐元のフォルダーと比較を行ってみよう。ソース管理エクスプローラーで比較元となるブランチを選択して、コンテキストメニューの[比較]かツールバーの[フォルダーの比較]を選択する。すると、以下のような画面が表示される。
ソース管理エクスプローラーでの比較ではローカルに存在するコードとサーバー上のコードの差分比較を行うことが多いが、サーバーにチェックインされているソース同士の比較も可能だ。参照ボタンの右隣にある[▼]ドロップダウンをクリックすればサーバーパスとローカルパスを切り替えられる。
比較を行うと、以下のような結果が表示される。
テストが終了して、問題ないことが分かれば派生元のブランチにマージしよう。ソース管理エクスプローラーからマージしたいブランチを選択して、コンテキストメニューの[分岐とマージ]-[マージ]かツールバーの[マージ]ボタンをクリックする。すると、以下のようなダイアログが表示される。
マージのソースとターゲットを選択後、[次へ]ボタンをクリックすると、マージする対象の変更セット(チェックイン単位をまとめて「変更セット」と呼ぶ)を検索する。通常は最新バージョンを選択すればよい。
マージが1回で成功した場合は問題ないが、同じファイルの同じ場所を異なるメンバーが別々に編集したということは往々にして発生する。このようなときはマージ時に衝突が検出されるので、人間の手で解決する必要がある(以下の画面)。
マージ時の競合の解決
(1)競合を自動解決する。
(2)全ての競合を取得する。
(3)最新の情報に更新する。
(4)履歴を表示する。
(5)比較を実行する。
(6)コメントを追加する。
(7)競合したファイルの一覧が表示される。
(8)マージツールを使用して、マージを実行する。
(9)ターゲット側(マージされる側)のファイルを維持する。
(10)ソース側(マージする側)のファイルを維持する。
(11)競合の詳細内容が表示される。
衝突した場合はその修正を行った人が行ったチェックインに関連付けられている作業項目の内容を確認すると、解決のヒントになる場合がある。
マージ時の衝突はしばしば発生するため、チェックインには可能な限り作業項目を関連付けておくことを推奨する。VS Onlineのチェックインポリシーを設定することにより、チェックイン時に作業項目の関連付けを必須にできるので、活用してほしい。
マージ作業が衝突した場合にマージをどう実行するかには次の三つの方法がある。
ターゲット側とソース側のどちらかのソースを採用する場合はそのまま選択すれば、それが反映されるが、マージツールを使えば、双方から反映させることが可能だ。マージツールで競合を比較している例を以下に示す。
マージ処理での比較
(1)現在の設定でマージを実行する。
(2)前の相違点に移動する。
(3)先頭の相違点に移動する。
(4)最後の相違点に移動する。
(5)次の相違点に移動する。
(6)ウィンドウの表示レイアウトを変更する。
(7)マージで反映する部分にチェックを入れる。
(8)マージ結果のプレビューが表示される。
競合が発生したファイルのマージを行う場合、ソースとターゲットどちらを採用するかは通常難しい問題なので、マージツールを使って、確認しながら行うとよいだろう。
最後にTFVCにしかない特徴的な機能である「シェルブ」について見てみよう。
Copyright© Digital Advantage Corp. All Rights Reserved.