dvcs-kyoto

61
Mercurial ワークショップ 分散型バージョン管理システム勉強会@京都 2011-07-23

Upload: naoya-inada

Post on 20-Jun-2015

2.405 views

Category:

Documents


0 download

DESCRIPTION

分散型バージョン管理システム勉強会@京都

TRANSCRIPT

Page 1: dvcs-kyoto

Mercurialワークショップ

分散型バージョン管理システム勉強会@京都2011-07-23

Page 2: dvcs-kyoto

自己紹介

● 稲田 尚也 (@naoina)● ガラスの十代 (0x19歳)● 京都のPythonista● https://bitbucket.org/naoina● 面白い勉強会あれば教えてください

Page 3: dvcs-kyoto

Mercurialとは

Page 4: dvcs-kyoto

Mercurialとは

● バージョン管理システムの1つ● DVCS● 実装はPython (一部C言語)● 読みは「まーきゅりある」

Page 5: dvcs-kyoto

Mercurialとは

● バージョン管理システムの1つ● DVCS● 実装はPython (一部C言語)● 読みは「まーきゅりある」

Page 6: dvcs-kyoto

Mercurialとは

● コマンド名は「hg」

Page 7: dvcs-kyoto

Mercurialとは

● コマンド名は「hg」

Page 8: dvcs-kyoto

Mercurialとは

● コマンド名は「hg」

● Mercurial = 水銀 = hg

Page 9: dvcs-kyoto

Mercurialとは

● コマンド名は「hg」

● Mercurial = 水銀 = hg

Page 10: dvcs-kyoto

Mercurial使用プロジェクト

● Python● Vim● Mozilla● OpenSolaris● OpenJDK● etc...

Page 11: dvcs-kyoto

DVCSとは

● Distributed Version Control System● 分散バージョン管理システム● SubversionやCVSは中央集中型● SCMという言葉もあります● Source Code Management

Page 12: dvcs-kyoto

DVCSの特徴

Page 13: dvcs-kyoto

DVCSの特徴

● サーバーを立てる必要がない– リポジトリがローカルだけで完結できる!

● ネットワークに繋がってなくてもいい– svn logとかイライラしますよね?

● 脅威の冗長性– 全てのリポジトリが中央リポジトリ!

Page 14: dvcs-kyoto

Mercurial

Page 15: dvcs-kyoto

設定

Page 16: dvcs-kyoto

設定

.hgrcを編集– Unix系: $HOME/.hgrc– Windows: %USERPROFILE%¥Mercurial.ini

Page 17: dvcs-kyoto

設定

[ui]username = Naoya INADA <[email protected]>

[extensions]color =graphlog =

.hgrc

Page 18: dvcs-kyoto

Mercurialの使い方

Page 19: dvcs-kyoto

Mercurialの使い方

1. リポジトリの作成

2. ファイルの追加

3. ファイルの変更

4. コミット

5. コミットの確認

Page 20: dvcs-kyoto

リポジトリの作成

hg init

Page 21: dvcs-kyoto

ファイルの追加

hg add

Page 22: dvcs-kyoto

ファイルの変更

hg removehg copy

hg rename

Page 23: dvcs-kyoto

コミット

hg commit

Page 24: dvcs-kyoto

コミットの確認

hg log

Page 25: dvcs-kyoto

ここまでの内容で質問あればどうぞ

Page 26: dvcs-kyoto

続・Mercurialの使い方

6. リポジトリの複製

7. 変更の確認

8. 変更の取り消し

9. 変更の取り込み

10. 作業スペースの更新

11. マージ

12. 変更の反映

Page 27: dvcs-kyoto

リポジトリの複製

hg clone

Page 28: dvcs-kyoto

http://dvcskyoto.naniyueni.org/

Page 29: dvcs-kyoto

変更の確認

hg statushg summary

hg diff

Page 30: dvcs-kyoto

コマンドのエイリアス

% hg status

この部分

● ここでいう `コマンド` は

Page 31: dvcs-kyoto

コマンドのエイリアス

% hg status

% hg st

% hg shg: command 's' is ambiguous: serve showconfig status summary

% hg stat

Page 32: dvcs-kyoto

変更の取り消し

hg revert

Page 33: dvcs-kyoto

変更の取り込み

hg incominghg pull

Page 34: dvcs-kyoto

作業スペースの更新

hg update

Page 35: dvcs-kyoto

マージ

hg mergehg resolve

Page 36: dvcs-kyoto

無名ブランチ

● 変更がコンフリクトした場合に勝手に名前の無いブランチが作られる

changeset:1 changeset:2

default

Page 37: dvcs-kyoto

無名ブランチ

● 変更がコンフリクトした場合に勝手に名前の無いブランチが作られる

changeset:1 changeset:2

changeset:2a

default

Page 38: dvcs-kyoto

無名ブランチ

● 変更がコンフリクトした場合に勝手に名前の無いブランチが作られる

changeset:1 changeset:3changeset:2

changeset:2a

changeset:4(2a)

default

Page 39: dvcs-kyoto

変更の反映

hg outgoinghg push

Page 40: dvcs-kyoto

ここまでの内容で質問あればどうぞ

Page 41: dvcs-kyoto

拡張機能

● MQ [http://mercurial.selenic.com/wiki/JapaneseMqExtension]

– スイスアーミーナイフ– パッチ管理やコミットの削除、改変など

● Rebase [http://mercurial.selenic.com/wiki/RebaseExtension]

– 伝家の宝刀– mergeの代わりにrebase– 知らないでは済まされない

Page 42: dvcs-kyoto

拡張機能

● Bookmarks [http://mercurial.selenic.com/wiki/BookmarksExtension]

– チェンジセットへの削除可能なポインタが作れる

● Record [http://mercurial.selenic.com/wiki/RecordExtension]

– ファイル中の変更を選択してコミットできる

● Transplant [http://mercurial.selenic.com/wiki/TransplantExtension]

– 特定チェンジセットだけを移植できる

Page 43: dvcs-kyoto

Mercurialvs

Git

Page 44: dvcs-kyoto

履歴の指定

Page 45: dvcs-kyoto

履歴の指定

Mercurial– ハッシュ– リビジョン番号

Page 46: dvcs-kyoto

履歴の指定

Mercurial– ハッシュ– リビジョン番号

Git– ハッシュのみ

Page 47: dvcs-kyoto

Extension vs All-In-One

Page 48: dvcs-kyoto

Extension vs All-In-One

Mercurial– 包丁– 足りない機能は拡張機能で個別に追加

Page 49: dvcs-kyoto

Extension vs All-In-One

Mercurial– 包丁– 足りない機能は拡張機能で個別に追加

Git– スイスアーミーナイフ– 最初からなんでもできる

Page 50: dvcs-kyoto

pullの動作

Page 51: dvcs-kyoto

pullの動作

Mercurial– 作業スペースの更新はしない

Page 52: dvcs-kyoto

pullの動作

Mercurial– 作業スペースの更新はされない

Git– 作業スペースの更新が自動でされる– hg pull -u

Page 53: dvcs-kyoto

タイプ数

Page 54: dvcs-kyoto

タイプ数

Mercurial– hg– 2文字

Page 55: dvcs-kyoto

タイプ数

Mercurial– hg– 2文字

Git– git– 3文字

Page 56: dvcs-kyoto

タイプ数

Mercurial– hg– 2文字

Git– git– 3文字

10万回コマンドを打鍵hg → 200000文字git → 300000文字

Page 57: dvcs-kyoto

タイプ数

Mercurial– hg– 2文字

Git– git– 3文字

10万回コマンドを打鍵hg → 200000文字git → 300000文字

7key/secで打鍵してもhg → 約28571秒git → 約42857秒

Page 58: dvcs-kyoto

タイプ数

Mercurial– hg– 2文字

Git– git– 3文字

10万回コマンドを打鍵hg → 200000文字git → 300000文字

7key/secで打鍵してもhg → 約28571秒git → 約42857秒

約14286秒の差!(約4時間)

Page 59: dvcs-kyoto

http://mercurial.selenic.com/wiki/GitConcepts

Page 60: dvcs-kyoto

質疑応答

Page 61: dvcs-kyoto

ありがとうございました