Azure DevOps (TFS/VSTS) vs GitLab

GitLab compared to other DevOps tools

このページのコンテンツ

概要

要約

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.

リソース

コメント/逸話

料金

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.

比較

FEATURES

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

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

コミットグラフの詳細

包括的なインポート機能

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

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

議論をロック

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

議論をロック

カスタム通知

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

カスタム通知の詳細

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

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

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

マージリクエストの承認を必須にする

プロジェクトで複数の承認が必要な場合、マージ前にすべてのマージリクエストを承認する必要があります。 必要な承認の数を設定し、特定の承認者のリストを事前に定義することで、マージリクエストの承認を必須にすることができます。 これにより、コードの品質と標準への準拠を保証することができます。

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

コードレビューを複数人で承認

GitLab では厳密なコードレビューを保証するために、マージリクエストをマージする前に、 マージリクエストに対して様々なユーザーからの特定の数の承認 を要求することができます。一度承認した後で問題に気がついた場合は、承認を取り消すこともできます。

承認機能のドキュメント

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

適格な承認者のリスト、それぞれの承認数の最小値、 およびどのターゲットブランチを保護するかを指定して、 承認ルールに沿って適切な人がマージリクエストをレビューするようにします。これにより、 エンジニアリング、UX、プロダクトといった異なるチームにレビューを依頼することが容易になります。

承認機能のドキュメント

任意のマージリクエストの承認

良好な状態のマージリクエストを承認することは、レビュープロセスの重要な部分であり、変更をマージして良いことを明確に伝えることができます。

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

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

Gitオブジェクトをプールすることで、フォークされたGitリポジトリのディスクストレージ使用量を削減します。

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

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

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

GitLabのWikiの詳細

デザイン管理

デザイン管理では、ユーザーはデザインアセット(ワイヤーフレームやモックアップなど)を課題にアップロードし、それらを一箇所に保管しておくことができます。これにより、プロダクトデザイナー、マネージャー、エンジニアがシームレスにデザインのディスカッションを行うことができます。 これらのアセットは簡単にアップロードでき、バージョンごとに保管されます。 また、ディスカッションでフォーカスしたい場所の画像をクリックすると、スレッドを開始することができます。

ドキュメント

GitLab-Figmaプラグイン

Figmaプラグインを使うと、GitLabの課題にFigmaのフレームやコンポーネントをアップロードすることができます。

ドキュメント

画像に関する議論

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

画像に関する議論

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

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

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

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

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

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

初回貢献者バッジ

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

レビューアプリで変更をプレビュー

GitLab CI/CDを利用して、ブランチごとに新しい環境を作成することができ、開発プロセスを高速化できます。自分のブランチをプレビューできるマージリクエスト用の動的な環境を起動できます。レビューアプリは静的・動的なURLの両方をサポートします。

レビューアプリの詳細

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

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

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

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

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

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

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

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

マージ前rebaseの詳細

squashしてマージ

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

squashしてマージの詳細

GitLab.comからインポート

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

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

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

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

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

マージリクエスト

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

マージリクエストの詳細

マージの衝突を解決

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

マージ衝突解決UIの詳細

未署名コミットを拒否

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

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

コミッターの検証

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

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

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

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

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

ファイルのロック

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

ファイルのロックの詳細

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

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

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

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

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

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

強力なブランチ機能

Git のブランチには、それに先行するすべての履歴が含まれています。 また、ブランチを作成、移動しても、即座に簡単に共有することができます。

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

保護ブランチ

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

保護ブランチの詳細

Web IDE

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

Web IDEの詳細

Web IDE でのライブプレビュー

Web IDE のライブ プレビューを使用して、JavaScript と 静的なHTMLファイルのプロジェクトに加えた変更をプレビューできます。

Web IDEの詳細

Web IDE の Web ターミナル

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

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

Web ターミナルへのファイル同期

Web IDE で行った変更が Web ターミナルに同期されるようになりました。Web IDE で行ったユーザーの変更を、 プロジェクトにコミットする前に Web ターミナル内でテストできるようになりました。

Web ターミナルへのファイル同期の詳細

Web IDEの設定

Web IDEは、プロジェクトで作業するすべてのユーザーのコーディングスタイルを標準化するために、プロジェクト内で `.editorconfig` ファイルを使用することをサポートしています。 これにより、プロジェクト全体での一貫性と品質を簡単に維持することができます。

Web IDE の設定についてはこちらをご覧ください。

Web IDEのMarkdownに画像を貼り付ける

Web IDEでMarkdownファイルを編集する際に、コンテンツに画像を貼り付けることができます。これにより、コンテンツ内で画像を自動的にアップロードし、参照できます。

Web IDEでのMarkdown編集の詳細

Real-time feedback for .gitlab-ci.yml in Web IDE

To make it easier to configure your GitLab CI pipeline, the Web IDE now provides real-time linting and completion when editing `.gitlab-ci.yml` files.

Learn more about .gitlab-ci.yml editing feedback in the Web IDE

スニペット

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

スニペットの詳細

バージョン管理されたスニペット

Git ベースのスニペットを使って、オンラインでもローカルでも共同作業を行い、バージョン間の変更を追跡することができます。

スニペットの詳細

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

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

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

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

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

議論の解決の詳細

変更のcherry-pick

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

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

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

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

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

GPG署名コミット

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

GPG署名コミットの詳細

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

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

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

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

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

保護ブランチの詳細

保護タグ

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

保護タグの詳細

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

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

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

脆弱性管理

GitLab の脆弱性管理は、資産やアプリケーションの脆弱性スキャンを確実に行うためのもので 、脆弱性を記録、管理、緩和するプロセスも含まれています。 脆弱性管理は 、セキュリティ組織だけでなく、チーム全体で緩和、管理、対応が可能な、資産とアプリケーションコードの両方に存在する意味のある一連の脆弱性を特定するのに役立ちます。 また、~"devops::secure" ステージからの結果を管理するために、チームがすでに使用しているシステムと統一されたインターフェイスを 提供することで、セキュリティ結果を管理するための単一の信頼できる情報源として使用できます。

脆弱性管理の詳細

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

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

プロジェクト作成の詳細

プル/マージリクエストでパイプラインのステータスを表示

パイプライン実行のステータスと結果をマージ/プルリクエストで表示することができます。

S/MIME Signed Commits

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

Read more about S/MIME signed commits