12. 12Copyright (C) Masanori Kataoka. All Rights Reserved.
3.Git
3.2 Gitの特徴(続き)
図3.1 GitとSubversionの性能比較(参考文献13)より転載)
13. 13Copyright (C) Masanori Kataoka. All Rights Reserved.
3.Git
3.2 Gitの特徴(続き)
Operation Feature Git SVN ratio
Commit
Files(A)
Add, commit and push 113 modified files
(2164+, 2259-)
0.64 2.60 4x
Commit
Images(B)
Add, commit and push 1000 1k images 1.53 24.7 16x
Diff Current Diff 187 changed files (1664+, 4859-)
against last commit
0.25 1.09 4x
Diff Recent Diff against 4 commits back (269
changed/3609+,6898-)
0.25 3.99 16x
Diff Tags Diff two tags against each other
(v1.9.1.0/v1.9.3.0 )
1.17 83.57 71x
Log(50) Log of the last 50 commits (19k of
output)
0.01 0.38 31x
表3.1(1) GitとSubversionの性能比較(参考文献13)より転載)
(数値の単位は秒)
14. 14Copyright (C) Masanori Kataoka. All Rights Reserved.
3.Git
3.2 Gitの特徴(続き)
Operation Feature Git SVN ratio
Log(All) Log of all commits (26,056 commits - 9.4M of
output)
0.52 169.20 325x
Log(File) Log of the history of a single file (array.c - 483
revs)
0.60 82.84 138x
Update Pull of Commit A scenario (113 files changed,
2164+, 2259-)
0.90 2.82 3x
Blame Line annotation of a single file (array.c) 1.91 3.04 1x
Clone Clone and shallow clone(*) in Git vs checkout
in SVN
107.5
21.0(*)
14.0 0.1x
1x(*)
Size(M) Size of total client side data and files after
clone/checkout (in M)
181.0 132.0 0.7x
表3.1(2) GitとSubversionの性能比較(続き)(参考文献13)より転載)
(数値の単位は秒)
37. 37Copyright (C) Masanori Kataoka. All Rights Reserved.
4.GitHub
4.4 SourceTree(続き)
図4.4 SourceTree によるGit Flow サポート機能メニュー
(参考文献10))
38. 38Copyright (C) Masanori Kataoka. All Rights Reserved.
4.GitHub
4.5 Gerrit
Gerritは、Googleが開発したGit用ソースコードレビューツールである。
Android上のAp開発者を中心に普及しつつある
Gerritの主要な機能は次の通りである。
① Git を用いたソースコード変更の変更差分を分かり易い形式で
表示する。
② この変更差分の妥当性をコミットする前にパートナーに転送して、
レビューを受ける。
③ さらには、正しく動作することをCIサーバでテストする。
④ 上記の②③を確認したうえでCIサーバでマージして正式にコミット
する。具体的には、自分自身でのテストと、パートナーによるレ
ビューを完了したものだけを、JenkinsなどのCI ツールに渡して、
メインファイルと統合する。
Gerritを日常作業の中に取り込むことにより、ソースコード更新の信
頼性が大きく改善されると評判になっている。
39. 39Copyright (C) Masanori Kataoka. All Rights Reserved.
5.GitHubとCIツールの連携
GitHubは、他のツールと直接的な連携をする場合もあるが、多くの
場合に、CI(Continuous Integration)ツールを介して、間接的に他の
ツールと連携する。以下では、CIツールの代表としてJenkinsとTravis
CI の二つについてGitHubとの連携方法を解説する。
5.1 Jenkinsとの連携
CIツールは、その基本的な機能を実現するうえで変更歴管理・バー
ジョン管理ツールと密接に連携する必要がある。Jenkinsにおいては、
主要な連携相手はSubversionであり続けてきた。しかし、最近になっ
て、Git もSubversionの連携相手の標準メニューに組入れられるよう
になってきた。したがってまた、GitHubとJenkinsの連携は極めて安定
した関係に成熟してきたということが出来る。
図5.1 にGitHubとJenkinsの連携の例を示す。GitHubに新しいん変
更がpushされると、これがJenkinsに知らされる。Jenkinsは、その変
更内容を受け取り、変更に対応したテストを自動起動する。
40. 40Copyright (C) Masanori Kataoka. All Rights Reserved.
5.GitHubとCIツールの連動
5.1 Jenkinsとの連携(続き)
図5.1 GitHubとJenkinsの連携の例(参考文献14))
41. 41Copyright (C) Masanori Kataoka. All Rights Reserved.
5.GitHubとCIツールの連動
5.2 Travis CI との連携
Travis CI はオープンソースコミュニティのためにホストされたCI
サービスである。Travis CI は、当初はRuby, PHP, JavaScript 等の
Web開発者を中心に普及していったが、最近ではこれらを越えて利用
され普及が進んでいる。
クラウド上のSoftware Engineering Service と言うことで、GitHub と
Travis CI は、本質的に相性が良い。GitHubとTravis CI を連動させ
るためには、GitHubに .travis.yml というTravis CI 用のファイルを用意
する。 .travis.yml では次の情報を定義する。
①使用する言語 ②バージョン ③テストを実行するコマンド
例えば、バージョンを複数記述すると、Travis CI はこれらのバージョン
に対するテストを連続して実行してくれる。
Travis CI は、テストの進捗状況、テスト結果等をグラフィカルに表示
するので、作業管理が容易になると好評である。また、初期設定など
は、Jenkins よりも楽であるという人もある。
46. 46Copyright (C) Masanori Kataoka. All Rights Reserved.
<付録>Gitの代表的なコマンド
コマンド名 機能
mv ファイル、ディレクトリ、シンボリックリンクの移動または名前の変更
pull 他のリポジトリやローカルブランチからの取得とマージ
push リモートのリファレンスを関連するオブジェクトと共に更新
rebase ローカルコミットの上流の更新の先頭に合わせた前方移植
reset 現在のHEADの指定した状態へのリセット
rm ファイルの作業ツリーとインデックスからの削除
show 様々な型のオブジェクトの表示
status 作業ディレクトリの状態の表示
tag GPG署名されたタグオブジェクトの作成、列挙、削除または検証
表A1-2 Git の代表的なコマンド(2)
参考文献5)より転載
47. 47Copyright (C) Masanori Kataoka. All Rights Reserved.
1) “Continuous Integration” P. M. Duvall, S. M. Matyas, A. Glover
2007 by Pearson Education, Inc. 「継続的インテグレーション入門」 (訳)大
塚庸司、丸山大輔、岡本裕二、亀村圭助 2009年 日系BP社
2) “Continuous Delivery: reliable software releases through build,test and
deployment automation” Jez Humble, David Farley 2010 Addison-Wesley
3) “Version Control with Subversion Second Edition” C. Michael Pilato, Ben
Collins-Sussman, Brian W. Fitzpatrick 2009 O’Reilly
「実用Subversion 第2版」宮本久二男(監訳)、朝枝雅子、浜本階生(訳)
2009年 オライリージャパン
4) “Pragmatic Version Control Using Subversion 2nd Edition” Mike Mason 2006
「Subversion実践入門:達人プログラマに学ぶバージョン管理 第2版」
でびあんぐる(監訳) 2011年 オーム社
5) “Version Control with Git” Jon Loeliger 2009 O’Reilly 「実用Git」 吉藤英明
(監訳)、本間雅洋、渡邊健太郎、浜本階生(訳) 2010年 オライリージャパン
6) 「入門Git」 濱野純(著) 2009年 秀和システム
7) “Pragmatic Version Control Using Git” Travis Swicegood 2008
「入門git」 でびあんぐる(監訳) 2009年 オーム社
48. 48Copyright (C) Masanori Kataoka. All Rights Reserved.
8) “A successful Git branching model” By Vincent Driessen Jan 2010
http://nvie.com/posts/a-successful-git-branching-model/
9) 「GitHub実践入門」 大塚弘記(著) 2014年 技術評論社
10) 「これでGitも怖くない! GUIでのバージョン管理が無料でできるSourceTreeの7
つの特徴とは」 岡本隆史 2013年
http://www.atmarkit.co.jp/ait/articles/1310/15/news019.html
11) 「Git&GitHub入門」 岡本隆史、大塚弘記(著) Software Design 2015年6
月号 技術評論社
12) 「開発ツール徹底攻略~Git, GitHub~」 2013年5月 技術評論社
13) Git-Official Site http://www.git-scm. all-and-fast com/about/sm
14) 「継続的インテグレーションのススメ Jenkinsでテスト結果を表示」
2013年 by megadreams http://megadreams14.com/?p=27