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

  • 2,736 views
Uploaded on

主に GIt と Mercurial を比較した資料。 …

主に GIt と Mercurial を比較した資料。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,736
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
10
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. バージョン管理システム 比較資料 2013/12/22 鈴木 聡 2013/12/22   Rev.2
  • 2. Git, Mercurial, Subversion 利点と欠点 2013/12/22   Rev.2
  • 3. Git ● 利点 — — ● 動作速度が最も速いため、大規模 ( 数 100 万行を超 える ) なソースコードを管理するのに向いている 行単位の追跡(検索)機能があり、コードのコピー を追跡できる 欠点 — Git 固有の動作に慣れる必要がある ● — — ステージング、ブランチ = ポインタ、等々・・・ GUI の完成度が今一つ コミット時に変更ファイル全体を記録するため、リ ポジトリが肥大化しやすい 2013/12/22   Rev.2
  • 4. Mercurial ● 利点 — — 動作がシンプルであるため、分散型 VCS 中では最も 学習コストが低い 動作環境を選ばず、完成度の高い GUI が使用できる ● ● TortoiseHg Workbench 欠点 — 知名度が低く、情報が少ない — Git に比べて動作が遅い 2013/12/22   Rev.2
  • 5. Subversion ● 利点 — — ● バイナリファイルを差分で記録するため、リポジト リの肥大化を抑えられる ファイルのロック(排他制御)が行える 欠点 — — 操作の都度、サーバへのアクセスが発生するため、 動作速度が非常に遅い 機能面で現世代の VCS に劣る ● ローカルコミットが行えない — 将来的には「 Checkpoints 」という名称で実装予定だが・・・ 2013/12/22   Rev.2
  • 6. 比較表 比較項目 動作速度 機能 学習コスト GUI フロントエンド ドキュメント管理 Git Mercurial Subversion ◎ ◎ × ○ △ ○ ◎ ○ ◎ △ × △ ◎ △ ◎ 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