tortoise hgのすすめ

47
2013/12/13 Rev.16 TortoiseHg のすゝめ 鈴木 聡

Upload: suzzsegv

Post on 25-Jun-2015

1.172 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Tortoise hgのすすめ

2013/12/13 Rev.16

TortoiseHg のすゝめ

鈴木 聡

Page 2: Tortoise hgのすすめ

2013/12/13 Rev.16

まずは、

「バージョン管理システム」のおさらい

Page 3: Tortoise hgのすすめ

2013/12/13 Rev.16

● 「バージョン管理システム」とは、コンピュータ上で作成、編集されるファイルの変更履歴を管理するためのシステム。

● 特にソフトウェア開発において「ソースコードの管理」に用いられることが多い。

Wikipedia 2013年4月13日 (土) 09:26 版より引用

バージョン管理システムとは?VCS: Version Control System

Page 4: Tortoise hgのすすめ

2013/12/13 Rev.16

代表的な VCS 一覧

CVSCVSVSSVSS

(Visual Source (Visual Source Safe)Safe)

SubversionSubversion GitGit MercurialMercurial

初版リリース 19901990年年 19941994年年 20002000年年 20052005年年 20052005年年

リポジトリリポジトリ方式方式 集中集中 集中集中 集中集中 分散分散 分散分散

※ リポジトリ : ソースコードの変更情報を記録したデータベースのこと。

Page 5: Tortoise hgのすすめ

2013/12/13 Rev.16

「集中型」バージョン管理

とは?

Page 6: Tortoise hgのすすめ

2013/12/13 Rev.16

集中型バージョン管理

● 1台の中央サーバにリポジトリを保持

● 管理対象であるソースコードのみ、クライアントPCに取得する

● ソースの変更履歴を参照する場合などには、サーバにアクセスしながら動作

Page 7: Tortoise hgのすすめ

2013/12/13 Rev.16

集中型 VCS の図

Page 8: Tortoise hgのすすめ

2013/12/13 Rev.16

集中型 VCSチェックアウト

リポジトリサーバー

クライアントPC

check out

Page 9: Tortoise hgのすすめ

2013/12/13 Rev.16

集中型 VCSコミット・アップデート

リポジトリサーバー

クライアントPC

commit(check in)

update

Page 10: Tortoise hgのすすめ

2013/12/13 Rev.16

「分散型」バージョン管理

とは?

Page 11: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型バージョン管理

● リポジトリの全データをローカル PC にコピー

● リポジトリのコピー後はローカル PC のみで動作

– ソースコードはローカル PC のリポジトリからチェックアウトする

– コミット(チェックイン)もローカル PC のリポジトリに

● リポジトリを持った PC は、サーバ・クライアントどちらにもなれる

Page 12: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCS の図

Page 13: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCSクローン

PC

clone

Server

Page 14: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCSチェックアウト

PC

check out

Page 15: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCSコミット

PC

Commit(check in)

Page 16: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCSリポジトリ同期

Server

push

pull

PC

Page 17: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCS の利点 (1)

● ローカル PC にコミットできる– 変更点を気軽にコミットできる– 「集中型」で頻繁に発生する「他の人とソースコードの変更が衝突してコミットできない・・・」という心配は無用

– 「コミット後にマージ」という使い方ができる

● マージ作業を何度でもやり直せる

Page 18: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCS の利点 (2)

● サーバとネットワークで接続されていない状態でも動作

– サーバへのアクセスが必要ないため・・・● 変更履歴の閲覧● ファイル内の変更部分の検索・・・などの動作が速い

Page 19: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCS の利点 (3)

● ファイル経由でもリポジトリ同期が可能– メールの送受信できれば、添付ファイル経由でリビジョンの受け渡しが可能

Page 20: Tortoise hgのすすめ

2013/12/13 Rev.16

Office BOffice A

ファイルを用いた同期の図

Bundlefile

Page 21: Tortoise hgのすすめ

2013/12/13 Rev.16

ここまでのバージョン管理の話を

踏まえて、TortoiseHg の話に。

Page 22: Tortoise hgのすすめ

2013/12/13 Rev.16

TortoiseHg とは?(トータス エイチ・ジー)

● 「分散型バージョン管理システム」である Mercurial(マーキュリアル)の GUI フロントエンド

● Windows / Mac OS X / Linux / FreeBSD / Solaris … など多くの環境で動作– TortoiseHg は Python + Qt で実装されている

● GPL v2 ライセンスのフリーソフト

Page 23: Tortoise hgのすすめ

2013/12/13 Rev.16

TortoiseHgワークベンチ画面

Page 24: Tortoise hgのすすめ

2013/12/13 Rev.16

TortoiseHg のすゝめ (1)

● CVS や Subversion など、既存の VCS に動作が近い– Git は固有のクセが多い

● シンプルなワークフロー– 「名前なしブランチ」による平行開発– TortoiseHg(Mercurial)では「コミット」するだけで勝手にブランチします

Page 25: Tortoise hgのすすめ

2013/12/13 Rev.16

2人の開発者が別々にコミットすると・・・

↑「Rev.1」に対して2人の開発者が別々の変更をコミットした場合リビジョングラフ

※ グラフとは、リビジョンの家系図

Page 26: Tortoise hgのすすめ

2013/12/13 Rev.16

これをマージして統合する

Page 27: Tortoise hgのすすめ

2013/12/13 Rev.16

ブランチによる平行開発

● 他の開発者の影響を受けずに開発を進められる

● 「名前なしブランチ」に慣れたら、「名前付きブランチ」を使った開発にシフト

● ブランチパターンの適用– 徐々に平行開発を安全に進められるようになる

Page 28: Tortoise hgのすすめ

2013/12/13 Rev.16

マージは大丈夫?

● マージ時に変更が衝突した場合、マージ作業に多くの工数が必要なのでは?– 既存 VCS でマージのつらさを痛感

ブランチを多用した開発は不安・・・

Page 29: Tortoise hgのすすめ

2013/12/13 Rev.16

「分散型」で強化されたマージ機能

● 分散型バージョン管理では「3way マージ」でマージが行われるため、VCS による自動マージの精度が向上している

3way マージ:

「マージ対象の2つのリビジョン」と「ブランチ元リビジョン」、計3つのリビジョンの情報を使用してマージする

Page 30: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCS ではマージしても大丈夫です

● 今まで苦労してマージしていたのは、既存 VCS のデキが悪かっただけ

● 分散型 VCS を使ってもマージが大変な場合は・・・– おそらく、ソースコードのデキが悪い

● 「変更が局所化できていない」のでしょうから、リファクタリングしましょう。

Page 31: Tortoise hgのすすめ

2013/12/13 Rev.16

TortoiseHg のすゝめ (2)

● 強力な「リビジョン改変」機能– GUI で簡単にリビジョンの移動、圧縮、削除ができる

Page 32: Tortoise hgのすすめ

2013/12/13 Rev.16

リビジョン改変機能

● リビジョンの修正(Amend)– コミットのやり直し

● リビジョンの移動(Rebase)– リビジョンを別の位置に移動

● リビジョンの移植(Graft)– 別のブランチに 3way マージ用いて移植

● リビジョンの圧縮– 2つ以上のリビジョンを1つにまとめる

Page 33: Tortoise hgのすすめ

2013/12/13 Rev.16

TortoiseHg のすゝめ (3)

● Git にも実装されていない機能も– Large Files

● 巨大なバイナリファイルはオンデマンドで取得

– Shelve● 変更点を一時的に避けておいて、後で元に戻す

(2013年11月に実装された最新機能なので TortoiseHg では、まだ使えません・・・)

● TortoiseHg 固有の Shelve 機能は使えます

– Changesets Evolution● 「チェンジセットの削除」を別リポジトリに伝搬する

Page 34: Tortoise hgのすすめ

2013/12/13 Rev.16

おすすめ書籍

● 入門 TortoiseHg + Mercurial

秀和システム

2013/2/27 発売

2,200円

Page 35: Tortoise hgのすすめ

2013/12/13 Rev.16

最新情報 (1)

Page 36: Tortoise hgのすすめ

2013/12/13 Rev.16

最新情報 (2)

● Twitter ハッシュタグ

#mercurialjp

● Mercurial 日本語ユーザグループ– https://groups.google.com/forum/?fromgroups#!forum/mercurial-ja

Page 37: Tortoise hgのすすめ

2013/12/13 Rev.16

いつ使うの?

● おそらく、技術的な障壁は無いハズ

● 使う気になれば、すぐに導入できる

● まずは、「集中型」として使用するのもアリ。– 「マージ機能の強化」や「動作が速い」という恩恵は受けられる

Page 38: Tortoise hgのすすめ

2013/12/13 Rev.16

TortoiseHg を使いましょう!!!

Page 39: Tortoise hgのすすめ

2013/12/13 Rev.16

TortoiseHg を導入した後は・・・

Page 40: Tortoise hgのすすめ

2013/12/13 Rev.16

構成管理パターンを使った開発

● ブランチを用いた「構成管理パターン」– Main line– Task Branch– Release Line– 3rd Party Codeline

Page 41: Tortoise hgのすすめ

2013/12/13 Rev.16

A successfulGit branching model

Page 42: Tortoise hgのすすめ

2013/12/13 Rev.16

さらなる開発効率の向上

これらのパターンを用いて、ソフトウェアの開発効率を向上させましょう!!!

Page 43: Tortoise hgのすすめ

2013/12/13 Rev.16

Appendix

Page 44: Tortoise hgのすすめ

2013/12/13 Rev.16

Mercurial とは?

● Pythonで実装されているコマンドライン ツール

● 元々は Linux カーネルのソースコード管理に使用するために開発が始まった

● Go言語, Illumos/OpenIndiana, Mozilla, Netbeans, OpenJDK,Python, Vim … 等のプロジェクトにて使用

Page 45: Tortoise hgのすすめ

2013/12/13 Rev.16

Mercurial の略称はなぜ Hg ?

● 英語の Mercury が水銀を意味し、その元素記号が Hg であることに由来。

Page 46: Tortoise hgのすすめ

2013/12/13 Rev.16

分散型 VCS が開発された理由

● Linux カーネルの開発過程で「大規模なソフトウェアを、複数の開発者で並行開発するための手法」が確立されていった。(2002年~2005年)

● Linux カーネルの開発で使用するために「分散型 VCS」の開発(※1)が行われた(2005年~)– 「大規模なソフトウェアを、複数の開発者で並行開発する」ために最良のツールが作成された

Page 47: Tortoise hgのすすめ

2013/12/13 Rev.16

Git 派の方にはSourceTree がオススメ