Upgrade to Pro — share decks privately, control downloads, hide ads and more …

はじめてのMercurial/Bitbucket その2

Avatar for kenjis kenjis
October 05, 2011

はじめてのMercurial/Bitbucket その2

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

Avatar for kenjis

kenjis

October 05, 2011
Tweet

More Decks by kenjis

Other Decks in Programming

Transcript

  1. CodeIgniter Users Group in Japan CodeIgniter and its logo are

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

    property of EllisLab Inc 目次  Part 1 Mercurialの使い方(3)  ~ hgコマンドを使いこなす ~  Part 2 Mercurialの拡張機能
  3. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc Part 1 Part 1 Mercurialの使い方(3) hgコマンドを使いこなす
  4. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 過去へ戻る方法  作業フォルダのファイルを戻す ➔hg update -C チェンジセット ➔過去のチェンジセットに戻る ➔過去のチェンジセットにupdateしたまま 変更をコミットするとヘッドが増える ➔-Cオプションを付けないと、変更されてい るファイルはマージされる ➔最新に戻るには、hg update $ hg update -C 1
  5. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 過去へ戻る方法  コミット前の変更を取り消す ➔直前のチェンジセットに戻る ➔全てのファイルの変更を取り消す ➔特定ファイルの変更を取り消す $ hg revert --all $ hg revert myfile.php
  6. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 過去へ戻る方法  コミットした変更を取り消す ➔直前の操作を取り消す • 取り消せるのは直前の1回だけ • redoできない • 作業フォルダは変更されない • pushしてしまった変更はrollbackしな い • pullも取り消せる $ hg rollback
  7. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 過去へ戻る方法  コミットした変更を取り消す ➔hg backout チェンジセット ➔指定したチェンジセットを打ち消す変更が コミットされる ➔tip以外をbackoutするとヘッドが増える のでマージする $ hg backout tip
  8. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc ファイルの削除  hg remove ファイル名 ➔ファイルが作業フォルダから削除される ➔コミットすると管理対象から除外される ➔削除しても過去のチェンジセットのファイ ルはなくならない $ hg remove myfile.php
  9. CodeIgniter Users Group in Japan CodeIgniter 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
  10. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc tagとは?  チェンジセットの別名 ➔人が覚えやすいように  タグの付け方 ➔hg tag -r チェンジセット -m “コミットメッ セージ” タグ名 ➔自動的にコミットされる  タグの一覧表示 ➔hg tags $ hg tag -r 3 v1.7.3
  11. CodeIgniter Users Group in Japan CodeIgniter 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 チェンジセットのリビジョン番号に置き換わる
  12. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc branchとは?  枝分かれ、独立した開発ライン ➔ソースが分岐すること ➔Mercurialではいろいろなブランチがある • リポジトリのクローン(cloneコマンド) • 最もわかりやすい • 名前なしブランチ • 複数ヘッド(勝手に分岐) • 名前付きブランチ(branchコマンド)
  13. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 名前付きブランチとは?  名前を付けて意図的に分岐するもの ➔ブランチの一覧表示 ➔現在のブランチの表示 ➔名前のないブランチ→defaultブランチ $ hg branches $ hg branch
  14. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 名前付きブランチの使い方  名前付きブランチの作成方法 ➔作業フォルダを分岐元チェンジセットに hg updateする ➔ブランチ名を指定する • ブランチ名に数字のみは使わない ➔コミットする • コミットしないとブランチは 作成されない $ hg branch test
  15. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 名前付きブランチの使い方  名前付きブランチの変更 ➔hg update -C ブランチ名 • -Cオプションを付けないと、変更されて いるファイルはマージされる • -Cオプションは変更を破棄するので、 実行前に未コミットの変更はコミットし ておく $ hg update -C default
  16. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 名前付きブランチの使い方  hg update ➔現在のブランチの最新チェンジセットに  hg log -b ブランチ名 ➔-bオプションでブランチ名を指定  hg heads ブランチ名 ➔該当ブランチのヘッドのみ表示される
  17. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc push/pullされるチェンジセットの確認  pullされるチェンジセットの確認  pushされるチェンジセットの確認 $ hg incoming $ hg outgoing
  18. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc パッチファイルの生成  hg export ➔hg export -o 出力ファイル チェンジセッ ト  hg import ➔パッチを取り込むことができる ➔1つずつコミットされる ➔hg import パッチファイル $ hg export -o ../export.%h 1
  19. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc Webサーバ機能  hg serve ➔http://localhost:8000/ でリポジトリを閲覧できる $ hg serve
  20. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc コマンドの別名  コマンドが長くて困るという人には ➔commit = ci ➔status = st ➔diff = di ➔update = up ➔rename = mv ➔incoming = in ➔outgoing = out
  21. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc Part 2 Part 2 Mercurialの拡張機能
  22. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 拡張機能  拡張機能(エクステンション)とは? ➔Mercurialに新しいコマンドを 追加する機能 ➔Mercurialに含まれている エクステンションも多い
  23. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc 拡張機能  エクステンションを有効にする ➔設定ファイルの[extentions]セクション ➔例 [extensions] graphlog = color = transplant = rebase = bookmarks = mq =
  24. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc エクステンション graphlog  ASCIIアートのグラフログを表示 ➔ブランチを視覚的に確認できる ➔hg glog
  25. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc エクステンション color  log, diff, status の表示がカラーに ➔少し見やすくなる
  26. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc エクステンション transplant  一部のチェンジセットだけをマージする ➔特定のチェンジセットのみマージ ➔チェンジセットの範囲指定 ➔特定のブランチからマージ • マージするチェンジセットにyと答える $ hg transplant 123 $ hg transplant 123:125 $ hg transplant -b test
  27. CodeIgniter Users Group in Japan CodeIgniter 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
  28. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc エクステンション rebase  使い方 ➔pull時にrebaseする ➔衝突した場合 $ hg pull --rebase $ hg rebase --continue $ hg rebase --abort
  29. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc エクステンション bookmarks  ブランチの一種 ➔Gitのブランチに似ている ➔名前付きブランチと違い削除できる ➔デフォルトでは同じチェンジセットに付け られたbookmarkは同じように移動する のでGitライクにしたい場合は、設定ファイ ルに以下を追加 [bookmarks] track.current = True
  30. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc エクステンション bookmarks  bookmarkの一覧表示  bookmarkを付ける  bookmarkの削除 $ hg bookmark test $ hg bookmark -d test $ hg bookmarks
  31. CodeIgniter Users Group in Japan CodeIgniter and its logo are

    property of EllisLab Inc エクステンション MQ  Mercurial Queue ➔パッチを管理する仕組み ➔リポジトリにコミットせずにいろいろしたい • コミットすると履歴が永久に残る • 途中の汚い変更の履歴は必要ない • 環境依存の情報をコミットしたくない • サーバの設定情報など • リポジトリを操作したい • チェンジセットをまとめたい
  32. CodeIgniter Users Group in Japan CodeIgniter 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
  33. CodeIgniter Users Group in Japan CodeIgniter 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