藤原です。
定例のメジャーバージョンアップである 3.2 版がリリースされました。
また、日本語メッセージファイルが同梱されていないパッケージや、GNU
gettext が無い環境でビルドした人向けに、日本語メッセージファイルを
以下から入手できるようにしました。
配置してください。
詳細に関しては以下のページを参照してください。
今回のリリースも、目を引く大きな機能追加よりも、細かい使い勝手の向上が
主体になっている印象ですね。 以下、リリース情報ページで列挙されている各
項目について、簡単に説明します。
==== コアコマンドに関する変更
- amend: abort early if no username is configured with evolve enabled (issue4211)
- amend: fix amending rename commit with diverged topologies (issue4405)
evolve (obsolete) 機能を使用している際の "hg commit --amend" における
問題の修正です (ユーザ名無指定時の中断処理や、改名情報のロスト)
- bookmark: make the search for divergent names more robust
- bookmarks: fix divergent bookmark path normalization
履歴取り込み先とブックマーク対象が分岐した際の、別名作成における連携
先判定処理が強化れました。例えば、以下の複数表記が同一とみなされます。
/foo/bar/ == file:/foo/bar/ == file:///foo/bar
- bookmarks: allow pushkey if new equals current
ブックマーク更新の際の制約が、若干ゆるくなりました。
従来は、旧参照先指定が一致しない更新は拒否されていましたが、新参照先
が現行参照先と一致している場合は、「更新処理」は成功扱いになります。
- branches: include active, closed and current flags in template output
branches コマンド出力をテンプレートで整形する際に、
active/closed/current に関する情報も表示できるようになります。
- clone: copy '.hg/bookmarks' during copy clone
- clone: explicitly push bookmarks when cloning from local to remote
リポジトリ複製時にブックマークを複製するようになりました。
- clone: for local clones, copy branchcache from the right location (issue4286)
- clone: for local clones, copy over filtered branchcaches as well (issue4286)
ローカルホスト上の "hg clone" の際に、ブランチ情報のキャッシュファイ
ルも複製するようになりました。複製後の実行性能が向上します。
- clone: fix copying bookmarks in uncompressed clones (issue4430)
- clone: properly mark branches closed with --uncompressed (issue4428)
--uncompressed で複製された際に、ブックマーク情報やブランチの閉鎖情報
が適切に伝播しない問題の修正です。
- clone: provide sample username = config entry in .hg/hgrc (issue4359)
"hg clone" 時に作成される .hg/hgrc ファイルに、username 設定に関する
サンプルコメントが埋め込まれるようになりました。
- commit: add customizable committemplate config
3.1 版から利用できるようになった [committemplate] 設定が、更に強化れ
ました。以前は、全ての処理で共通のカスタムテンプレートを使用していた
のですが、3.2 版からは、処理毎に異なるテンプレートを指定することがき
ます。
例えば、"hg tag" 実行時にエディタで表示されるテキストを、--remove 指
定の有無で切り替える、といったことも可能になります。
- config: give more fine-tuned sample hgrcs to this command
"hg config -e" 実行で、編集対象の設定ファイルが存在しない場合に作成さ
れるサンプル設定ファイルの内容が改善されました。
- config: highlight parse error caused by leading spaces (issue3214)
設定行の行頭の空白文字が原因で設定ファイル解析が失敗した場合に、エラー
メッセージから原因がわかりやすいように改善されました。
- files: add new command unifying locate and manifest functionality
- locate: deprecate in favor of files
locale および manifest コマンドの代替として、 files コマンドが導入さ
れました。locate コマンドは非推奨扱いになります。
- graft: allow regrafting ancestors with --force (issue3220)
- graft: make --force apply across continues (issue3220)
graft による移植の際に、移植先に対して:
- 移植対象が祖先 (直接的な祖先)
- 移植対象の移植先が祖先 (間接的な祖先)
上記いずれかの場合は、対象の移植がスキップされていたのですが、この挙
動だと、backout された移植対象の変更内容を、再度適用するようなケース
には対応できませんでした。
そこで、--force 指定がある場合は、強制的に移植を実施できるようになり
ました。また、衝突による中断を --continue で再開する際も、--force 指
定の有無が引き継がれれます。
- help: document that default hgweb style is called paper (issue4373)
- help: update help for hgweb template and style (issue4373)
hgweb に関するヘルプ既述が強化されました。
- import: let --exact 'work' with --no-commit (issue4376)
"import --no-commit" 時に --exact を指定した場合に処理が中断される問
題の修正です。
- log: allow patterns with -f
"hg log --follow" で、ファイル名パターンが指定できるようになりました。
- log: do not hide the public phase in debug mode (BC)
"hg log --debug" の出力で、public なフェーズ情報が表示されるようにな
りました。
- log: rewrite default template to use labels (issue2866)
明示的な "default" スタイル指定と、color エクステンションを併用するよ
うなケースで、色付けされない問題の修正です。
- log: show phase in hg log -v with the phase template
--verbose 指定時に、"phase" スタイルがフェーズ情報を表示しない問題の
修正です。
- merge-tools: add a 'premerge=keep-merge3' config option
- merge: support three labels when using conflict markers
衝突マーカーを残す premerge=keep のバリエーションとして、共通の親リビ
ジョン (いわゆる "base") に関する情報も残す "keep-merge3" が追加され
ました。
- merge: use bid merge by default (BC)
マージのデフォルト挙動が bid merge になりました。
- parents: deprecate the parents commands
"hg parents" コマンドが非推奨扱いになりました。今後は "hg summary" や
"hg log -r 'parents(foo)'" の使用が推奨されます。
- pull: perform bookmark updates in the transaction
"hg pull" におけるブックマークの更新契機が変更されました。
- push: update bookmarks within the remote lock
- push: wrap local phase movement in a transaction
- pushbookmark: do not attempt to update bookmarks if the push failed (BC)
"hg push" におけるブックマークやフェーズの更新契機が変更されました。
- status: make 'hg status --rev' faster when there are deleted files
手動で削除されたファイルがある場合の "hg status --rev" 実行性能が改善
されました。
- tag: properly abort if an unknown or ignored .hgtags is present
".hgtags" ファイルが、管理対象外 (unknown) や無視対象 (ignored) な場
合に処理が中断されない問題の修正です。
- annotate: rewrite long short-circuit statement by if-elif-else
- bookmarks: explicitly track identical bookmarks
- bookmarks: inform transaction-related hooks that some bookmarks were moved
- commit: correctly check commit mutability during commit --amend
内部実装の話なので、エンドユーザには影響無い筈です。
==== コア機能に関する変更
- alias: expand "$@" as list of parameters quoted individually (BC) (issue4200)
シェルエイリアス ("[alias] NAME=!command line ..." 形式) での引数展
開で $@ を使用した場合、コマンド行の引数が単純に展開されるだけなの
で、空白文字を含む引数等が上手く渡せませんでした。
新規に導入された "$@" (引用符で囲まれている点に注意!) を使用するこ
とで、引数が個々引用符で囲まれた上で展開されるので、空白を含む引数
でも安全に渡せるようになります。
これらの展開処理は Mercurial 内部で実施されるものなので、本来であれ
ば $@ という特殊指定を解釈できないシェルを使う環境 (例: Windows の
cmd.exe) であっても、この機能を使うことが出来ます。
- dirstate: wrap setparent calls with begin/endparentchange (issue4353)
作業領域の更新中に処理が中断された場合、作業領域状態の整合性が失わ
れる問題の修正です。
- hook: protect commit hooks against stripping of temporary commit (issue4422)
履歴改変系処理 (histedit 等) で作成された一時的なリビジョンに対して、
これらの破棄後に commit 系フックが起動されてしまう問題の修正です。
- i18n: detect UI language without POSIX-style locale variable on Windows (BC)
Windows 環境において、LANGUAGE や LC_MESSAGES といった POSIX 系の言
語指定環境変数による指定が無い場合に、OS の保持するデフォルト言語指
定を使うようにする修正です。
日本語 Windows 環境であれば、環境変数設定等をせずとも、インストール直
後の hg help で即日本語ヘルプが表示される筈です。
- posix: implement readpipe using non-blocking I/O (issue4336)
SSH 連携の際に、連携先からの出力 (の一部?) が表示されない問題の修正
です。
- revset: fix O(2^n) perf regression in addset
"-r R1 -r R2 ...." 形式でのリビジョンの OR 指定の際に、実行性能が劣化
する問題の修正です。
- revset: have rev() drop out-of-range or filtered rev explicitly (issue4396)
revsets 既述の rev() 述語に対して、無効なリビジョンが指定された際に、
問い合わせ結果が不適切になる問題の修正です。
- setdiscovery: limit the size of all sample (issue4411)
膨大な数の構造的 (topological) ヘッドリビジョンが存在する際に、HTTP
経由でのリモートリポジトリに対する問い合わせが 414 エラーになってしま
う問題の修正です。
- ssl: only support TLS (BC)
ここ暫く話題になっている SSLv3 POODLE 問題の修正です。こちらの修正は、
HTTPS クライアントとしての対処になります。
- ssl: only use the dummy cert hack if using an Apple Python (issue4410)
Apple のビルドした Mac OS 同梱の Python 以外で "dummycert.pem" を参照
した場合に、証明書検証が失敗する問題の修正です。
Mac OS X における SSL 証明書検証に関しては、以下のページも参照してみ
てください。
- templater: fix ifcontains when list is a string (issue4399)
テンプレート既述で、ifcontains() 関数に文字列が指定された際に、適切な
出力にならない問題の修正です。
- dirstate: add exception when calling setparent without begin/end (API)
- localrepo: remove the 'pull' method (API)
- localrepo: remove the 'push' method (API)
これらは内部 API に関する変更ですので、自前でエクステンションを書いて
いるユーザ以外には影響無い筈です。
==== エクステンションに関する変更
- convert: add support for deterministic progress bar on scanning phase
変換元の形式が git/svn の場合、変換時の進捗表示における分母(=想定所
要処理)の精度が向上しました。
- convert: add support to detect git renames and copies
git からの変換の際の複製・改名判定が強化されました。
なお、オンラインヘルプの日本語版にも訳注として追記してありますが、
git 1.7.4 で追加された --find-copies オプションがデフォルトで使用され
るようになっていますので、古い git コマンドを使用する環境では、以下の
設定による機能の無効化が必要です。
[convert]
git.similarity = 0
- eol: fix crash when handling removed files
登録除外されたファイルを扱う際の eol エクステンションの問題の修正です。
- histedit: add "roll" command to fold commit data and drop message (issue4256)
histedit で利用可能な挙動に、"roll" が追加されました。fold 同様に変更
内容を取り込みつつ、コミットメッセージが破棄されます。
- largefiles: add examination of exec bit in "hg status --rev REV" case
- largefiles: keep largefiles from colliding with normal one during linear merge
- largefiles: restore R status of removed largefiles correctly at "hg rollback"
- largefiles: restore standins from non branch-tip parent at rollback correctly
- largefiles: unlink standins not known to the restored dirstate at rollback
largefiles 使用時の "hg status" の出力や、代理ファイル (.lglf 配下の
ファイル) の復旧・更新等に関する修正です。
"--rev REV" 指定付きの "hg status" や、リニアマージを伴う "hg update"、
"hg rollback" 実施直後等の不適切な挙動が修正されています。
- mq: write '# Parent ' lines with two spaces like export does (BC)
- mq: write headers for new HG patches in the same order as export (BC)
MQ が管理する「パッチ」の形式を export と揃える修正です。
- shelve: don't delete "." when rebase is a no-op (issue4398)
unshelve の際の衝突を解消した結果、コミット内容が空になった場合、
unshelve -c によって作業領域の親リビジョンが破棄されてしまう障害の
修正です。
==== hgweb に関する変更
- hgweb: disable SSLv3 serving (BC)
ここ暫く話題になっている SSLv3 POODLE 問題の修正です。こちらの修正は、
HTTPS サーバとしての対処になります。
- hgweb: refresh repository using URL not path (issue4323)
リポジトリ情報の内部管理に、ローカルのパスではなく、URL が用いられ
るようになりました。
この対処により、bundle ファイル単体での "hg serve" が可能になります。