Google
WWWを検索
サイト内を検索

自分が何をしていたのか思い出すためのMercurialのコマンド

このエントリーをはてなブックマークに追加 Check Clip to Evernote

Gitがすっかり主流になり説明を検索するのが困難になってきたので、よく使うコマンドをメモしておきます。

  1. 親リビジョンの確認
  2. リポジトリの状態の確認
  3. 変更履歴の確認
  4. 差分の確認
  5. ファイルのそれぞれの行を編集したチェンジセットを確認
  6. ローカルウェブサーバーによる確認

親リビジョンの確認

~/Repository$ hg summary
親リビジョン: 9:6796c62e3a12 tip
無差別曲線の説明から、エッジワースボックスの説明に入れるように機能追加
ブランチ: default
作業領域状態: 変更ファイル数 1, 未知ファイル数 3
update 候補: (現行親リビジョン)

リポジトリの状態の確認

~/Repository$ hg status
hg status
M .hgignore
? temp/EdgeworthBox.R
? temp/ShinyEB.R
? temp/loadLib.R

変更履歴の確認

~/Repository$ hg log -l 3
リビジョン: 9:6796c62e3a12
タグ: tip
ユーザ: uncorrelated zombie <uncorrelated@yahoo.co.jp>
日付: Wed Dec 21 07:48:07 2022 +0900
要約: 無差別曲線の説明から、エッジワースボックスの説明に入れるように機能追加

リビジョン: 8:7db5a949ba24
ユーザ: uncorrelated zombie <uncorrelated@yahoo.co.jp>
日付: Sun Oct 30 11:54:06 2022 +0900
要約: 入力に意味が無い場合にチェックボックスを表示しないようにする

リビジョン: 7:9535740da224
ユーザ: uncorrelated zombie <uncorrelated@yahoo.co.jp>
日付: Fri Oct 28 00:44:26 2022 +0900
要約: 不必要なlibrary呼び出しを消す

-lで行数を指定しています。--graphをつけるとリビジョン間の親子関係がわかります。

差分の確認

差分は画面に表示するだけではなく、リダイレクトでファイルに流し込み、パッチを作ることもできます。

親リビジョンとワーキングツリーの比較
~/Repository$ hg diff
diff -r 6796c62e3a12 .hgignore
--- a/.hgignore Wed Dec 21 07:48:07 2022 +0900
+++ b/.hgignore Sun Sep 07 06:10:12 2025 +0900
@@ -3,3 +3,5 @@
examples/
screenshots/
*.db

hg diff -r .でも同じです。

親リビジョンとその親リビジョンの比較
~/Repository$ hg -r .^:.
ブランチヘッドと特定リビジョンの比較
~/Repository$ hg -r tip:7
マージした2つのリビジョンの比較
~/Repository$ hg -r 7^1:7^2

リビジョン番号7がマージ後にコミットしたリビジョンを表すとしています。

変更されたファイルとその程度を一覧
~/Repository$ hg diff --stat -r null:tip
 .hgignore       |     5  +
 EdgeworthBox.R  |   302 ++++++++++++++++++++++++++++++++++++
 ShinyEB.R       |    68 ++++++++
 loadLib.R       |     9 +
 readme.Rmd      |    10 +
 readme.html     |   473 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 更新ファイル数 6、 追加 867 行(+)、 削除 0 行(-)

nullは最初のコミット前を表します。

ファイルのそれぞれの行を編集したチェンジセットを確認

hg-annotate(別名でhg-blame)で調べることができます。

~/Repository$ hg annotate -un ShinyEB.R
uncorrelated 4: source("loadLib.R")
uncorrelated 0: source("EdgeworthBox.R")
uncorrelated 0:
uncorrelated 0: loadLib("nleqslv", "shiny")

(以下、省略)

オプション -un でユーザー名とリビジョン番号が出ます。

ローカルウェブサーバーによる確認

視認性は良いのですが、cloneやpushもできるので、安全な環境での運用をお勧めします。

~/Repository$ hg serve