convert: add a mode where mercurial_sink skips empty revisions.
The getchanges function of some converter_source classes can return
some false positives. I.e. they sometimes claim that a file "foo"
was changed in some revision, even though its contents are still the
same.
convert_svn is particularly bad, but I think this can also happen with
convert_cvs and, at least in theory, with mercurial_source.
For regular conversions this is not really a problem - as long as
getfile returns the right contents, we'll get a converted revision
with the right contents. But when we use --filemap, this could lead
to superfluous revisions being converted.
Instead of fixing every converter_source, I decided to change
mercurial_sink to work around this problem.
When --filemap is used, we're interested only in revisions that touch
some specific files. If a revision doesn't change any of these files,
then we're not interested in it (at least for revisions with a single
parent; merges are special).
For mercurial_sink, we abuse this property and rollback a commit if
the manifest text hasn't changed. This avoids duplicating the logic
from localrepo.filecommit to detect unchanged files.
HGMERGE(1)
==========
Matt Mackall <mpm@selenic.com>
v0.1, 27 May 2005
名前
--
hgmerge - Mercurial ソースコード管理システムでファイルをマージする
のに使われるデフォルトのラッパー
書式
--
'hgmerge' local ancestor remote
説明
--
hgmerge(1) コマンドは Mercurial システムでファイルをマージするため
のグラフィカルなインターフェイスを提供します。これは kdiff3,
merge(1), tkdiff(1), または単純に diff(1) と patch(1) のラッパーで、
どれがシステム上にあるかに依存します。
hgmerge(1) は Mercurial ソースコード管理システムで環境変数
HGMERGE が設定されていない場合に使われます。
著者
--
Vincent Danjean <Vincent.Danjean@free.fr> によって書かれました。
関連情報
--
hg(1) - Mercurial システムへのコマンドラインインターフェイス
著作権情報
----
Copyright (C) 2005-2007 Matt Mackall.
このソフトウェアの自由な使用は GNU 一般公有使用許諾 (GPL) のもとで
認められます。