プロジェクトに適したバージョン コントロールの選択

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

ソフトウェア プロジェクトが大きいか小さいかにかかわらず、できるだけ早くバージョン管理を使用することをお勧めします。 Azure Repos では、GitTeam Foundation バージョン管理 (TFVC) の 2 種類のバージョン コントロールがサポートされています。

適切なバージョン管理システムの選択

Git は、新しいプロジェクトの既定のバージョン管理プロバイダーです。 プロジェクトのバージョン コントロールには Git を使用し、既存の TFVC プロジェクトの Git への移動を開始する必要があります。 TFVC は機能が完成したと考えられています。 Azure DevOps は TFVC との整合性を維持しますが、将来のすべての投資は Git が対象になります。

同じプロジェクトで Git と共に TFVC リポジトリを使用できるため、一元化されたバージョン コントロールが必要な場合は、後で TFVC を簡単に追加できます。 既存のプロジェクトに新しいリポジトリの種類を設定するには、これらの手順を使用します

Git (分散型)

Git は分散型のバージョン管理システムです。 各開発者は、開発マシンにソース リポジトリのコピーを持っています。 開発者は、ネットワーク接続がなくても開発用コンピューター上で変更セットをコミットし、履歴の表示や比較などのバージョン管理操作を実行できます。 分岐は軽量です。 コンテキストを切り替える必要がある場合は、プライベートなローカル分岐を作成できます。 1 つの分岐から別の分岐に簡単に切り替えて、コードベースの複数のバリエーションを使い分けることができます。 分岐は、後でマージすることも、発行することも、破棄することもできます。

注意

Visual Studio、Azure DevOps Services、および Azure DevOps Server の Git は、標準の Git です。 サード パーティの Git サービスと共に Visual Studio を使用できます。また、サード パーティ製 Git クライアントを Azure DevOps Server で使用することもできます。

詳細については、Git と Azure Repos に関する記事を参照してください。

TFVC (一元化)

Team Foundation バージョン管理 (TFVC) は、一元化されたバージョン管理システムです。 通常、チーム メンバーの開発用コンピューターには、各ファイルの 1 つのバージョンだけが存在します。 履歴データはサーバーにのみ保持されます。 分岐はパスに基づき、サーバー上で作成されます。

TFVC には、次の 2 つのワークフロー モデルがあります。

  • サーバー ワークスペース - 変更を行う前に、チーム メンバーは公的にファイルをチェックアウトします。 ほとんどの操作では、開発者がサーバーに接続している必要があります このシステムを利用して、ワークフローを簡単にロックできます。 同じように動作する他のシステムとして、Visual Source Safe、Perforce、および CVS があります。 サーバー ワークスペースを使用すると、ブランチあたり数百万のファイルや大きなバイナリ ファイルを含む非常に大規模なコードベースに拡張できます。

  • ローカル ワークスペース - 各チーム メンバーは、コードベースの最新バージョンのコピーを手元に取得し、必要に応じてオフラインで作業します。 開発者は、自分の変更をチェックインし、必要に応じて競合を解決します。 同じように動作する別のシステムとして、Subversion があります。

詳細については、「Team Foundation バージョン管理とは」を参照してください

TFVC から Git への移行

既存の TFVC リポジトリがある場合は、git-tfs ツールを使用して Git リポジトリに移行できます。 このツールを使用すると、わずか数個のコマンドで TFVC リポジトリを Git リポジトリに移行 できます。

Git と TFVC の機能

次の表に、TFVC と Git でバージョン コントロールの主な機能がサポートされる方法の概要を示します。

機能

TFVC

Git


[変更点]

チーム メンバーは、自分の開発用コンピューターにあるファイルを同時に変更できます。 変更セットを作成したときに、サーバーにアップロード (チェックイン) します。 変更はいつでもアップロードできます。 ただし、競合によって中断される場合があります。

チェックイン後に変更セットのコメントを変更できます。 変更セットを作業項目にリンクし、完了したビルドに関連付けることができます。

チーム メンバーは、自分の開発用コンピューターにあるファイルを同時に変更できます。 チームでの作業とは切り離して、開発用コンピューターでコミットを作成します。 準備ができたら、最新のコミットをプルした後に、自分のものをサーバーにアップロード (プッシュ) する必要があります。 プルするときには、競合によって中断されることがあります。

最新のローカル コミットを修正できます。 以前のコミットを変更することはできません。 コミットを作業項目にリンクし、完了したビルドに関連付けることができます。

コマンド プロンプトから、ローカル コミットの変更や結合を行うことができます。

分岐

機能チーム間やリリース間での変更のリスクを分離するために、パスに基づく分岐が長期的な構成要素として主に使用されます。 チーム メンバーは、通常、各自が作業するブランチごとに別のワークスペースを設定します。

各ブランチ内の変更は互いに独立しているため、1 つのブランチから別のものに切り替える前に、変更をチェックインする必要はありません。 兄弟のブランチ間でマージするには、ベースレス マージが必要です。

分岐構造および変更セットがマージされた位置を視覚的に表示できます。

Team Foundation バージョン管理でのブランチを使用したリスクの分離に関する記事を参照してください。

分岐は軽量で、パスに依存しません。 多くの開発者はコーディングする新機能ごとにブランチを作成し、場合によっては毎日行います。 1 つの分岐から別の分岐に簡単に切り替えて、コードベースの複数のバリエーションを使い分けることができます。 自分の開発用マシンにのみ存在するブランチを作成し、準備が整ったら共有することができます。
分岐を切り替える前には、変更をコミットするか、分岐するか、隠すか、または元に戻す必要があります。 マージは単純で、分岐の基になっているコミットには依存しません。 分岐を比較して、どのコミットがどの分岐に存在するかを確認できます。

Git ブランチを使用したコンテキストの切り替え、作業の中断、およびリスクの分離に関する記事を参照してください。

競合の解決

取得、チェックイン、マージ、またはアンシェルブを行うときに、競合の解決が必要な場合があります。 すべての種類の競合を Visual Studio で解決できます。

プルまたはマージするときに、競合の解決が必要になることがあります。 コンテンツの競合は、Visual Studio またはコマンド プロンプトで解決できます。

File Storage

大きいバイナリ ファイルをチェックインできます。 NuGet を組み合わせて、または代わりとして使用することもできます。

通常のファイルと同様に、小さなバイナリ ファイルをチェックインできます。 大きなバイナリ ファイルを操作する場合は、Git-LFS を使用して Azure Repos に大きなバイナリ ファイルを格納します。

履歴

ファイルの履歴は、開発用クライアント マシンにはレプリケートされないため、サーバーに接続しているときにのみ表示できます。 Visual Studio および Web ポータルで履歴を表示できます。 ファイルに注釈を設定して、コード行の変更者と変更日時を確認できます。

ファイルの履歴は開発用クライアント コンピューターにレプリケートされるため、サーバーに接続していなくても表示できます。 Visual Studio および Web ポータルで履歴を表示できます。 ファイルに注釈を設定して、コード行の変更者と変更日時を確認できます。

ファイルのタグ付け

Visual Studio またはコマンド プロンプトから、1 つ以上のファイルの特定バージョンにラベルを適用できます。 各ファイルには、バージョンごとに別々のラベルを適用できます。

コマンド プロンプトから個々のコミットにタグを適用できます。 Visual Studio の [履歴] ウィンドウでタグを表示できます。

ロールバックの変更

コミットを元に戻すことができます。

スケール

ローカル ワークスペースを使用して、小規模や大規模なプロジェクトで作業できます。 サーバー ワークスペースを使用する大規模な (ブランチあたり数百万のファイルや大規模なバイナリ ファイルを含む) プロジェクトがサポートされています。

すぐに小規模なプロジェクトを開始できます。 大規模なプロジェクトに拡張することもできますが、コードベースのモジュール化を事前に計画しておく必要があります。 1 つのプロジェクトに複数のリポジトリを作成できます。

サーバー

次の表に、バージョン コントロール システムごとにサポートされているサーバーで使用できる機能の概要を示します。

機能

TFVC

Git


サーバー

Azure DevOps Services、Azure DevOps Server

Azure DevOps Services、Azure DevOps Server、サードパーティの Git サービス

警告

チーム メンバーは、サーバーにコミットがプッシュされたときに電子メール通知を受け取ることができます。

監査性

チームはそのすべての作業を一元化されたシステムにチェックインするため、変更セットをチェックインしたユーザーを特定し、比較を使用して変更内容を確認できます。 ファイルを調べて、それに注釈を設定すると、コードのブロックを変更したユーザーと変更時期を明確化できます。

コミットをプッシュしたユーザーを特定できます。 (だれでも、作成者またはコミットの実行者として任意の ID を要求できます。変更が行われた時期と変更された内容は、履歴、比較、注釈を使用して識別できます。

ビルド (TFBuild による自動化)

TFBuild のすべての機能を使用して、プロジェクト コレクション内の必要なコンテンツの任意の組み合わせをビルドできます。

TFBuild のほとんどの機能を使用して、一度に 1 つのプロジェクト、および一度に 1 つ以上のリポジトリをビルドできます。

コード レビュー

devops 開発者の 1 日: 作業の中断、バグの修正、コード レビューの実行に関する記事を参照してください。 より軽いディスカッションの場合は、Web ポータルから変更セットに関するコメントを付けてメールを送信することもできます。

pull request のレビュー」参照してください。 より軽いディスカッションの場合は、Web ポータルからコミットに関するコメントを付けてメールを送信することもできます。

ファイル

各プロジェクトでは、1 つのルート パス (例:$/FabrikamTFVC) の下にすべてのファイルが含まれます。 ファイル レベルでアクセス許可を適用できます。 ファイルをロックできます。

Web ポータルで、または Visual Studio でソース管理エクスプローラーを使用して、ファイルを参照できます。

プロジェクトは 1 つのサーバーのみに存在します。

各プロジェクトには 1 つ以上の Git リポジトリを含めることができ、各 Git リポジトリには 1 つ以上のブランチを含めることができます。 アクセス許可を適用できる最小単位はリポジトリまたは分岐です。 ファイルはロックできません。

Web ポータルでファイルを参照できます。

複数のリモート リポジトリ (たとえば、プロジェクト リポジトリと Azure でホストされている Web サイトの両方) にコミットをプッシュできます。

品質ゲート

継続的インテグレーション (CI) ビルド、ゲート チェックイン ビルド、およびチェックイン ポリシーを使用できます。

CI ビルドとゲート チェックイン ビルドは、ブランチ ポリシーを介して使用できます。

Client

次の表に、選択したバージョン コントロール システムに応じて、クライアントでサポートされている機能の概要を示します。

機能

TFVC

Git


クライアント ソフトウェア

Visual Studio

Visual Studio、Visual Studio Code、Eclipse、その他のサードパーティ製ツール

ファイル

Visual Studio でソース管理エクスプローラーを使用するか、Windows エクスプローラーまたはコマンド プロンプトを使用して、ファイルを参照できます。

Windows エクスプローラーまたはコマンド プロンプトを使用して、ファイルを参照できます。

開発用マシンでファイルを管理する

Visual Studio チーム エクスプローラー[保留中の変更][担当作業] ページ。

[変更] ページ、[コミット] ページ、および [分岐] ページ。

作業を中断する

[担当作業] ページから作業を中断することも、[保留中の変更] ページで変更をシェルブすることもできます。 詳細については、「作業の中断とシェルブセットの管理」を参照してください。

Visual Studio またはコマンド プロンプトからブランチを作成したり、コマンド プロンプトからスタッシュしたりできます。

Visual Studio の互換性

サポートされているバージョンの Visual Studio をすべて使用できます。

サポートされているバージョンの Visual Studio をすべて使用できます。

Web ポータル

コードベース (ブランチを含む) の参照、履歴の表示、変更セットやシェルブセットに対する注釈との設定に加えて、コードベースの選択部分を .zip ファイルとしてアドホック ダウンロードするなどの他のタスクを実行できます。

コードベースの参照、履歴の表示、ブランチの比較、コミットに対する注釈とコメントの設定に加えて、コードベースの選択部分を .zip ファイルとしてアドホック ダウンロードするなどの他のタスクを実行できます。

移行

TFVC から Git に移行する方法については、「TFVC から Git への移行」を参照してください。