特別なブックマーク bookmark('@') #mercurialjp
このエントリは Mercuiral Advent Calendar 2012 の21日目です。
id:flying-foozy さんからアンドキュメンテッドなMercurialの仕様を教えていただいたのでそのことをネタにします。
bookmark('@')
最近Mercurialのリポジトリにブックマークが付きました。 bookmark('@')
君。Mercurialのリポジトリのブックマークを見てみると、この@マークのブックマークしか存在しないので、いかにも特別こんな感じがします。
で、実際に特別な存在なんです。それはcloneしてみるとわかります。
% hg clone http://selenic.com/repo/hg 複製先ディレクトリ: hg 全リビジョンを取得中 リビジョンを追加中 マニフェストを追加中 ファイルの変更を追加中 18095 個のリビジョン(35296 の変更を 2179 ファイルに適用)を追加 ブランチ default へ更新中 ファイルの更新数 998、 マージ数 0、 削除数 0、 衝突未解消数 0
クローンしたリポジトリのリビジョンを調べてみましょう。
% cd hg % hg log -r . チェンジセット: 17980:83aa4359c49f ブックマーク: @ 親: 17978:55b367bff8d2 親: 17979:b3ec0b5fd777 ユーザ: Matt Mackall <mpm@selenic.com> 日付: Wed Nov 28 16:15:05 2012 -0600 要約: merge with stable % hg tip チェンジセット: 18094:8ceabb34f1cb タグ: tip ユーザ: Adrian Buehlmann <adrian@cadifra.com> 日付: Wed Dec 19 10:02:43 2012 +0100 要約: test-pathencode: compare current pathencoding implementations %
これでわかりましたね!
clone時にリビジョンを指定しない場合のデフォルトのリビジョン
次の順番で見つかったものにupdateします。
1. bookmark('@') 2. branch('default') 3. tag('tip')
実装はhg.pyの該当箇所を参考にしてみてください。
bookmark('@') の使い方
defaultブランチの最新リビジョン以外を参照させたい場合に利用できます。たとえば次のようなことができます。
- 最新の安定板のタグが付いたリビジョンに@を付けることで、clone時に安定したバージョンを見せることができる。
いろいろ応用方法があると思います。見つけたら#mercurialjpでつぶやいたり、Blogにまとめてみてください。