SlideShare a Scribd company logo
1 of 61
Download to read offline
Mercurial
ワークショップ
 分散型バージョン管理システム勉強会@京都
        2011-07-23
自己紹介
●
    稲田 尚也 (@naoina)
●
    ガラスの十代 (0x19歳)
●
    京都のPythonista
●
    https://bitbucket.org/naoina
●
    面白い勉強会あれば教えてください
Mercurialとは
Mercurialとは
●
    バージョン管理システムの1つ
●
    DVCS
●
    実装はPython (一部C言語)
●
    読みは「まーきゅりある」
Mercurialとは
●
    バージョン管理システムの1つ
●
    DVCS
●
    実装はPython (一部C言語)
●
    読みは「まーきゅりある」
Mercurialとは
●
    コマンド名は「hg」
Mercurialとは
●
    コマンド名は「hg」
Mercurialとは
●
    コマンド名は「hg」


●
    Mercurial = 水銀 = hg
Mercurialとは
●
    コマンド名は「hg」


●
    Mercurial = 水銀 = hg
Mercurial使用プロジェクト
●
    Python
●
    Vim
●
    Mozilla
●
    OpenSolaris
●
    OpenJDK
●
    etc...
DVCSとは
●
    Distributed Version Control System
●
    分散バージョン管理システム
●
    SubversionやCVSは中央集中型
●
    SCMという言葉もあります
●
    Source Code Management
DVCSの特徴
DVCSの特徴
●
    サーバーを立てる必要がない
     –   リポジトリがローカルだけで完結できる!
●
    ネットワークに繋がってなくてもいい
     –   svn logとかイライラしますよね?
●
    脅威の冗長性
     –   全てのリポジトリが中央リポジトリ!
Mercurial
設定
設定
.hgrcを編集
 –   Unix系: $HOME/.hgrc
 –   Windows: %USERPROFILE%¥Mercurial.ini
設定
.hgrc
[ui]
username = Naoya INADA <naoina@kuune.org>

[extensions]
color =
graphlog =
Mercurialの使い方
Mercurialの使い方
1. リポジトリの作成
2. ファイルの追加
3. ファイルの変更
4. コミット
5. コミットの確認
リポジトリの作成




hg init
ファイルの追加




hg add
ファイルの変更


hg remove
 hg copy
hg rename
コミット




hg commit
コミットの確認




hg log
ここまでの内容で
質問あればどうぞ
続・Mercurialの使い方
6. リポジトリの複製
7. 変更の確認
8. 変更の取り消し
9. 変更の取り込み
10. 作業スペースの更新
11. マージ
12. 変更の反映
リポジトリの複製




hg clone
http://dvcskyoto.naniyueni.org/
変更の確認


 hg status
hg summary
  hg diff
コマンドのエイリアス
●
    ここでいう `コマンド` は

        この部分

     % hg status
コマンドのエイリアス
% hg status


% hg stat


% hg st


% hg s
hg: command 's' is ambiguous:
    serve showconfig status summary
変更の取り消し




hg revert
変更の取り込み



hg incoming
  hg pull
作業スペースの更新




hg update
マージ



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


    default

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

    default

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

    default

    changeset:1    changeset:2    changeset:3


                                  changeset:4
                                      (2a)
変更の反映



hg outgoing
  hg push
ここまでの内容で
質問あればどうぞ
拡張機能
●
    MQ [http://mercurial.selenic.com/wiki/JapaneseMqExtension]
       –   スイスアーミーナイフ
       –   パッチ管理やコミットの削除、改変など
●
    Rebase [http://mercurial.selenic.com/wiki/RebaseExtension]
       –   伝家の宝刀
       –   mergeの代わりにrebase
       –   知らないでは済まされない
拡張機能
●
    Bookmarks [http://mercurial.selenic.com/wiki/BookmarksExtension]
        –   チェンジセットへの削除可能なポインタが作れる
●
    Record [http://mercurial.selenic.com/wiki/RecordExtension]
        –   ファイル中の変更を選択してコミットできる
●
    Transplant [http://mercurial.selenic.com/wiki/TransplantExtension]
        –   特定チェンジセットだけを移植できる
Mercurial
   vs
  Git
履歴の指定
履歴の指定
Mercurial
  –   ハッシュ
  –   リビジョン番号
履歴の指定
Mercurial
  –   ハッシュ
  –   リビジョン番号

Git
  –   ハッシュのみ
Extension vs All-In-One
Extension vs All-In-One
Mercurial
  –   包丁
  –   足りない機能は拡張機能で個別に追加
Extension vs All-In-One
Mercurial
  –   包丁
  –   足りない機能は拡張機能で個別に追加

Git
  –   スイスアーミーナイフ
  –   最初からなんでもできる
pullの動作
pullの動作
Mercurial
  –   作業スペースの更新はしない
pullの動作
Mercurial
  –   作業スペースの更新はされない

Git
  –   作業スペースの更新が自動でされる
  –   hg pull -u
タイプ数
タイプ数
Mercurial
  –   hg
  –   2文字
タイプ数
Mercurial
  –   hg
  –   2文字

Git
  –   git
  –   3文字
タイプ数
Mercurial     10万回コマンドを打鍵
                hg → 200000文字
  –   hg        git → 300000文字
  –   2文字

Git
  –   git
  –   3文字
タイプ数
Mercurial     10万回コマンドを打鍵
                hg → 200000文字
  –   hg        git → 300000文字
  –   2文字     7key/secで打鍵しても
                hg → 約28571秒
Git             git → 約42857秒

  –   git
  –   3文字
タイプ数
Mercurial     10万回コマンドを打鍵
                hg → 200000文字
  –   hg        git → 300000文字
  –   2文字     7key/secで打鍵しても
                hg → 約28571秒
Git             git → 約42857秒

  –   git    約14286秒の差!
  –   3文字      (約4時間)
http://mercurial.selenic.com/wiki/GitConcepts
質疑応答
ありがとうございました

More Related Content

What's hot

Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Sho Shimizu
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
Kazuyuki Mori
 
いいこんぶGitマニュアル
いいこんぶGitマニュアルいいこんぶGitマニュアル
いいこんぶGitマニュアル
Kaito Yuuki
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
kazuyas
 
第1回 Open Build Service 道場
第1回 Open Build Service 道場第1回 Open Build Service 道場
第1回 Open Build Service 道場
Fuminobu Takeyama
 

What's hot (20)

Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Linux Namespaces
Linux NamespacesLinux Namespaces
Linux Namespaces
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
Docker入門
Docker入門Docker入門
Docker入門
 
いいこんぶGitマニュアル
いいこんぶGitマニュアルいいこんぶGitマニュアル
いいこんぶGitマニュアル
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?
 
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
 
Docker Machineを始めるには?
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
 
Walter ファミリーの紹介 at Shibuya.go#1
Walter ファミリーの紹介 at Shibuya.go#1Walter ファミリーの紹介 at Shibuya.go#1
Walter ファミリーの紹介 at Shibuya.go#1
 
Openresty
OpenrestyOpenresty
Openresty
 
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
 
Twemproxy (nutcracker)
Twemproxy (nutcracker)Twemproxy (nutcracker)
Twemproxy (nutcracker)
 
Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2
 
第1回 Open Build Service 道場
第1回 Open Build Service 道場第1回 Open Build Service 道場
第1回 Open Build Service 道場
 
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
 
Open Build Service で deb パッケージをビルドしてみた
Open Build Service で deb パッケージをビルドしてみたOpen Build Service で deb パッケージをビルドしてみた
Open Build Service で deb パッケージをビルドしてみた
 
コンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかコンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのか
 

Similar to dvcs-kyoto

Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
Koji Shinba
 
Osc mercurial-public
Osc mercurial-publicOsc mercurial-public
Osc mercurial-public
wyukawa
 
Wordbench fukuoka
Wordbench fukuokaWordbench fukuoka
Wordbench fukuoka
Junji Manno
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
賢次 海老原
 

Similar to dvcs-kyoto (20)

Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 
はじめてのMercurial/Bitbucket その2
 はじめてのMercurial/Bitbucket その2 はじめてのMercurial/Bitbucket その2
はじめてのMercurial/Bitbucket その2
 
Osc mercurial-public
Osc mercurial-publicOsc mercurial-public
Osc mercurial-public
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 
Wordbench fukuoka
Wordbench fukuokaWordbench fukuoka
Wordbench fukuoka
 
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
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
 
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
 
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアル
 
Mercurial入門(後半)
Mercurial入門(後半)Mercurial入門(後半)
Mercurial入門(後半)
 
Git 20100313
Git 20100313Git 20100313
Git 20100313
 
ソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHubソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHub
 
Git
GitGit
Git
 
Git&GitHub入門
Git&GitHub入門Git&GitHub入門
Git&GitHub入門
 
Git地図
Git地図Git地図
Git地図
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座
 
Mercurial入門(後半)解説版
Mercurial入門(後半)解説版Mercurial入門(後半)解説版
Mercurial入門(後半)解説版
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理
 
RedmineとGitとスクラム
RedmineとGitとスクラムRedmineとGitとスクラム
RedmineとGitとスクラム
 

More from Naoya Inada (8)

べき等データベースマイグレーションツールmigu
べき等データベースマイグレーションツールmiguべき等データベースマイグレーションツールmigu
べき等データベースマイグレーションツールmigu
 
Tokyo Otaku Mode での PayPal 活用事例
Tokyo Otaku Mode での PayPal 活用事例Tokyo Otaku Mode での PayPal 活用事例
Tokyo Otaku Mode での PayPal 活用事例
 
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnairシンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
 
kyotovim#1
kyotovim#1kyotovim#1
kyotovim#1
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
Python Kyoto study LT
Python Kyoto study LTPython Kyoto study LT
Python Kyoto study LT
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
 

dvcs-kyoto