33
CodeIgniter Users Group in Japan CodeIgniter and its logo are property of EllisLab Inc はじめてのMercurial/Bitbucket その2 日本CodeIgniterユーザ会 Kenji Suzuki 2011/02/19

はじめてのMercurial/Bitbucket その2

  • Upload
    kenjis

  • View
    1.274

  • Download
    1

Embed Size (px)

DESCRIPTION

「はじめてのMercurial/Bitbucket」の続編。

Citation preview

Page 1: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

はじめてのMercurial/Bitbucket その2

日本CodeIgniterユーザ会Kenji Suzuki

2011/02/19

Page 2: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

目次

Part 1 Mercurialの使い方(3) ~ hgコマンドを使いこなす ~

Part 2 Mercurialの拡張機能

Page 3: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Part 1

Part 1 Mercurialの使い方(3)

hgコマンドを使いこなす

Page 4: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

過去へ戻る方法

作業フォルダのファイルを戻す

➔hg update -C チェンジセット

➔過去のチェンジセットに戻る

➔過去のチェンジセットにupdateしたまま変更をコミットするとヘッドが増える

➔-Cオプションを付けないと、変更されているファイルはマージされる

➔最新に戻るには、hg update

$ hg update -C 1

Page 5: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

過去へ戻る方法

コミット前の変更を取り消す

➔直前のチェンジセットに戻る

➔全てのファイルの変更を取り消す

➔特定ファイルの変更を取り消す

$ hg revert --all

$ hg revert myfile.php

Page 6: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

過去へ戻る方法

コミットした変更を取り消す

➔直前の操作を取り消す

• 取り消せるのは直前の1回だけ

• redoできない

• 作業フォルダは変更されない

• pushしてしまった変更はrollbackしない

• pullも取り消せる

$ hg rollback

Page 7: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

過去へ戻る方法

コミットした変更を取り消す

➔hg backout チェンジセット

➔指定したチェンジセットを打ち消す変更がコミットされる

➔tip以外をbackoutするとヘッドが増えるのでマージする

$ hg backout tip

Page 8: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ファイルの削除

hg remove ファイル名

➔ファイルが作業フォルダから削除される

➔コミットすると管理対象から除外される

➔削除しても過去のチェンジセットのファイルはなくならない

$ hg remove myfile.php

Page 9: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ファイル名の変更/移動

hg rename 変更前 変更後

➔renameとmvは同じ。コマンドの別名

➔コミットして完了

➔hg log -f ファイル名

• -fオプションで変更前の履歴も遡る

$ hg rename myfile.php file.php$ hg mv myfile.php dir/myfile.php

Page 10: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

tagとは?

チェンジセットの別名

➔人が覚えやすいように

タグの付け方

➔hg tag -r チェンジセット -m “コミットメッセージ” タグ名

➔自動的にコミットされる

タグの一覧表示

➔hg tags

$ hg tag -r 3 v1.7.3

Page 11: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ファイルのみの取り出し

svn exportに相当するもの

hg archive

➔アーカイブ形式を指定することもできる

$ hg archive -r 3 ~/mywork.%h

$ hg archive -t zip -r 3 ~/mywork.%r.zip

%h チェンジセットのハッシュIDに置き換わる%r チェンジセットのリビジョン番号に置き換わる

Page 12: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

branchとは?

枝分かれ、独立した開発ライン

➔ソースが分岐すること

➔Mercurialではいろいろなブランチがある

• リポジトリのクローン(cloneコマンド)

• 最もわかりやすい

• 名前なしブランチ

• 複数ヘッド(勝手に分岐)

• 名前付きブランチ(branchコマンド)

Page 13: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

名前付きブランチとは?

名前を付けて意図的に分岐するもの

➔ブランチの一覧表示

➔現在のブランチの表示

➔名前のないブランチ→defaultブランチ

$ hg branches

$ hg branch

Page 14: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

名前付きブランチの使い方

名前付きブランチの作成方法

➔作業フォルダを分岐元チェンジセットにhg updateする

➔ブランチ名を指定する

• ブランチ名に数字のみは使わない

➔コミットする

• コミットしないとブランチは作成されない

$ hg branch test

Page 15: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

名前付きブランチの使い方

名前付きブランチの変更

➔hg update -C ブランチ名

• -Cオプションを付けないと、変更されているファイルはマージされる

• -Cオプションは変更を破棄するので、実行前に未コミットの変更はコミットしておく

$ hg update -C default

Page 16: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

名前付きブランチの使い方

hg update

➔現在のブランチの最新チェンジセットに

hg log -b ブランチ名

➔-bオプションでブランチ名を指定

hg heads ブランチ名

➔該当ブランチのヘッドのみ表示される

Page 17: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

push/pullされるチェンジセットの確認

pullされるチェンジセットの確認

pushされるチェンジセットの確認

$ hg incoming

$ hg outgoing

Page 18: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

パッチファイルの生成

hg export

➔hg export -o 出力ファイル チェンジセット

hg import

➔パッチを取り込むことができる

➔1つずつコミットされる

➔hg import パッチファイル

$ hg export -o ../export.%h 1

Page 19: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Webサーバ機能

hg serve

➔http://localhost:8000/ でリポジトリを閲覧できる

$ hg serve

Page 20: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

コマンドの別名

コマンドが長くて困るという人には

➔commit = ci

➔status = st

➔diff = di

➔update = up

➔rename = mv

➔incoming = in

➔outgoing = out

Page 21: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Part 2

Part 2 Mercurialの拡張機能

Page 22: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

拡張機能

拡張機能(エクステンション)とは?

➔Mercurialに新しいコマンドを追加する機能

➔Mercurialに含まれているエクステンションも多い

Page 23: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

拡張機能

エクステンションを有効にする

➔設定ファイルの[extentions]セクション

➔例

[extensions]graphlog =color =transplant =rebase =bookmarks =mq =

Page 24: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション graphlog

ASCIIアートのグラフログを表示

➔ブランチを視覚的に確認できる

➔hg glog

Page 25: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション color

log, diff, status の表示がカラーに

➔少し見やすくなる

Page 26: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション transplant

一部のチェンジセットだけをマージする

➔特定のチェンジセットのみマージ

➔チェンジセットの範囲指定

➔特定のブランチからマージ

• マージするチェンジセットにyと答える

$ hg transplant 123

$ hg transplant 123:125

$ hg transplant -b test

Page 27: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション rebase

rebaseとは?A B C

L

本家

自分 M N

A B C

L

本家

自分 M N

D E

A B C

L'

本家

自分 M' N'

D E

Page 28: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション rebase

使い方

➔pull時にrebaseする

➔衝突した場合

$ hg pull --rebase

$ hg rebase --continue

$ hg rebase --abort

Page 29: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション bookmarks

ブランチの一種

➔Gitのブランチに似ている

➔名前付きブランチと違い削除できる

➔デフォルトでは同じチェンジセットに付けられたbookmarkは同じように移動するのでGitライクにしたい場合は、設定ファイルに以下を追加

[bookmarks]track.current = True

Page 30: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション bookmarks

bookmarkの一覧表示

bookmarkを付ける

bookmarkの削除

$ hg bookmark test

$ hg bookmark -d test

$ hg bookmarks

Page 31: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション MQ

Mercurial Queue

➔パッチを管理する仕組み

➔リポジトリにコミットせずにいろいろしたい

• コミットすると履歴が永久に残る

• 途中の汚い変更の履歴は必要ない

• 環境依存の情報をコミットしたくない

• サーバの設定情報など

• リポジトリを操作したい

• チェンジセットをまとめたい

Page 32: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

エクステンション Hg-Git

Hg-Git http://hg-git.github.com/

インストール

➔ sudo apt-get install mercurial-git

使い方

[extensions]bookmarks =git =

$ hg clone git://github.com/philsturgeon/ codeigniter-reactor.git

Page 33: はじめてのMercurial/Bitbucket その2

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

参考文献

『入門Mercurial』 藤原克則著, 秀和システム, 2009年

『Mercurial による分散リビジョン管理』http://www.honeyplanet.jp/hgbook.pdf

「Mercurial Wiki」 http://mercurial.selenic.com/wiki/

Mercurial(hg) のコマンド一覧http://d.hatena.ne.jp/Kenji_s/20110203/1296696735