SlideShare a Scribd company logo
1 of 12
Download to read offline
バージョン管理システム
比較資料
2013/12/22
鈴木 聡

2013/12/22   Rev.2
Git, Mercurial, Subversion
利点と欠点

2013/12/22   Rev.2
Git
●

利点
—

—

●

動作速度が最も速いため、大規模 ( 数 100 万行を超
える ) なソースコードを管理するのに向いている
行単位の追跡(検索)機能があり、コードのコピー
を追跡できる

欠点
—

Git 固有の動作に慣れる必要がある
●

—
—

ステージング、ブランチ = ポインタ、等々・・・

GUI の完成度が今一つ
コミット時に変更ファイル全体を記録するため、リ
ポジトリが肥大化しやすい
2013/12/22   Rev.2
Mercurial
●

利点
—

—

動作がシンプルであるため、分散型 VCS 中では最も
学習コストが低い
動作環境を選ばず、完成度の高い GUI が使用できる
●

●

TortoiseHg Workbench

欠点
—

知名度が低く、情報が少ない

—

Git に比べて動作が遅い

2013/12/22   Rev.2
Subversion
●

利点
—

—

●

バイナリファイルを差分で記録するため、リポジト
リの肥大化を抑えられる
ファイルのロック(排他制御)が行える

欠点
—

—

操作の都度、サーバへのアクセスが発生するため、
動作速度が非常に遅い
機能面で現世代の VCS に劣る
●

ローカルコミットが行えない
—

将来的には「 Checkpoints 」という名称で実装予定だが・・・
2013/12/22   Rev.2
比較表
比較項目
動作速度
機能
学習コスト

GUI フロントエンド
ドキュメント管理

Git

Mercurial

Subversion

◎
◎
×
○
△

○
◎
○
◎
△

×
△
◎
△
◎
2013/12/22   Rev.2
まとめ
●

小、中規模のソース管理には Mercurial
—
—

●

数 100 万行の規模でも、開発環境に Windows を使わ
なければ問題なはい

大規模なソース管理には Git
—

●

大きな欠点もなく、導入しやすい

使い勝手はさておき、動作速度が重要な場合

Word/Excel など、自動マージできないドキュメ
ントの管理には Subversion
2013/12/22   Rev.2
Git と Merurial の比較

2013/12/22   Rev.2
リポジトリサイズ比較
●

紅桜 ( サクラエディタの派生版)リポジトリ
—

ファイル数 708 個

—

ソースコード行数 17 万行 ( 有効行は 11 万行 )

—

チェンジセット数 1191 個
Git
リポジトリ サイズ

Mercurial

61.8 MB

9.3 MB

2013/12/22   Rev.2
速度比較
●

紅桜のソースコード (708 ファイル、 17 万行 )
操作

Git

Mercurial

Git に対する
Mercurial 処理時間

status

0.118 秒

0.273 秒

2.3倍

5.631 秒

5.105 秒

0.9倍

status

0.125 秒

0.264 秒

2.1倍

commit

0.247 秒

0.372 秒

1.5倍

(708ファイル追加前)

add + commit
(708ファイル新規追加)
(8ファイル変更)
(8ファイル変更)

2013/12/22   Rev.2
Git
行単位の移動追跡機能
・ Mercurial の annotate 出力
kobake
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv
suzzsegv

0
500
500
500
500
500
500
500
500
500
500
500
500
500
500
500

Sun
Wed
Wed
Wed
Wed
Wed
Wed
Wed
Wed
Wed
Wed
Wed
Wed
Wed
Wed
Wed

Sep
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct
Oct

28
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24

09:39:47
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44

2008
2012
2012
2012
2012
2012
2012
2012
2012
2012
2012
2012
2012
2012
2012
2012

+0000
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900

sakura_core/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:
sakura_core/env/CShareData.cpp:

@brief タイプ別設定の初期化処理

/*!

@date 2005.01.30 genta CShareData::Init() から分離.
*/
void CShareData::InitTypeConfigs(DLLSHAREDATA* pShareData)
{
CType* table[] = {
new CType_Basis(),
// 基本
new CType_Text(),
// テキスト
new CType_Cpp(),
//C/C++
new CType_Java(),
//Java
new CType_Asm(),
// アセンブラ
new CType_Ini(),
// 設定ファイル
};
assert( 1 <= MAX_TYPES );

・ Git の blame 出力
^b8b49f8
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae

sakura_core/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp

(kobake
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki

Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi

2008-09-28
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24

09:39:47
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44

+0000
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900

946)
947)
948)
949)
950)
951)
952)
953)
954)
955)
956)
957)
958)
959)
960)
961)

/*!

@brief タイプ別設定の初期化処理

@date 2005.01.30 genta CShareData::Init() から分離.
*/
void CShareData::InitTypeConfigs(DLLSHAREDATA* pShareData)
{
CType* table[] = {
new CType_Basis(),
// 基本
new CType_Text(),
// テキスト
new CType_Cpp(),
//C/C++
new CType_Java(),
//Java
new CType_Asm(),
// アセンブラ
new CType_Ini(),
// 設定ファイル
};
assert( 1 <= MAX_TYPES );

2013/12/22   Rev.2
Git
行単位の移動追跡機能
・ Git の blame 出力 ( 通常出力 )
^b8b49f8
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae
f1236fae

sakura_core/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp

(kobake
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki
(Suzuki

Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi
Satoshi

2008-09-28
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24
2012-10-24

09:39:47
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44
22:02:44

+0000
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900
+0900

946)
947)
948)
949)
950)
951)
952)
953)
954)
955)
956)
957)
958)
959)
960)
961)

/*!

@brief タイプ別設定の初期化処理

@date 2005.01.30 genta CShareData::Init() から分離.
*/
void CShareData::InitTypeConfigs(DLLSHAREDATA* pShareData)
{
CType* table[] = {
new CType_Basis(),
// 基本
new CType_Text(),
// テキスト
new CType_Cpp(),
//C/C++
new CType_Java(),
//Java
new CType_Asm(),
// アセンブラ
new CType_Ini(),
// 設定ファイル
};
assert( 1 <= MAX_TYPES );

・ Git の blame 出力 (-C オプションをつけた場合 )
^b8b49f8
f1236fae
^b8b49f8
^b8b49f8
^b8b49f8
^b8b49f8
^b8b49f8
^b8b49f8
^b8b49f8
^b8b49f8
^b8b49f8
f1236fae
f1236fae
^b8b49f8
^b8b49f8
ba97624a

sakura_core/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/env/CShareData.cpp
sakura_core/env/CShareData.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp
sakura_core/types/CType.cpp

(kobake
(Suzuki Satoshi
(kobake
(kobake
(kobake
(kobake
(kobake
(kobake
(kobake
(kobake
(kobake
(Suzuki Satoshi
(Suzuki Satoshi
(kobake
(kobake
(moca_skr

2008-09-28
2012-10-24
2008-09-28
2008-09-28
2008-09-28
2008-09-28
2008-09-28
2008-09-28
2008-09-28
2008-09-28
2008-09-28
2012-10-24
2012-10-24
2008-09-28
2008-09-28
2010-07-07

09:39:47
22:02:44
09:39:47
09:39:47
09:39:47
09:39:47
09:39:47
09:39:47
09:39:47
09:39:47
09:39:47
22:02:44
22:02:44
09:39:47
09:39:47
16:50:21

+0000
+0900
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0900
+0900
+0000
+0000
+0000

946)
947)
948)
949)
950)
951)
952)
953)
954)
955)
956)
957)
958)
959)
960)
961)

/*!

@brief タイプ別設定の初期化処理

@date 2005.01.30 genta CShareData::Init() から分離.
*/
void CShareData::InitTypeConfigs(DLLSHAREDATA* pShareData)
{
CType* table[] = {
new CType_Basis(),
// 基本
new CType_Text(),
// テキスト
new CType_Cpp(),
//C/C++
new CType_Java(),
//Java
new CType_Asm(),
// アセンブラ
new CType_Ini(),
// 設定ファイル
};
assert( 1 <= MAX_TYPES );

2013/12/22   Rev.2

More Related Content

What's hot

2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
智啓 出川
 
Tortoise hgのすすめ
Tortoise hgのすすめTortoise hgのすすめ
Tortoise hgのすすめ
suzzsegv
 
Excel でパケット分析 - グラフ化
Excel でパケット分析 - グラフ化Excel でパケット分析 - グラフ化
Excel でパケット分析 - グラフ化
彰 村地
 

What's hot (20)

小さなサービスも契約する時代
小さなサービスも契約する時代小さなサービスも契約する時代
小さなサービスも契約する時代
 
スクレイピングとPython
スクレイピングとPythonスクレイピングとPython
スクレイピングとPython
 
挫折しないRedmine (2022)
 挫折しないRedmine  (2022) 挫折しないRedmine  (2022)
挫折しないRedmine (2022)
 
「伝わるチケット」の書き方
「伝わるチケット」の書き方「伝わるチケット」の書き方
「伝わるチケット」の書き方
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
Tortoise hgのすすめ
Tortoise hgのすすめTortoise hgのすすめ
Tortoise hgのすすめ
 
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアルKiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル
 
LycheeカンバンとRedmine運用の事例紹介
LycheeカンバンとRedmine運用の事例紹介LycheeカンバンとRedmine運用の事例紹介
LycheeカンバンとRedmine運用の事例紹介
 
Excel でパケット分析 - グラフ化
Excel でパケット分析 - グラフ化Excel でパケット分析 - グラフ化
Excel でパケット分析 - グラフ化
 
継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin
 
Vertex AI Pipelinesで BigQuery MLのワークフローを管理 (ETL ~ デプロイまで)
Vertex AI Pipelinesで BigQuery MLのワークフローを管理 (ETL ~ デプロイまで)Vertex AI Pipelinesで BigQuery MLのワークフローを管理 (ETL ~ デプロイまで)
Vertex AI Pipelinesで BigQuery MLのワークフローを管理 (ETL ~ デプロイまで)
 
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 

Viewers also liked

Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
YUKI Kaoru
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフロー
add20
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 
Brussels Spark Meetup Oct 30, 2015: Spark After Dark 1.5:  Real-time, Advanc...
Brussels Spark Meetup Oct 30, 2015:  Spark After Dark 1.5:  Real-time, Advanc...Brussels Spark Meetup Oct 30, 2015:  Spark After Dark 1.5:  Real-time, Advanc...
Brussels Spark Meetup Oct 30, 2015: Spark After Dark 1.5:  Real-time, Advanc...
Chris Fregly
 

Viewers also liked (20)

統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方
 
リソースのバージョン管理/運用の失敗談と改善策について
リソースのバージョン管理/運用の失敗談と改善策についてリソースのバージョン管理/運用の失敗談と改善策について
リソースのバージョン管理/運用の失敗談と改善策について
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
はじめようGit
はじめようGitはじめようGit
はじめようGit
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフロー
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
Brussels Spark Meetup Oct 30, 2015: Spark After Dark 1.5:  Real-time, Advanc...
Brussels Spark Meetup Oct 30, 2015:  Spark After Dark 1.5:  Real-time, Advanc...Brussels Spark Meetup Oct 30, 2015:  Spark After Dark 1.5:  Real-time, Advanc...
Brussels Spark Meetup Oct 30, 2015: Spark After Dark 1.5:  Real-time, Advanc...
 
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
 
シスコシステムズ製品のPuppet 対応 - 吉原大輔、シスコシステムズ合同会社
シスコシステムズ製品のPuppet 対応 - 吉原大輔、シスコシステムズ合同会社シスコシステムズ製品のPuppet 対応 - 吉原大輔、シスコシステムズ合同会社
シスコシステムズ製品のPuppet 対応 - 吉原大輔、シスコシステムズ合同会社
 
【kintone】ノンプログラミングで家計簿アプリをつくろう!
【kintone】ノンプログラミングで家計簿アプリをつくろう!【kintone】ノンプログラミングで家計簿アプリをつくろう!
【kintone】ノンプログラミングで家計簿アプリをつくろう!
 
「オルタンシア・サーガ」開発の裏側
「オルタンシア・サーガ」開発の裏側「オルタンシア・サーガ」開発の裏側
「オルタンシア・サーガ」開発の裏側
 
Oracle R Enterprise の使い方
Oracle R Enterprise の使い方Oracle R Enterprise の使い方
Oracle R Enterprise の使い方
 
アセットビルドパイプラインについて考えてみる
アセットビルドパイプラインについて考えてみるアセットビルドパイプラインについて考えてみる
アセットビルドパイプラインについて考えてみる
 
ショッピングモールと自社サイトの違いを比較表による分析
ショッピングモールと自社サイトの違いを比較表による分析ショッピングモールと自社サイトの違いを比較表による分析
ショッピングモールと自社サイトの違いを比較表による分析
 
Git (実践入門編)
Git (実践入門編)Git (実践入門編)
Git (実践入門編)
 

Similar to バージョン管理システム比較資料

バージョン管理とGit
バージョン管理とGitバージョン管理とGit
バージョン管理とGit
sinsoku listy
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
Koji Shinba
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
賢次 海老原
 

Similar to バージョン管理システム比較資料 (20)

git入門(講義っぽく)
git入門(講義っぽく)git入門(講義っぽく)
git入門(講義っぽく)
 
Git勉強会資料
Git勉強会資料Git勉強会資料
Git勉強会資料
 
バージョン管理とGit
バージョン管理とGitバージョン管理とGit
バージョン管理とGit
 
20101022 構成管理勉強会資料
20101022 構成管理勉強会資料20101022 構成管理勉強会資料
20101022 構成管理勉強会資料
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
dvcs-kyoto
dvcs-kyotodvcs-kyoto
dvcs-kyoto
 
2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山
 
20130608 git-0
20130608 git-020130608 git-0
20130608 git-0
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitFluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
 
Git 初心者講座 by forkwell
Git 初心者講座 by forkwellGit 初心者講座 by forkwell
Git 初心者講座 by forkwell
 
Git地図
Git地図Git地図
Git地図
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
 
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターンGoogle borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターン
 
JiraとConfluenceのTips集
JiraとConfluenceのTips集JiraとConfluenceのTips集
JiraとConfluenceのTips集
 
第1回 松本勉強会 2012 05 11 - 公開版
第1回 松本勉強会 2012 05 11 - 公開版第1回 松本勉強会 2012 05 11 - 公開版
第1回 松本勉強会 2012 05 11 - 公開版
 
Gitの基本コマンド
Gitの基本コマンドGitの基本コマンド
Gitの基本コマンド
 
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
 
Gitごにょごにょ【概要編】
Gitごにょごにょ【概要編】Gitごにょごにょ【概要編】
Gitごにょごにょ【概要編】
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
 

Recently uploaded

Recently uploaded (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

バージョン管理システム比較資料

  • 3. Git ● 利点 — — ● 動作速度が最も速いため、大規模 ( 数 100 万行を超 える ) なソースコードを管理するのに向いている 行単位の追跡(検索)機能があり、コードのコピー を追跡できる 欠点 — Git 固有の動作に慣れる必要がある ● — — ステージング、ブランチ = ポインタ、等々・・・ GUI の完成度が今一つ コミット時に変更ファイル全体を記録するため、リ ポジトリが肥大化しやすい 2013/12/22   Rev.2
  • 4. Mercurial ● 利点 — — 動作がシンプルであるため、分散型 VCS 中では最も 学習コストが低い 動作環境を選ばず、完成度の高い GUI が使用できる ● ● TortoiseHg Workbench 欠点 — 知名度が低く、情報が少ない — Git に比べて動作が遅い 2013/12/22   Rev.2
  • 7. まとめ ● 小、中規模のソース管理には Mercurial — — ● 数 100 万行の規模でも、開発環境に Windows を使わ なければ問題なはい 大規模なソース管理には Git — ● 大きな欠点もなく、導入しやすい 使い勝手はさておき、動作速度が重要な場合 Word/Excel など、自動マージできないドキュメ ントの管理には Subversion 2013/12/22   Rev.2
  • 8. Git と Merurial の比較 2013/12/22   Rev.2
  • 9. リポジトリサイズ比較 ● 紅桜 ( サクラエディタの派生版)リポジトリ — ファイル数 708 個 — ソースコード行数 17 万行 ( 有効行は 11 万行 ) — チェンジセット数 1191 個 Git リポジトリ サイズ Mercurial 61.8 MB 9.3 MB 2013/12/22   Rev.2
  • 10. 速度比較 ● 紅桜のソースコード (708 ファイル、 17 万行 ) 操作 Git Mercurial Git に対する Mercurial 処理時間 status 0.118 秒 0.273 秒 2.3倍 5.631 秒 5.105 秒 0.9倍 status 0.125 秒 0.264 秒 2.1倍 commit 0.247 秒 0.372 秒 1.5倍 (708ファイル追加前) add + commit (708ファイル新規追加) (8ファイル変更) (8ファイル変更) 2013/12/22   Rev.2
  • 11. Git 行単位の移動追跡機能 ・ Mercurial の annotate 出力 kobake suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv suzzsegv 0 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 Sun Wed Wed Wed Wed Wed Wed Wed Wed Wed Wed Wed Wed Wed Wed Wed Sep Oct Oct Oct Oct Oct Oct Oct Oct Oct Oct Oct Oct Oct Oct Oct 28 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 09:39:47 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 2008 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 +0000 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 sakura_core/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: sakura_core/env/CShareData.cpp: @brief タイプ別設定の初期化処理 /*! @date 2005.01.30 genta CShareData::Init() から分離. */ void CShareData::InitTypeConfigs(DLLSHAREDATA* pShareData) { CType* table[] = { new CType_Basis(), // 基本 new CType_Text(), // テキスト new CType_Cpp(), //C/C++ new CType_Java(), //Java new CType_Asm(), // アセンブラ new CType_Ini(), // 設定ファイル }; assert( 1 <= MAX_TYPES ); ・ Git の blame 出力 ^b8b49f8 f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae sakura_core/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp (kobake (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi 2008-09-28 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 09:39:47 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 +0000 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 946) 947) 948) 949) 950) 951) 952) 953) 954) 955) 956) 957) 958) 959) 960) 961) /*! @brief タイプ別設定の初期化処理 @date 2005.01.30 genta CShareData::Init() から分離. */ void CShareData::InitTypeConfigs(DLLSHAREDATA* pShareData) { CType* table[] = { new CType_Basis(), // 基本 new CType_Text(), // テキスト new CType_Cpp(), //C/C++ new CType_Java(), //Java new CType_Asm(), // アセンブラ new CType_Ini(), // 設定ファイル }; assert( 1 <= MAX_TYPES ); 2013/12/22   Rev.2
  • 12. Git 行単位の移動追跡機能 ・ Git の blame 出力 ( 通常出力 ) ^b8b49f8 f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae f1236fae sakura_core/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp (kobake (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki (Suzuki Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi Satoshi 2008-09-28 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 2012-10-24 09:39:47 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 22:02:44 +0000 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 +0900 946) 947) 948) 949) 950) 951) 952) 953) 954) 955) 956) 957) 958) 959) 960) 961) /*! @brief タイプ別設定の初期化処理 @date 2005.01.30 genta CShareData::Init() から分離. */ void CShareData::InitTypeConfigs(DLLSHAREDATA* pShareData) { CType* table[] = { new CType_Basis(), // 基本 new CType_Text(), // テキスト new CType_Cpp(), //C/C++ new CType_Java(), //Java new CType_Asm(), // アセンブラ new CType_Ini(), // 設定ファイル }; assert( 1 <= MAX_TYPES ); ・ Git の blame 出力 (-C オプションをつけた場合 ) ^b8b49f8 f1236fae ^b8b49f8 ^b8b49f8 ^b8b49f8 ^b8b49f8 ^b8b49f8 ^b8b49f8 ^b8b49f8 ^b8b49f8 ^b8b49f8 f1236fae f1236fae ^b8b49f8 ^b8b49f8 ba97624a sakura_core/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/env/CShareData.cpp sakura_core/env/CShareData.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp sakura_core/types/CType.cpp (kobake (Suzuki Satoshi (kobake (kobake (kobake (kobake (kobake (kobake (kobake (kobake (kobake (Suzuki Satoshi (Suzuki Satoshi (kobake (kobake (moca_skr 2008-09-28 2012-10-24 2008-09-28 2008-09-28 2008-09-28 2008-09-28 2008-09-28 2008-09-28 2008-09-28 2008-09-28 2008-09-28 2012-10-24 2012-10-24 2008-09-28 2008-09-28 2010-07-07 09:39:47 22:02:44 09:39:47 09:39:47 09:39:47 09:39:47 09:39:47 09:39:47 09:39:47 09:39:47 09:39:47 22:02:44 22:02:44 09:39:47 09:39:47 16:50:21 +0000 +0900 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0900 +0900 +0000 +0000 +0000 946) 947) 948) 949) 950) 951) 952) 953) 954) 955) 956) 957) 958) 959) 960) 961) /*! @brief タイプ別設定の初期化処理 @date 2005.01.30 genta CShareData::Init() から分離. */ void CShareData::InitTypeConfigs(DLLSHAREDATA* pShareData) { CType* table[] = { new CType_Basis(), // 基本 new CType_Text(), // テキスト new CType_Cpp(), //C/C++ new CType_Java(), //Java new CType_Asm(), // アセンブラ new CType_Ini(), // 設定ファイル }; assert( 1 <= MAX_TYPES ); 2013/12/22   Rev.2