Azure DevOps (TFS/VSTS)とGitLabの比較 | GitLab.JP

このページでは、Azure DevOps (TFS/VSTS)とGitLabを比較しています。それぞれの強みや不足部分を確認して、判断材料にしてください。

On this page

Overview

Summary

On September 10, 2018 Microsoft renamed VSTS to Azure DevOps and by Q1 2019 will rename TFS to Azure DevOps Server, and upgrade both with the same new user interface.

Azure DevOps (VSTS) is a hosted cloud offering, and Azure DevOps Server (TFS), is an on-premises version. Both offer functionality that cover multiple stages of the DevOps lifecycle including planning tools, source code management (SCM), and CI/CD. However, first development focus will be to Azure DevOps (SaaS). Their project manager shared that they are releasing on a 3-4 week pace. This seems evident based on their published roadmap. The same project manager also shared that Azure DevOps Server (TFS) will be 3-4 months behind on adopting new features (also evident by their published roadmap). They are both from the same code base.

As part of their SCM functionality, both platforms offer two methods of version control.

  1. Git (distributed) - each developer has a copy on their dev machine of the source repository including all branch and history information.

  2. Team Foundation Version Control (TFVC), a centralized, client-server system - developers have only one version of each file on their dev machines. Historical data is maintained only on the server.

Microsoft recommends customers use Git for version control unless there is a specific need for centralized version control features. https://docs.microsoft.com/en-us/vsts/tfvc/comparison-git-tfvc

This is noteworthy given that in June of 2018 Microsoft purchased GitHub, the Internets largest online code repository. This deal closed Oct 26th, 2018.

Breakdown

Because the Azure DevOps suite is so wide, similar to GitLab, a breakdown can be helpful in understanding what we're dealing with. Go to this breakdown page for more details.

Additionally, the competitive landscape section of the Continuous Integration category page contains a detailed feature-by-feature breakdown of how we compare to GitHub and Azure DevOps for CI/CD.

Resources

Comments/Anecdotes

Pricing

Azure DevOps

VSTS

VSTS Pricing

Visual Studio ‘Professional Version’ is the most comparable to GitLab since Visual Studio ‘Enterprise Version’ includes extras outside the scope of DevOps (such as MS Office, etc).

Visual Studio Professional can be purchased under a ‘standard’ or ‘cloud’ model.

Under their ‘modern purchasing model’, the monthly cost for Visual Studio Professional (which includes TFS and CAL license) is $45 / mo ($540 / yr).  However, extensions to TFS such as Test Manager ($52/mo), Package Management ($15/mo), and Private Pipelines ($15/mo) require an additional purchase.

TFS

TFS Pricing

A TFS license can be purchased as standalone product, but a TFS license (and CAL license) is also included when you buy a Visual Studio license / subscription.

MS pushes Visual Studio subscriptions and refers customers who are only interested in a standalone TFS with a ‘classic purchasing’ model to license from a reseller.

Excluding CapEx and Windows operating system license, a standalone TFS license through a reseller in classic purchasing model is approximately $225 per year per instance. The approximate Client Access License is approximately $320 per year.

Comparison

FEATURES

コミットグラフとレポートツール

GitLabは共同作業に役立つ、コミットグラフとレポートツールを提供します。

コミットグラフの詳細

包括的なインポート機能

GitLab は、GitHub や他の VCS よりも多くのソース (GitHub, Bitbucket, Google Code, FogBugz, Gitea, 任意の git URL) からプロジェクトと課題をインポートできます。また、SVNからGitへ移行するための包括的なガイドとドキュメントも用意されています。

GitLabの利用開始をより簡単に

議論をロック

不正使用、スパム、非生産的な議論を防止するため、管理者以上の権限を持つユーザーは議論の継続をロックすることができます。

議論をロック

カスタム通知

課題やマージリクエストに変更があると、メールやSlackやTodoで通知できます。

カスタム通知の詳細

リンクホバーに関するリッチオブジェクトの概要

GitLab のユーザー、課題、マージリクエスト、その他のオブジェクトへのリンクにカーソルを合わせると、豊富な情報量の概要を表示されます。

この機能の実装に関するエピックを表示

Wiki によるプロジェクトのドキュメント

それぞれのプロジェクトのドキュメントを管理するためにWikiが使用できます。。すべてのWikiは独立したGitリポジトリとして利用できます

GitLabのWikiの詳細

画像に関する議論

コミット画面やマージリクエストの差分画面で、画像の特定の位置を指定して、画像に関する議論をコメントできます。1つの画像に対して複数の議論を作成できます。

画像に関する議論

マージリクエストのコミットに関する議論

マージリクエストのコミットに対してコメントをすることができます。

マージリクエストのコミットに関する議論

メールからマージリクエストを作成

マージリクエストのタイトル、説明、ソースのブランチ名を記載したメールを送信してマージリクエストを作成できます。あるいは、最初にブランチをプッシュせずにパッチファイルを用いてマージリクエストを作成します。

メールからマージリクエストを作成

初回貢献者バッジ

プロジェクトに初めて貢献する貢献者をハイライト表示します。

Review Appsで変更をプレビュー

GitLab CI/CDを利用して、ブランチごとに新しい環境を作成することができ、開発プロセスを高速化できます。 自分のブランチをプレビューできるマージリクエスト用の動的な環境を起動できます。Review Apps support both static and dynamic URLs.

Review Appsの詳細

Multiple approvers in code review

In GitLab, to ensure strict code review, you can require a minimum number of users to approve of a merge request before it is able to be merged. 一度承認した後で問題に気がついた場合は、承認を取り消すこともできます。

承認機能のドキュメント

コードレビューの承認ルール

Make sure the right people review merge requests with approval rules by specifying lists of eligible approvers, the minimum number of approvals for each, and which target branches they protect. This makes it easy to request review from different teams like Engineering, UX and Product.

承認機能のドキュメント

他のサービスから簡単に移行

以前に使用していたサービスから、すべてのリポジトリ、課題、マージリクエストのデータをGitLabへ簡単に移行できます。

プロジェクトをGitLabに移行する方法の詳細

曖昧ファイル検索でファイルを探す

GitLabは少ないキー入力でリポジトリ内のファイルを探す方法を提供します。

ファイル検索のドキュメントを表示

fast-forwardマージ、およびrebaseオプション

マージコミットを作成せず、すべてのマージをfast-forwardとするように、プロジェクトレベルで設定できます。fast-forwardマージができない場合は、rebase後にマージするオプションを選択できます。

マージ前rebaseの詳細

squashしてマージ

複数のコミットを1つにまとめてからマージすることで、メインブランチの履歴をシンプルに保つことができます。

squashしてマージの詳細

GitLab.comからインポート

GitLab.comからプライベートインスタンスにプロジェクトをインポートできます。

GitLab.comからプロジェクトをインポートの詳細

プロジェクトのサイズをグローバル、グループ、プロジェクトレベルで制限

ディスク使用量を適切に制御することができます。

プロジェクトサイズ制限の詳細

マージの承認

GitLab Enterprize Editionではマージリクエストをマージするのに、複数の承認を必須とすることができます。マージに必要な承認の数や承認可能なユーザーを設定することは、コード品質の改善につながります。

マージリクエストの承認の詳細

マージリクエスト

マージリクエストを作成してチームメンバーに@メンションすると、変更をレビューしてから安全にマージが行えます。

マージリクエストの詳細

マージの衝突を解決

マージの衝突をGitLabのUIでプレビューして、どちらのバージョンを使用するのか選択できます。

マージ衝突解決UIの詳細

未署名コミットを拒否

GitLab Enterprise Edition Premiumでは未署名コミットのプッシュを拒否することで、GPG署名コミットを強制することができます。

強制プッシュルールを表示

コミッターの検証

コミッターとプッシュの実行者が同一人物であることを検証できます。

GitLabで開発中です。詳細な情報はこのリンク先を参照ください。

Gitでディスク使用量を削減

一般的に、Gitリポジトリのディスク使用量は、類似のSVNリポジトリのディスク使用量よりも少なくて済みます。

GitLabでのGitの利用について確認

ファイルのロック

複数人で同じファイルを使って作業をすることにはリスクが伴います。バイナリファイルで発生した衝突の解決には、 多大な労力が必要となります。 GitLab Enterprise Premiumでは、特定のファイルやディレクトリ全体をロックすることで、 自分以外がバイナリファイルを編集することを防止することができ、 面倒なバイナリファイルの衝突を回避することができます。

ファイルのロックの詳細

パイプラインの成功時にマージ

レビューが済んでマージできる状態なのに、CI/CDのジョブが完了するまで待つ必要がある場合は、パイプラインが成功したら自動的にマージするように予約することができます。

パイプラインの成功時にマージの詳細

特定のコミットやマージリクエストをUIから取り消し

ボタンをクリックするだけで、コミットやマージリクエストの取り消しができます。

GitLabのUIからコミットやマージリクエストの取り消す方法の詳細

強力なブランチ機能

A branch in Git contains the entire history that precedes it. また、ブランチを簡単に作成、移動、共有することができます。

ブランチの利用を開始するためのGitのドキュメントを確認

保護ブランチ

保護ブランチに対して、きめ細かいアクセス制御ができます。

保護ブランチの詳細

Web IDE

Web IDE を使用してローカル開発環境でのコンテキスト切り替えを回避することで、プロジェクトへの貢献を迅速にします。Web IDE はマージリクエストや GitLab CI と統合されているため、Web IDE を離れることなくフィードバックを解決、失敗したテストの修正、変更のプレビューをクライアント側の評価でライブ表示ができます。

Web IDEの詳細

Web IDE の Web ターミナル

Web IDE の Web ターミナルでコードを操作して、API 応答の検査、REPL の実験、コードのコンパイルを実行します。

Web IDE の Web ターミナルの詳細

File Syncing to Web Terminal

Changes made in the Web IDE will now be synced to the Web Terminal. User changes made in the Web IDE can now be tested within the Web Terminal before committing them to the project.

Learn more about File Syncing to Web Terminal

スニペット

引用可能なコード片を、コードスニペットとして保存して共有できます。 また、1行のコードでブログやウェブサイトに埋め込むこともできます。

スニペットの詳細

マージリクエストのバージョン

ブランチにプッシュする毎に、マージリクエストのバージョンが作成されます。マージリクエストのUIで、バージョン間の差分を表示できます。

マージリクエストのバージョンの詳細

インラインコメントと議論の解決

マージリクエストのインラインコメントを使用すると、コードやテキストのレビューがより高速かつ効果的になります。特定のコード行についてコメントを残し、議論を解決します。GitLab では、マージリクエストのインラインコメントは議論として解釈され、変更されてもされなくても任意の行に残すことができます。すべての議論が解決されたときにのみマージリクエストが承認されるようにプロジェクトを構成できます。

議論の解決の詳細

変更のcherry-pick

マージリクエストや特定のコミット内のCherry-Pickボタンをクリックするだけで、あらゆるコミットをcherry-pickできます。

マージリクエストをcherry-pickの詳細

アクティビティストリーム

コミット、マージ、コメントなどプロジェクトのチームメンバーの直近の活動を一覧表示できます。

アクティビティストリートの詳細

GPG署名コミット

署名コミットを使用すると、特定のユーザーによってコミットされたことを証明できます。

GPG署名コミットの詳細

仕掛中のマージリクエスト (WIP)

仕掛中のマージリクエストを間違えてマージすることができないように、マージリクエストを仕掛中(WIP)としてマークできます。これにより、仕掛中の変更であっても安心してレビューの依頼ができます。

WIPマージリクエストの詳細

プッシュとマージを特定のユーザーに制限

保護ブランチの機能を拡張して、保護ブランチにプッシュとマージができるユーザーを選択できます。

保護ブランチの詳細

保護タグ

保護タグに対して、きめ細かいアクセス制御ができます。

保護タグの詳細

統合されたカスタムのプロジェクトテンプレート

新しいプロジェクトを作成するときは、いくつかの実用的なサンプルコードや CI が予め設定されている定義済みのテンプレートからプロジェクトを開始することができます。 さらに、グループを割り当ててカスタムのプロジェクトテンプレートを定義できます。このグループの子プロジェクトは、新しいプロジェクトを作成するときのテンプレートとして使用できます。

プロジェクトテンプレートを表示

脆弱性管理

GitLab's vulnerability management is about ensuring assets and applications are scanned for vulnerabilities. It also includes the processes to record, manage, and mitigate those vulnerabilities. Vulnerability management helps identify meaningful sets of vulnerabilities, in both your assets and application code, that can be mitigated, managed, and acted upon by your whole team—not just the security organization. It also provides a unified interface to the systems teams are already using for managing results from the ~"devops::secure" stage so there is always a single source of truth and single place for managing security results.

Learn more about Vulnerability Management

Gitのプッシュでプロジェクトを作成

新しいプロジェクトを作成したい場所にプッシュすると、自動的に新しいプライベートプロジェクトが作成されます。

プロジェクト作成の詳細

フォークしたリポジトリの Git オブジェクトに関する重複排除

Git オブジェクトをプールすることで、フォークネットワークに関するディスクストレージ要件を削減します。

オブジェクトプールの詳細

Pipeline status visible in pull/merge request

Status and results of pipeline runs are viewable at least in summary from the merge/pull request that they are part of.

S/MIME Signed Commits

署名コミットを使用すると、特定のユーザーによってコミットされたことを証明できます。

Read more about S/MIME signed commits