ハンズオンその1
Mercurial入門
名古屋アジャイル勉強会 分科会
 開発ツール勉強会 #1 Mercurial入門
                        後半資料




                2011年12月10日(土) You&I
3.Mercurialの使い方

1.   (分散)バージョン管理システムとは
2.   Mercurialとは
3.   Mercurialの使い方(実習)
4.   まとめ
3.Mercurialの使い方
   今回はシンプルに、以下の構成を構築
    し、Mercurialがどのような動作にな
    るのかを体験して頂きます。
    ◦ 中央リポジトリ方式
    ◦ ユーザー2人
3.Mercurialの使い方


      環境の確認
       Mercurialの
      インストール状況
       を確認する。
環境の確認(1/4)
 まずは、ターミナルコンソール・コマ
  ンドプロンプトを起動しましょう。
 以下の指示に従って下さい。
    1. 以下のコマンドを実行
    hg   version
    2. 以下のコマンドを実行
    hg   versio
    3. 以下のコマンドを実行
    hg   vers
環境の確認(2/4)
 このようにMercurialのコマンドは、
  コマンドの省略が可能となります。
 どこまで省略できるかは、似た名前の
  コマンドが存在するか否かで決定され
  ますので、コマンドを実行して覚えま
  しょう。
環境の確認(3/4)
   以下の指示に従って下さい。
    1. 以下のコマンドを実行
    hg   help
    2. 以下のコマンドを実行
    hg   help   |   more
   helpコマンドを実行すると、利用可能
    なコマンドの一覧が確認出来ます。プ
    ラグインを有効にすると、利用可能な
    プラグインも表示されます。
環境の確認(4/4)
   Mercurialのコマンドは、基本的にリ
    ポジトリが存在するフォルダでのみ実
    行が可能なコマンドが殆どです。
    1. 以下のコマンドを実行
    hg   status
3.Mercurialの使い方


  リポジトリの作成
       Mercurialの
        リポジトリ
       を作成する。
リポジトリの作成(1/5)
   リポジトリの作成前に、まず今回の勉
    強会用の作業フォルダを作成します。
    1. 以下のコマンドを実行
    mkdir   C:¥TEMP¥758agile¥handson1 (Windows)
    mkdir   –p ~/758agile/handson1 (Linux/Mac)
    2. 以下のコマンドを実行
    cd   "1の手順のパス"
リポジトリの作成(2/5)
   リポジトリを作成する
    1. 以下のコマンドを実行
    hg   init    repos
    2. 以下のコマンドを実行
    cd   repos
    3. 以下のコマンドを実行
    dir             (Windows)
    ls -la          (Linux/Mac)
リポジトリの作成(3/5)
   リポジトリのある場所でコマンドを実
    行する
    1. 以下のコマンドを実行
    hg   status
    hg   st
    2. 以下のコマンドを実行
    hg   summary
    hg   sum
リポジトリの作成(4/5)
 リポジトリの作成はinitコマンドを実
  行するだけで可能。
 各コマンドの詳細情報はhelpコマンド
  で調べられます。
    1. 以下のコマンドを実行
    hg   help   init
リポジトリの作成(5/5)
   フォルダ構成の確認
    ◦ ~/758agile
      handson1
       repos
         .hg
3.Mercurialの使い方


  リポジトリの複製
      リポジトリを複製し
     自分の作業スペースを
        用意する。
リポジトリの複製(1/4)
   リポジトリを複製するに辺り、作業場
    所を移動する。
    1. 以下のコマンドを実行
    cd   C:¥TEMP¥758agile¥handson1 (Windows)
    cd   ~/758agile/handson1 (Linux/Mac)
リポジトリの複製(2/4)
   リポジトリを複製する。
    1. 以下のコマンドを実行
    hg   clone   .¥repos myself (Windows)
    hg   clone   ./repos myself (Linux/Mac)
    2. 以下のコマンドを実行
    hg   clone   .¥repos other (Windows)
    hg   clone   ./repos other (Linux/Mac)
リポジトリの複製(3/4)
   リポジトリを複製する。
    3. 以下のファイルをエディタで開く
    notepad .¥other¥.hg¥hgrc (Windows)
    vi ./other/.hg/hgrc (Linux/Mac)
    4. 以下の内容を追記する
    [ui]
    username = other
リポジトリの複製(4/4)
   フォルダ構成の確認
    ◦ 758agile
      handson1
        repos    ・・・共有リポジトリ
          .hg
        myself   ・・・自分用リポジトリ
          .hg
        other    ・・・他人のリポジトリ
          .hg    ・・・このリポジトリへの変更はother
                     ユーザー固定
3.Mercurialの使い方


     ユーザー設定
       Mercurialの
      利用ユーザー毎の
       設定を行う。
ユーザー設定(1/3)
 一般的なバージョン管理システムでは
  コミットを行う際に、ユーザー情報の
  入力が必要になります。
 最近のバージョン管理システムでは、
  設定ファイルにて、ユーザー情報を指
  定しておく事で、コミット時にその設
  定情報が自動的にリポジトリへと登録
  されます。
ユーザー設定(2/3)
   Windowsの場合
    ◦ エクスプローラーを使い、Mercurialのイ
      ンストール先(C:¥Program
      Files¥Mercurial)から「Mercurial.ini」
      を「%USERPROFILE%」にコピーする。
   Linux/Macの場合
    1. 以下のコマンドを実行
     touch   ~/.hgrc
ユーザー設定(3/3)
   [ui]セクションに以下の行を追加する。
    メモ帳or vi/emacs等を利用します。
    [ui]
    username = 皆さんのお名前 <e-mail>
   Linux/Macの場合manコマンドでファイ
    ルのフォーマットの仕様が確認出来ま
    す。
    1. 以下のコマンドを実行
    man   hgrc
3.Mercurialの使い方

      ファイルの
      追加・解除
       リポジトリに
     ファイルやフォルダの
      追加・解除を行う。
ファイルの追加・解除(1/4)
   作業場所を移動する。
    1. 以下のコマンドを実行
    cd C:¥TEMP¥758agile¥handson1¥myself
     (Windows)
    cd ~/758agile/handson1/myself (Linux/Mac)
    2. 「aaa.txt」というファイルを作成する
    echo    hogehoge   >   aaa.txt
    3. 以下のコマンドを実行
    hg     status
    hg     st
ファイルの追加・解除(2/4)
   ファイルをリポジトリの管理下に置い
    たり、解除したりする。
    1. 以下のコマンドを実行
    hg   add   aaa.txt
    hg   st
    2. 以下のコマンドを実行
    hg   forget   aaa.txt
    hg   st
ファイルの追加・解除(3/4)
   hgのコマンドは単色表示なので分かり
    にくい。拡張機能を有効にして見やす
    くする。
    1. 以下のファイルをエディタで開く
    notepad %USERPROFILE%¥Mercurial.ini
     (Windows)
    vi ~/.hgrc (Linux/Mac)
ファイルの追加・解除(4/4)
   hgのコマンドは単色表示なので分かり
    にくい。拡張機能を有効にして見やす
    くする。
    2. [extensions]セクションに以下の行を
       追加又はセミコロン(;)を削除して有効
       化する。
      [extensions]
      color =
      [color]
      mode = win32   (Windows)
      mode = ansi    (Linux/Mac)
3.Mercurialの使い方

     ファイルの
    コミット・削除
       リポジトリに
       ファイルを
     設定・設定解除する。
ファイルのコミット・削除(1/5)
   ファイルをリポジトリにコミットする。
    1. 以下のコマンドを実行
    hg     add aaa.txt         :リポジトリの管理下に
    hg     st                  :変更ファイルの確認
    hg     commit              :変更分をコミット
    2. 「aaa.txt」の内容を変更する
    echo        ageage   >>   aaa.txt
    3. 以下のコマンドを実行
    hg     st                  :変更ファイルの確認
    hg     ci                  :変更分をコミット
ファイルのコミット・削除(2/5)
   リポジトリのファイル削除
    1. 「bbb.txt」というファイルを作成する
     echo    hogehoge   >   bbb.txt
    2. 以下のコマンドを実行
     hg     add   bbb.txt
     hg     ci
    3. 以下のコマンドを実行
     hg     remove   bbb.txt :リポジトリのファイル
                              削除
     hg     ci
ファイルのコミット・削除(3/5)
   リポジトリのファイルの移動
    1. 「ccc.txt」というファイルを作成する
     echo    hogehoge   >   ccc.txt
    2. 以下のコマンドを実行
     hg     add   ccc.txt
     hg     ci
    3. 以下のコマンドを実行
     hg rename ccc.txt        dir¥ddd.txt   (Windows)
     hg rename ccc.txt        dir/ddd.txt
      (Linux/Mac)
     hg ci
ファイルのコミット・削除(4/5)
   ファイル操作の確認
    1. 「eee.txt」というファイルを作成する
    echo    hogehoge   >   eee.txt
    2. 以下のコマンドを実行
     hg    add   eee.txt
     hg    ci
    3. 以下のコマンドを実行
     del /F eee.txt (Windows)
     rm –f eee.txt (Linux/Mac)
ファイルのコミット・削除(5/5)
   ファイル操作で削除したファイルをリ
    ポジトリの内容で復活させる
    1. 以下のコマンドを実行
    hg   update   -C   -r   tip
    2. 以下のコマンドを実行
    dir   (Windows)
    ls -l (Linux/Mac)
3.Mercurialの使い方

    他のリポジトリ
      との同期
      他のリポジトリ
       と同期して
    変更内容を送受信する。
他のリポジトリと同期(1/15)
   フォルダ構成の確認
    ◦ 758agile
      handson1
        repos    ・・・共有リポジトリ
          .hg
        myself   ・・・自分用リポジトリ
          .hg
        other    ・・・他人のリポジトリ
          .hg
他のリポジトリと同期(2/15)
   Diffツールの設定
    1. 以下のファイルをエディタで開く
    notepad %USERPROFILE%¥Mercurial.ini
     (Windows)
    vi ~/.hgrc (Linux/Mac)
    2. 以下の内容を追記する
    [extdiff]
    cmd.winmerge = "C:¥Program
       Files¥WinMerge¥WinMergeU.exe" (Windows)
    cmd.vimdiff = vimdiff (Linux/Mac)
他のリポジトリと同期(3/15)
   Diffツールの設定
    3. 以下の内容を修正する (Windows)
    [merge-tools]
    winmerge.args=/e /x /wl /ub /dl other /dr
       local $other $output $local
    4. 以下の内容を追記する (Linux/Mac)
    [merge-tools]
    vimdiff.args=$local $other $base
    vimdiff.priority=-10
他のリポジトリと同期(4/15)
   これまでの修正内容を確認する。
    1. 以下のコマンドを実行
    hg   log
    hg   log   -l   3
    2. 以下のコマンドを実行
    hg   summary
    hg   sum
他のリポジトリと同期(5/15)
   myselfフォルダの変更内容を共有リポ
    ジトリにpushする。
    1. 以下のコマンドを実行
    hg   outgoing
    hg   out
    2. 以下のコマンドを実行
    hg   push
他のリポジトリと同期(6/15)
   reposフォルダの共有リポジトリの状
    態を確認する。
    1. 新規にターミナルコンソールを起動する
    2. 以下のコマンドを実行
    cd C:¥TEMP¥758agile¥handson1¥repos
     (Windows)
    cd ~/758agile/handson1/repos (Linux/Mac)
    3. 以下のコマンドを実行
    hg   log
他のリポジトリと同期(7/15)
   otherフォルダで共有リポジトリと同
    期する。
    1. 新規にターミナルコンソールを起動する
    2. 以下のコマンドを実行
    cd C:¥TEMP¥758agile¥handson1¥other
     (Windows)
    cd ~/758agile/handson1/other (Linux/Mac)
    3. 以下のコマンドを実行
    hg   log
他のリポジトリと同期(8/15)
   otherフォルダで共有リポジトリと同
    期する。
    5. 以下のコマンドを実行
    hg   incoming
    hg   in
    6. 以下のコマンドを実行
    hg   pull
    hg   update
    hg   pul
他のリポジトリと同期(9/15)
   otherフォルダで変更を行う。
    1. 「123.txt」というファイルを作成する
    echo   hogehoge   >   123.txt
    2. 以下のコマンドを実行
    hg   add 123.txt
    hg   diff             :変更内容を確認する
    hg   diff | more
他のリポジトリと同期(10/15)
   otherフォルダで変更を行う。
    3. 以下のコマンドを実行
    hg   ci
    hg   in
    hg   out
    hg   push
他のリポジトリと同期(11/15)
   otherフォルダの変更をmyselfフォル
    ダに取り込む。
    1. 「aaa.txt」を変更する
    echo    magemage   >>    aaa.txt
    2. 「fff.txt」というファイルを作成する
    echo    hogehoge   >    fff.txt
    3. 以下のコマンドを実行
     hg    add   fff.txt    :まだコミットしない
他のリポジトリと同期(12/15)
   otherフォルダの変更をmyselfフォル
    ダに取り込む。
    4. 以下のコマンドを実行
    hg   in
    hg   pull
    hg   up
    5. 以下のコマンドを実行
    hg   ci
    hg   push
他のリポジトリと同期(13/15)
   myselfフォルダの変更をotherフォル
    ダに取り込む。(マージ)
    1. 「aaa.txt」を変更する
    echo    mogmog   >   aaa.txt
    2. 以下のコマンドを実行
     hg    st
     hg    in
     hg    pull
他のリポジトリと同期(14/15)
   myselfフォルダの変更をotherフォル
    ダに取り込む。(マージ)
    3. 以下のコマンドを実行
    hg   up      (変更内容によってはエラー)
    hg   merge   (変更内容によっては不要)
    hg   ci
    hg   push
他のリポジトリと同期(15/15)
 自分のローカルで未コミットのファイ
  ルがある状態でmerge/updateコマンド
  を実行するのは止めた方が良いです。
 分散バージョン管理の利点の1つとし
  て、自分の変更分のコミットと、他人
  の成果のマージのコミットが分離され
  る事にあると思います。
3.Mercurialの使い方



      変更を戻す
      リポジトリへの
    変更なかった事にする。
変更を戻す(1/4)
   revertコマンドでコミット前のファイ
    ルを元に戻す。
    1. 「fff.txt」を更新する
    echo   ageage   >>   fff.txt
    2. 以下のコマンドを実行する
    hg revert fff.txt
    more < fff.txt
変更を戻す(2/4)
   rollbackコマンドで過去一回分のコ
    ミットを戻す。
    1. 「fff.txt」を更新する
    echo     ageage   >>   fff.txt
    2. 以下のコマンドを実行する
    hg     ci
    hg     sum
    3. 以下のコマンドを実行する
    hg rollback
    more < fff.txt
変更を戻す(3/4)
   rollbackコマンドで過去一回分のコ
    ミットを戻す。
    4. 以下のコマンドを実行する
    hg   sum
    hg   rollback
変更を戻す(4/4)
   backoutコマンドで指定したコミット
    を打ち消す変更を行う。
    1. 「fff.txt」を更新する
    echo     ageage    >>   fff.txt
    2. 以下のコマンドを実行する
    hg     ci
    hg     sum
    3. 以下のコマンドを実行する
    hg     backout    --merge   -r    [2のコミット番号]
    hg     ci
3.Mercurialの使い方



    変更履歴を確認
       リポジトリの
     変更履歴を確認する。
変更履歴を確認する(1/5)
   myselfフォルダで変更する。
    1. 「bbb.txt」を変更する
    echo    myself   >>   bbb.txt
    2. 以下のコマンドを実行
     hg    ci
     hg    push
変更履歴を確認する(2/5)
   myselfフォルダで変更を取り込む前に
    otherで変更する。
    1. 「eee.txt」を変更する
    echo    other   >>   eee.txt
    2. 以下のコマンドを実行
     hg    ci
     hg    push
     hg    pul
     hg    push
変更履歴を確認する(3/5)
   変更履歴をグラフィカルに行う
    1. 以下のファイルをエディタで開く
    notepad %USERPROFILE%¥Mercurial.ini
     (Windows)
    vi ~/.hgrc (Linux/Mac)
    2. 以下の内容を追記する
    [extensions]
    graphlog =
    3. 以下のコマンドを実行
    hg glog
変更履歴を確認する(4/5)
   コマンドのデフォルト値の設定
    1. 以下のファイルをエディタで開く
    notepad %USERPROFILE%¥Mercurial.ini
     (Windows)
    vi ~/.hgrc (Linux/Mac)
    2. 以下の内容を追記する
    [defaults]
    glog = -l 3
    3. 以下のコマンドを実行
    hg   glog
変更履歴を確認する(5/5)
   ファイル内で行単位で過去のコミット
    の状態を表示する
    1. 以下のコマンドを実行
    hg   annotate   aaa.txt
3.Mercurialの使い方



指定リビジョンに移動
       リポジトリの中
        を移動する。
指定リビジョンに移動(2/2)
   過去のコミットの状態に移動する
    1. 以下のコマンドを実行
    hg   glog
    2. 以下のコマンドを実行
    hg   up -clean   -r   [リビジョン番号]
    hg   glog
    hg   sum
指定リビジョンに移動(2/2)
   過去のコミットの状態に移動する
    1. 「bbb.txt」を変更する
    echo    myself      >>   bbb.txt
    2. 以下のコマンドを実行
     hg    ci
     hg    glog
    3. 以下のコマンドを実行
     hg    merge   -r    [もう一つの分岐先]
     hg    glog
3.Mercurialの使い方


       タグ付け
       リポジトリの
       ある位置に
      タグを付与する。
タグ付け
   tagコマンドを利用する事である時点
    のコミットに名前を付ける事が可能に
    なります。
    1. 以下のコマンドを実行
    hg   tag [タグラベル]
    hg   tags
   tagコマンドの使い所としては、バー
    ジョンの区切りを示すのに使ったりし
    ます。
3.Mercurialの使い方



     エクスポート
      リポジトリの内容
     をファイル出力する。
エクスポート(1/1)
   myselfの内容をZIP書庫に出力する
    1. 以下のコマンドを実行(例:リポジトリ
       全部)
     hg archive -r tip        -t
      zip ../export.zip
    2. 以下のコマンドを実行(例:dddフォルダ
       のみ)
     hg     archive -r tip -t      zip
          ../export.zip -I ./ddd
3.Mercurialの使い方

1.   (分散)バージョン管理システムとは
2.   Mercurialとは
3.   Mercurialの使い方(実習)
4.   まとめ
4.まとめ(1/2)
 一連の動作を実際に確かめてみて如何
  でしたでしょうか?
 今回は本当に初歩の部分しかやらな
  かったので、現場で導入する場合には、
  共有リポジトリは別PCとなるのでどの
  ように設定すべきなのか、という問題
  があります。
 まずは自分の環境のみでコツコツ使っ
  てみましょう。
4.まとめ(2/2)
 今回色々とextensionも利用しながら
  ハンズオンを行いました。
 次なるステップとしては、rebaseや
  bookmarkといったextensionを使いこ
  なす事で、共有リポジトリを見やすい
  状態に保つ事にチャレンジしてみま
  しょう。

Mercurial入門(後半)

  • 1.
  • 2.
    3.Mercurialの使い方 1. (分散)バージョン管理システムとは 2. Mercurialとは 3. Mercurialの使い方(実習) 4. まとめ
  • 3.
    3.Mercurialの使い方  今回はシンプルに、以下の構成を構築 し、Mercurialがどのような動作にな るのかを体験して頂きます。 ◦ 中央リポジトリ方式 ◦ ユーザー2人
  • 4.
    3.Mercurialの使い方 環境の確認 Mercurialの インストール状況 を確認する。
  • 5.
    環境の確認(1/4)  まずは、ターミナルコンソール・コマ ンドプロンプトを起動しましょう。  以下の指示に従って下さい。 1. 以下のコマンドを実行 hg version 2. 以下のコマンドを実行 hg versio 3. 以下のコマンドを実行 hg vers
  • 6.
    環境の確認(2/4)  このようにMercurialのコマンドは、 コマンドの省略が可能となります。  どこまで省略できるかは、似た名前の コマンドが存在するか否かで決定され ますので、コマンドを実行して覚えま しょう。
  • 7.
    環境の確認(3/4)  以下の指示に従って下さい。 1. 以下のコマンドを実行 hg help 2. 以下のコマンドを実行 hg help | more  helpコマンドを実行すると、利用可能 なコマンドの一覧が確認出来ます。プ ラグインを有効にすると、利用可能な プラグインも表示されます。
  • 8.
    環境の確認(4/4)  Mercurialのコマンドは、基本的にリ ポジトリが存在するフォルダでのみ実 行が可能なコマンドが殆どです。 1. 以下のコマンドを実行 hg status
  • 9.
    3.Mercurialの使い方 リポジトリの作成 Mercurialの リポジトリ を作成する。
  • 10.
    リポジトリの作成(1/5)  リポジトリの作成前に、まず今回の勉 強会用の作業フォルダを作成します。 1. 以下のコマンドを実行 mkdir C:¥TEMP¥758agile¥handson1 (Windows) mkdir –p ~/758agile/handson1 (Linux/Mac) 2. 以下のコマンドを実行 cd "1の手順のパス"
  • 11.
    リポジトリの作成(2/5)  リポジトリを作成する 1. 以下のコマンドを実行 hg init repos 2. 以下のコマンドを実行 cd repos 3. 以下のコマンドを実行 dir (Windows) ls -la (Linux/Mac)
  • 12.
    リポジトリの作成(3/5)  リポジトリのある場所でコマンドを実 行する 1. 以下のコマンドを実行 hg status hg st 2. 以下のコマンドを実行 hg summary hg sum
  • 13.
    リポジトリの作成(4/5)  リポジトリの作成はinitコマンドを実 行するだけで可能。  各コマンドの詳細情報はhelpコマンド で調べられます。 1. 以下のコマンドを実行 hg help init
  • 14.
    リポジトリの作成(5/5)  フォルダ構成の確認 ◦ ~/758agile  handson1  repos  .hg
  • 15.
    3.Mercurialの使い方 リポジトリの複製 リポジトリを複製し 自分の作業スペースを 用意する。
  • 16.
    リポジトリの複製(1/4)  リポジトリを複製するに辺り、作業場 所を移動する。 1. 以下のコマンドを実行 cd C:¥TEMP¥758agile¥handson1 (Windows) cd ~/758agile/handson1 (Linux/Mac)
  • 17.
    リポジトリの複製(2/4)  リポジトリを複製する。 1. 以下のコマンドを実行 hg clone .¥repos myself (Windows) hg clone ./repos myself (Linux/Mac) 2. 以下のコマンドを実行 hg clone .¥repos other (Windows) hg clone ./repos other (Linux/Mac)
  • 18.
    リポジトリの複製(3/4)  リポジトリを複製する。 3. 以下のファイルをエディタで開く notepad .¥other¥.hg¥hgrc (Windows) vi ./other/.hg/hgrc (Linux/Mac) 4. 以下の内容を追記する [ui] username = other
  • 19.
    リポジトリの複製(4/4)  フォルダ構成の確認 ◦ 758agile  handson1  repos ・・・共有リポジトリ  .hg  myself ・・・自分用リポジトリ  .hg  other ・・・他人のリポジトリ  .hg ・・・このリポジトリへの変更はother ユーザー固定
  • 20.
    3.Mercurialの使い方 ユーザー設定 Mercurialの 利用ユーザー毎の 設定を行う。
  • 21.
    ユーザー設定(1/3)  一般的なバージョン管理システムでは コミットを行う際に、ユーザー情報の 入力が必要になります。  最近のバージョン管理システムでは、 設定ファイルにて、ユーザー情報を指 定しておく事で、コミット時にその設 定情報が自動的にリポジトリへと登録 されます。
  • 22.
    ユーザー設定(2/3)  Windowsの場合 ◦ エクスプローラーを使い、Mercurialのイ ンストール先(C:¥Program Files¥Mercurial)から「Mercurial.ini」 を「%USERPROFILE%」にコピーする。  Linux/Macの場合 1. 以下のコマンドを実行 touch ~/.hgrc
  • 23.
    ユーザー設定(3/3)  [ui]セクションに以下の行を追加する。 メモ帳or vi/emacs等を利用します。 [ui] username = 皆さんのお名前 <e-mail>  Linux/Macの場合manコマンドでファイ ルのフォーマットの仕様が確認出来ま す。 1. 以下のコマンドを実行 man hgrc
  • 24.
    3.Mercurialの使い方 ファイルの 追加・解除 リポジトリに ファイルやフォルダの 追加・解除を行う。
  • 25.
    ファイルの追加・解除(1/4)  作業場所を移動する。 1. 以下のコマンドを実行 cd C:¥TEMP¥758agile¥handson1¥myself (Windows) cd ~/758agile/handson1/myself (Linux/Mac) 2. 「aaa.txt」というファイルを作成する echo hogehoge > aaa.txt 3. 以下のコマンドを実行 hg status hg st
  • 26.
    ファイルの追加・解除(2/4)  ファイルをリポジトリの管理下に置い たり、解除したりする。 1. 以下のコマンドを実行 hg add aaa.txt hg st 2. 以下のコマンドを実行 hg forget aaa.txt hg st
  • 27.
    ファイルの追加・解除(3/4)  hgのコマンドは単色表示なので分かり にくい。拡張機能を有効にして見やす くする。 1. 以下のファイルをエディタで開く notepad %USERPROFILE%¥Mercurial.ini (Windows) vi ~/.hgrc (Linux/Mac)
  • 28.
    ファイルの追加・解除(4/4)  hgのコマンドは単色表示なので分かり にくい。拡張機能を有効にして見やす くする。 2. [extensions]セクションに以下の行を 追加又はセミコロン(;)を削除して有効 化する。 [extensions] color = [color] mode = win32 (Windows) mode = ansi (Linux/Mac)
  • 29.
    3.Mercurialの使い方 ファイルの コミット・削除 リポジトリに ファイルを 設定・設定解除する。
  • 30.
    ファイルのコミット・削除(1/5)  ファイルをリポジトリにコミットする。 1. 以下のコマンドを実行 hg add aaa.txt :リポジトリの管理下に hg st :変更ファイルの確認 hg commit :変更分をコミット 2. 「aaa.txt」の内容を変更する echo ageage >> aaa.txt 3. 以下のコマンドを実行 hg st :変更ファイルの確認 hg ci :変更分をコミット
  • 31.
    ファイルのコミット・削除(2/5)  リポジトリのファイル削除 1. 「bbb.txt」というファイルを作成する echo hogehoge > bbb.txt 2. 以下のコマンドを実行 hg add bbb.txt hg ci 3. 以下のコマンドを実行 hg remove bbb.txt :リポジトリのファイル 削除 hg ci
  • 32.
    ファイルのコミット・削除(3/5)  リポジトリのファイルの移動 1. 「ccc.txt」というファイルを作成する echo hogehoge > ccc.txt 2. 以下のコマンドを実行 hg add ccc.txt hg ci 3. 以下のコマンドを実行 hg rename ccc.txt dir¥ddd.txt (Windows) hg rename ccc.txt dir/ddd.txt (Linux/Mac) hg ci
  • 33.
    ファイルのコミット・削除(4/5)  ファイル操作の確認 1. 「eee.txt」というファイルを作成する echo hogehoge > eee.txt 2. 以下のコマンドを実行 hg add eee.txt hg ci 3. 以下のコマンドを実行 del /F eee.txt (Windows) rm –f eee.txt (Linux/Mac)
  • 34.
    ファイルのコミット・削除(5/5)  ファイル操作で削除したファイルをリ ポジトリの内容で復活させる 1. 以下のコマンドを実行 hg update -C -r tip 2. 以下のコマンドを実行 dir (Windows) ls -l (Linux/Mac)
  • 35.
    3.Mercurialの使い方 他のリポジトリ との同期 他のリポジトリ と同期して 変更内容を送受信する。
  • 36.
    他のリポジトリと同期(1/15)  フォルダ構成の確認 ◦ 758agile  handson1  repos ・・・共有リポジトリ  .hg  myself ・・・自分用リポジトリ  .hg  other ・・・他人のリポジトリ  .hg
  • 37.
    他のリポジトリと同期(2/15)  Diffツールの設定 1. 以下のファイルをエディタで開く notepad %USERPROFILE%¥Mercurial.ini (Windows) vi ~/.hgrc (Linux/Mac) 2. 以下の内容を追記する [extdiff] cmd.winmerge = "C:¥Program Files¥WinMerge¥WinMergeU.exe" (Windows) cmd.vimdiff = vimdiff (Linux/Mac)
  • 38.
    他のリポジトリと同期(3/15)  Diffツールの設定 3. 以下の内容を修正する (Windows) [merge-tools] winmerge.args=/e /x /wl /ub /dl other /dr local $other $output $local 4. 以下の内容を追記する (Linux/Mac) [merge-tools] vimdiff.args=$local $other $base vimdiff.priority=-10
  • 39.
    他のリポジトリと同期(4/15)  これまでの修正内容を確認する。 1. 以下のコマンドを実行 hg log hg log -l 3 2. 以下のコマンドを実行 hg summary hg sum
  • 40.
    他のリポジトリと同期(5/15)  myselfフォルダの変更内容を共有リポ ジトリにpushする。 1. 以下のコマンドを実行 hg outgoing hg out 2. 以下のコマンドを実行 hg push
  • 41.
    他のリポジトリと同期(6/15)  reposフォルダの共有リポジトリの状 態を確認する。 1. 新規にターミナルコンソールを起動する 2. 以下のコマンドを実行 cd C:¥TEMP¥758agile¥handson1¥repos (Windows) cd ~/758agile/handson1/repos (Linux/Mac) 3. 以下のコマンドを実行 hg log
  • 42.
    他のリポジトリと同期(7/15)  otherフォルダで共有リポジトリと同 期する。 1. 新規にターミナルコンソールを起動する 2. 以下のコマンドを実行 cd C:¥TEMP¥758agile¥handson1¥other (Windows) cd ~/758agile/handson1/other (Linux/Mac) 3. 以下のコマンドを実行 hg log
  • 43.
    他のリポジトリと同期(8/15)  otherフォルダで共有リポジトリと同 期する。 5. 以下のコマンドを実行 hg incoming hg in 6. 以下のコマンドを実行 hg pull hg update hg pul
  • 44.
    他のリポジトリと同期(9/15)  otherフォルダで変更を行う。 1. 「123.txt」というファイルを作成する echo hogehoge > 123.txt 2. 以下のコマンドを実行 hg add 123.txt hg diff :変更内容を確認する hg diff | more
  • 45.
    他のリポジトリと同期(10/15)  otherフォルダで変更を行う。 3. 以下のコマンドを実行 hg ci hg in hg out hg push
  • 46.
    他のリポジトリと同期(11/15)  otherフォルダの変更をmyselfフォル ダに取り込む。 1. 「aaa.txt」を変更する echo magemage >> aaa.txt 2. 「fff.txt」というファイルを作成する echo hogehoge > fff.txt 3. 以下のコマンドを実行 hg add fff.txt :まだコミットしない
  • 47.
    他のリポジトリと同期(12/15)  otherフォルダの変更をmyselfフォル ダに取り込む。 4. 以下のコマンドを実行 hg in hg pull hg up 5. 以下のコマンドを実行 hg ci hg push
  • 48.
    他のリポジトリと同期(13/15)  myselfフォルダの変更をotherフォル ダに取り込む。(マージ) 1. 「aaa.txt」を変更する echo mogmog > aaa.txt 2. 以下のコマンドを実行 hg st hg in hg pull
  • 49.
    他のリポジトリと同期(14/15)  myselfフォルダの変更をotherフォル ダに取り込む。(マージ) 3. 以下のコマンドを実行 hg up (変更内容によってはエラー) hg merge (変更内容によっては不要) hg ci hg push
  • 50.
    他のリポジトリと同期(15/15)  自分のローカルで未コミットのファイ ルがある状態でmerge/updateコマンド を実行するのは止めた方が良いです。  分散バージョン管理の利点の1つとし て、自分の変更分のコミットと、他人 の成果のマージのコミットが分離され る事にあると思います。
  • 51.
    3.Mercurialの使い方 変更を戻す リポジトリへの 変更なかった事にする。
  • 52.
    変更を戻す(1/4)  revertコマンドでコミット前のファイ ルを元に戻す。 1. 「fff.txt」を更新する echo ageage >> fff.txt 2. 以下のコマンドを実行する hg revert fff.txt more < fff.txt
  • 53.
    変更を戻す(2/4)  rollbackコマンドで過去一回分のコ ミットを戻す。 1. 「fff.txt」を更新する echo ageage >> fff.txt 2. 以下のコマンドを実行する hg ci hg sum 3. 以下のコマンドを実行する hg rollback more < fff.txt
  • 54.
    変更を戻す(3/4)  rollbackコマンドで過去一回分のコ ミットを戻す。 4. 以下のコマンドを実行する hg sum hg rollback
  • 55.
    変更を戻す(4/4)  backoutコマンドで指定したコミット を打ち消す変更を行う。 1. 「fff.txt」を更新する echo ageage >> fff.txt 2. 以下のコマンドを実行する hg ci hg sum 3. 以下のコマンドを実行する hg backout --merge -r [2のコミット番号] hg ci
  • 56.
    3.Mercurialの使い方 変更履歴を確認 リポジトリの 変更履歴を確認する。
  • 57.
    変更履歴を確認する(1/5)  myselfフォルダで変更する。 1. 「bbb.txt」を変更する echo myself >> bbb.txt 2. 以下のコマンドを実行 hg ci hg push
  • 58.
    変更履歴を確認する(2/5)  myselfフォルダで変更を取り込む前に otherで変更する。 1. 「eee.txt」を変更する echo other >> eee.txt 2. 以下のコマンドを実行 hg ci hg push hg pul hg push
  • 59.
    変更履歴を確認する(3/5)  変更履歴をグラフィカルに行う 1. 以下のファイルをエディタで開く notepad %USERPROFILE%¥Mercurial.ini (Windows) vi ~/.hgrc (Linux/Mac) 2. 以下の内容を追記する [extensions] graphlog = 3. 以下のコマンドを実行 hg glog
  • 60.
    変更履歴を確認する(4/5)  コマンドのデフォルト値の設定 1. 以下のファイルをエディタで開く notepad %USERPROFILE%¥Mercurial.ini (Windows) vi ~/.hgrc (Linux/Mac) 2. 以下の内容を追記する [defaults] glog = -l 3 3. 以下のコマンドを実行 hg glog
  • 61.
    変更履歴を確認する(5/5)  ファイル内で行単位で過去のコミット の状態を表示する 1. 以下のコマンドを実行 hg annotate aaa.txt
  • 62.
    3.Mercurialの使い方 指定リビジョンに移動 リポジトリの中 を移動する。
  • 63.
    指定リビジョンに移動(2/2)  過去のコミットの状態に移動する 1. 以下のコマンドを実行 hg glog 2. 以下のコマンドを実行 hg up -clean -r [リビジョン番号] hg glog hg sum
  • 64.
    指定リビジョンに移動(2/2)  過去のコミットの状態に移動する 1. 「bbb.txt」を変更する echo myself >> bbb.txt 2. 以下のコマンドを実行 hg ci hg glog 3. 以下のコマンドを実行 hg merge -r [もう一つの分岐先] hg glog
  • 65.
    3.Mercurialの使い方 タグ付け リポジトリの ある位置に タグを付与する。
  • 66.
    タグ付け  tagコマンドを利用する事である時点 のコミットに名前を付ける事が可能に なります。 1. 以下のコマンドを実行 hg tag [タグラベル] hg tags  tagコマンドの使い所としては、バー ジョンの区切りを示すのに使ったりし ます。
  • 67.
    3.Mercurialの使い方 エクスポート リポジトリの内容 をファイル出力する。
  • 68.
    エクスポート(1/1)  myselfの内容をZIP書庫に出力する 1. 以下のコマンドを実行(例:リポジトリ 全部) hg archive -r tip -t zip ../export.zip 2. 以下のコマンドを実行(例:dddフォルダ のみ) hg archive -r tip -t zip ../export.zip -I ./ddd
  • 69.
    3.Mercurialの使い方 1. (分散)バージョン管理システムとは 2. Mercurialとは 3. Mercurialの使い方(実習) 4. まとめ
  • 70.
    4.まとめ(1/2)  一連の動作を実際に確かめてみて如何 でしたでしょうか?  今回は本当に初歩の部分しかやらな かったので、現場で導入する場合には、 共有リポジトリは別PCとなるのでどの ように設定すべきなのか、という問題 があります。  まずは自分の環境のみでコツコツ使っ てみましょう。
  • 71.
    4.まとめ(2/2)  今回色々とextensionも利用しながら ハンズオンを行いました。  次なるステップとしては、rebaseや bookmarkといったextensionを使いこ なす事で、共有リポジトリを見やすい 状態に保つ事にチャレンジしてみま しょう。