Mercurial-2.6から追加されたunionスキームについて調べてみた。
Mercurial-2.6から追加されたunionスキームについて調べてみた。
Mercurial-2.6からリポジトリ指定時にunionというスキームが指定できるようになりました。 unionを利用すると、次の形式で指定した2つのローカルリポジトリの履歴をミックスして閲覧できるようになります。
union:repo1+repo2 # repo1とrepo2の履歴を合算して閲覧する
この機能を利用すれば、crew+main*1を手元で模倣できます。
$ hg clone http://hg.intevation.org/mercurial/ main $ hg clone http://hg.intevation.org/mercurial/crew/ crew $ MAIN_REV=$(hg -R main log -b default -l 1 --template "{node}") $ CREW_REV=$(hg -R crew log -b default -l 1 --template "{node}") $ hg -R union:crew+main heads $ hg -R union:crew+main log -r $CREW_REV -r $MAIN_REV $ hg -R union:crew+main log -r "::$CREW_REV-::$MAIN_REV" $ hg -R union:crew+main log -r "ancestor($CREW_REV,$MAIN_REV)" $ hg -R union:crew+main diff -r $CREW_REV -r $MAIN_REV
mercurial/unionrepo.pyのコミットコメントも使い方が書いてあります。参照してみてください。
なんでこんなものが追加されたの?
コミットコメントにある通り、RhodecodeやBitbucketなどのホスティングサービスで利用するような機能がCoreにあると便利だよね!ってことでRhodeCodeで利用されていたコードをMercurial本体に導入したみたいです。該当のコードはこちら。
Rhodecodeではリポジトリ同士の比較(rhodecode/controller/compare.py)やプルリクエスト(rhodecode/model/pull_request.py)などで利用されているようです。