Mercurialのバンドルファイルを扱う #mercurialjp
このエントリは Mercuiral Advent Calendar 2012 の9日目です。
Mercurialで扱えるバイナリ形式の差分ファイル、バンドルファイルについて簡単に説明したいと思います。
バンドルファイルを作る
ローカルリポジトリにあるリビジョンをバンドルファイルにする場合は hg bundle
コマンドを利用します。
# リモートリポジトリに存在しないリビジョンをバンドルファイルにする hg bundle <出力ファイル> # REVISIONより新しいリビジョンをバンドルファイルにする hg bundle --base <REVISION> <出力ファイル>
リモートリポジトリにあるリビジョンをバンドルファイルにする場合は hg incoming
を利用します。*1
# リモートリポジトリにのみ存在するリビジョンをバンドルファイルにする hg incoming --bundle <出力ファイル>
バックアップバンドル
hg strip
で履歴を削除したり hg rebase
など履歴改変を行うとバックアップバンドルが作成されます。
このバックアップバンドルは、リポジトリ内の次の場所に作成されます。
<リポジトリルート>/.hg/strip-backup
バックアップバンドルの中身を調べる
バンドルファイルはバイナリファイルなので、less
やエディタで開いても中身が読めません。
hg incoming
の引数にはリポジトリのURL以外にバンドルファイルを指定出来ます。これを使って中身を調べることができます。
# コミットログを見る hg incoming <バンドルファイル> # 変更内容を見る hg incoming --patch <バンドルファイル>
バンドルファイルを取り込む。
次のどちらかのコマンドで取り込めます。
hg unbundle <バンドルファイル> hg pull <バンドルファイル>
間違ったリビジョンを hg strip
してしまったときなどに利用して下さい。
*1:SCMBC in Tokyo 3 でこのコマンドでバンドルファイルの中身を閲覧できると、間違った情報を伝えてしまいました。申し訳ありません。