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

DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるAtsushi KOMIYA
 
新人Git/Github研修公開用スライド(その2)
新人Git/Github研修公開用スライド(その2)新人Git/Github研修公開用スライド(その2)
新人Git/Github研修公開用スライド(その2)pupupopo88
 
卒論執筆・スライド作成のポイント
卒論執筆・スライド作成のポイント卒論執筆・スライド作成のポイント
卒論執筆・スライド作成のポイントTsubasa Hirakawa
 
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースHajime Yanagawa
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23Masashi Shibata
 
ChatGPT は高階層の意味理解にはほど遠い?
ChatGPT は高階層の意味理解にはほど遠い?ChatGPT は高階層の意味理解にはほど遠い?
ChatGPT は高階層の意味理解にはほど遠い?Hide Koba
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門Tomohiko Himura
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンドYUKI Kaoru
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話y-uti
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeNIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeTakami Sato
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩Ayana Yokota
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドktateish
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 

What's hot (20)

DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
 
新人Git/Github研修公開用スライド(その2)
新人Git/Github研修公開用スライド(その2)新人Git/Github研修公開用スライド(その2)
新人Git/Github研修公開用スライド(その2)
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
 
卒論執筆・スライド作成のポイント
卒論執筆・スライド作成のポイント卒論執筆・スライド作成のポイント
卒論執筆・スライド作成のポイント
 
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
 
ChatGPT は高階層の意味理解にはほど遠い?
ChatGPT は高階層の意味理解にはほど遠い?ChatGPT は高階層の意味理解にはほど遠い?
ChatGPT は高階層の意味理解にはほど遠い?
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeNIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 

Viewers also liked

統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)Taiji Suzuki
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方hibiki443
 
リソースのバージョン管理/運用の失敗談と改善策について
リソースのバージョン管理/運用の失敗談と改善策についてリソースのバージョン管理/運用の失敗談と改善策について
リソースのバージョン管理/運用の失敗談と改善策についてgeechs inc. / geechs株式会社
 
Tortoise hgのすすめ
Tortoise hgのすすめTortoise hgのすすめ
Tortoise hgのすすめsuzzsegv
 
はじめようGit
はじめようGitはじめようGit
はじめようGittechscore
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフローadd20
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜Takashi Uemura
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
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
 
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)Takayori Takamoto
 
シスコシステムズ製品のPuppet 対応 - 吉原大輔、シスコシステムズ合同会社
シスコシステムズ製品のPuppet 対応 - 吉原大輔、シスコシステムズ合同会社シスコシステムズ製品のPuppet 対応 - 吉原大輔、シスコシステムズ合同会社
シスコシステムズ製品のPuppet 対応 - 吉原大輔、シスコシステムズ合同会社Puppet
 
【kintone】ノンプログラミングで家計簿アプリをつくろう!
【kintone】ノンプログラミングで家計簿アプリをつくろう!【kintone】ノンプログラミングで家計簿アプリをつくろう!
【kintone】ノンプログラミングで家計簿アプリをつくろう!geechs inc. / geechs株式会社
 
アセットビルドパイプラインについて考えてみる
アセットビルドパイプラインについて考えてみるアセットビルドパイプラインについて考えてみる
アセットビルドパイプラインについて考えてみるRYUTARO OSAFUNE
 
ショッピングモールと自社サイトの違いを比較表による分析
ショッピングモールと自社サイトの違いを比較表による分析ショッピングモールと自社サイトの違いを比較表による分析
ショッピングモールと自社サイトの違いを比較表による分析新潟コンサルタント横田秀珠
 
複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウYasuyuki Niwa
 
ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級Kouji Matsui
 
Unity scene file collaboration
Unity scene file collaborationUnity scene file collaboration
Unity scene file collaborationNoam Gat
 

Viewers also liked (20)

統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方
 
リソースのバージョン管理/運用の失敗談と改善策について
リソースのバージョン管理/運用の失敗談と改善策についてリソースのバージョン管理/運用の失敗談と改善策について
リソースのバージョン管理/運用の失敗談と改善策について
 
Tortoise hgのすすめ
Tortoise hgのすすめTortoise hgのすすめ
Tortoise hgのすすめ
 
はじめようGit
はじめようGitはじめようGit
はじめようGit
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフロー
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
デザイナのための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 (実践入門編)
 
複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ
 
ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級
 
Unity scene file collaboration
Unity scene file collaborationUnity scene file collaboration
Unity scene file collaboration
 

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

git入門(講義っぽく)
git入門(講義っぽく)git入門(講義っぽく)
git入門(講義っぽく)kataware
 
Git勉強会資料
Git勉強会資料Git勉強会資料
Git勉強会資料Kenji Takei
 
バージョン管理とGit
バージョン管理とGitバージョン管理とGit
バージョン管理とGitsinsoku listy
 
20101022 構成管理勉強会資料
20101022 構成管理勉強会資料20101022 構成管理勉強会資料
20101022 構成管理勉強会資料Atsushi Takayasu
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!ymmt
 
20130608 git-0
20130608 git-020130608 git-0
20130608 git-0Kasu Unko
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Koji Shinba
 
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitFluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitSeiya Mizuno
 
Git 初心者講座 by forkwell
Git 初心者講座 by forkwellGit 初心者講座 by forkwell
Git 初心者講座 by forkwellsinsoku listy
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用賢次 海老原
 
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターンGoogle borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターンktateish
 
JiraとConfluenceのTips集
JiraとConfluenceのTips集JiraとConfluenceのTips集
JiraとConfluenceのTips集Hiroshi Ohnuki
 
第1回 松本勉強会 2012 05 11 - 公開版
第1回 松本勉強会 2012 05 11 - 公開版第1回 松本勉強会 2012 05 11 - 公開版
第1回 松本勉強会 2012 05 11 - 公開版Ryosuke MATSUMOTO
 
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のヒント)Colin Charles
 
Gitごにょごにょ【概要編】
Gitごにょごにょ【概要編】Gitごにょごにょ【概要編】
Gitごにょごにょ【概要編】Kazuki Shingai
 
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 Hiro Yoshioka
 

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
 

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

  • 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