Mercurial は、レコード拡張機能を使用してこれを行うことができます。
各ファイルと各差分ハンクについてプロンプトが表示されます。例えば:
% hg record
diff --git a/prelim.tex b/prelim.tex
2 hunks, 4 lines changed
examine changes to 'prelim.tex'? [Ynsfdaq?]
@@ -12,7 +12,7 @@
\setmonofont[Scale=0.88]{Consolas}
% missing from xunicode.sty
\DeclareUTFcomposite[\UTFencname]{x00ED}{\'}{\i}
-\else
+\else foo
\usepackage[pdftex]{graphicx}
\fi
record this change to 'prelim.tex'? [Ynsfdaq?]
@@ -1281,3 +1281,5 @@
%% Local variables:
%% mode: latex
%% End:
+
+foo
\ No newline at end of file
record this change to 'prelim.tex'? [Ynsfdaq?] n
Waiting for Emacs...
コミット後、残りの差分は取り残されます:
% hg di
diff --git a/prelim.tex b/prelim.tex
--- a/prelim.tex
+++ b/prelim.tex
@@ -1281,3 +1281,5 @@
%% Local variables:
%% mode: latex
%% End:
+
+foo
\ No newline at end of file
または、MQ (Mercurial Queues) を使用して、リポジトリ内の個々の変更をパッチに分割する方が簡単な場合があります。レコード (qrecord) の MQ バリアントもあります。
更新:ハンク/行選択への curses インターフェイスを提供するcrecord拡張機能も試してください。