第3回 GitとTFVCのブランチとマージ:連載:TFVC vs Git(1/6 ページ)
前回までで、TFVCとGitの基本的な操作方法の違いを理解していただけたと思う。今回は第1回でも紹介したリポジトリの考え方や実際のリポジトリの運用、同じでも少し異なる用語の解説を実際の操作で紹介する。
powered by Insider.NET
ワークスペースとリポジトリ
Gitのリポジトリ
Gitでは第1回の記事でサーバーにリポジトリを作ってクライアントにローカルリポジトリを作る方法を紹介したが、実はVisual Studio(以下、VS)に限らず、サーバーがなくてもGitのリポジトリをローカルマシンに作って、1台の環境で閉じたバージョン管理として運用することも可能だ。
ネットワークに接続されていない場合でも、ローカルリポジトリにコミットしておき、再度オンラインになったタイミングで同期(プッシュ/プル)することも可能だ。
ローカルリポジトリのバックアップは自己責任となるが、特定のテキストファイルを一時的に版管理して、最終版まで差分を見たい、というような場合には、ローカル環境で履歴管理ができるため、非常に便利だ。
TFVCのリポジトリ
TFVCはGitと違い、必ずVS Onlineに作成されたチームプロジェクトを使用する必要がある。さらに、ローカルリポジトリというものがないので、チェックイン、チェックアウトなどのソースコードの履歴を更新する場合、必ずVS Onlineに接続されている必要がある。
しかし、チェックインを伴わない編集だけであれば、VSのデフォルトであるローカルワークスペースを使っていれば、一時的にオフラインになった状態で編集していても、オンライン復帰後、同期をとることで再度VS Onlineに対してチェックイン、チェックアウトを行うことが可能だ。
違いを簡単にまとめると以下のようになる。
説明 | |
---|---|
Git | ・ サーバー/ローカルの両者に持てる ・ ネットワークに接続していない状態でもローカルリポジトリを使用してバージョン管理が可能(その後、オンラインになった時点でリモートリポジトリと同期する) |
TFVC | ・ TFVCではワークスペースと呼ばれる ・ サーバー上のチームプロジェクトを使用 ・ ローカルリポジトリは存在しないので、チェックイン/チェックアウトにはネットワーク接続が必要(ローカルワークスペースでコードの編集は可能) |
GitとTFVCにおけるリポジトリの違い |
Gitの用語とVSで使われている用語
GitとTFVCでは同じ言葉が若干異なる意味で使われているので、注意する必要がある。以下にまとめておく。
Git | TFVC | |
---|---|---|
チェックイン | なし | サーバーリポジトリに変更を反映する。コミットと同じ |
チェックアウト | ブランチを切り替える。特に指定がなければHEADになる | サーバーリポジトリにファイルの編集作業開始を通知する |
コミット | 変更をリポジトリに反映する | チェックインと同じ意味で使用される |
シェルブ | なし | 一時的にサーバーに格納する |
GitとTFVCで使われる用語の違い |
「シェルブ」はGitにはない機能だが、日本語では「棚」という意味になる。用途としては、現在編集中のプロジェクトを一時的にVS Onlineに保存して、メンバーにコードレビューを依頼したり、自分の作業を一時的にサーバーへ保存(タスクの中断機能)したりして、他の作業を始めるといった場合に使用する。シェルブに関しては、本稿の最後で紹介する。
コードレビュー機能のライセンス変更
上記で紹介しているコードレビューおよび、タスクの中断機能はVisual Studio 2013ではPremiumエディション以上でしか使用できなかったが、Visual Studio 2015では制限が緩和され、Professional/Communityエディションでも使用可能になった。他にも大幅に緩和されているので、ぜひ使ってみてほしい。
ブランチとマージ
ブランチとマージはTFVCとGitのそれぞれでかなり考え方が異なる。恐らくTFVCやSubversionのような中央型リポジトリに慣れた人がGitを使い始めるときに最初につまずくところだろう。以下では、TFVCとGitのブランチとマージの方法を比較しながら紹介する。
ブランチで行う作業について
以下ではGitとTFVCの両者で、Featureブランチを作成し互換性に問題のある可能性がある更新をしてみる。今回はASP.NETの既定のテンプレートで使用しているjQuery、Bootstrapなどの少し古いパッケージを最新版に更新しても問題ないか確認する。その作業はだいたい以下のようなものだ。
まず、NuGetパッケージを最新版に更新する。本連載では紙面の都合上、全てのパッケージを一気に更新するが、一つずつ更新、確認というステップを踏みながら確認すれば、トラブルが発生したとき、どのパッケージの更新で影響が出たのか切り分けることが可能になる。
今回のような外部パッケージの更新やライブラリの互換性を失うような変更(破壊的変更という)を行うときには、少しずつ変更を行い、チェックインしていくことをお勧めする。
以前のソースに元に戻すときも、細かくチェックインしていれば、互換性がないバージョンアップを行った一つ前に戻せば、互換性に問題のない他の修正もロールバックしてしまうことがなくなり、作業が無駄になることはない。
一般的に大きな変更を一度にチェックインすると、レビュワーの負荷が高くなり、レビューの漏れが起きる可能性がある。パッケージの更新を作業単位としてVS Onlineに登録しておき、パッケージごとにチェックインするようにしよう。一つずつ登録しておくことにより、作業の漏れをなくすこともできる。
それでは、GitとTFVCのブランチとマージについて見ていくことにしよう。まずはGitチームプロジェクトの場合からだ。
Copyright© Digital Advantage Corp. All Rights Reserved.