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.
adding a
This patch series consists of 1 patches.
Displaying [PATCH] a ...
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [PATCH] a
X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
Message-Id: <8580ff50825a50c8f716.60@
Date: Thu, 01 Jan 1970 00:01:00 +0000
From: quux
To: foo
Cc: bar
# HG changeset patch
# User test
# Date 1 0
# Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
# Parent 0000000000000000000000000000000000000000
a
diff -r 000000000000 -r 8580ff50825a a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:01 1970 +0000
@@ -0,0 +1,1 @@
+a
adding b
This patch series consists of 2 patches.
Write the introductory message for the patch series.
Displaying [PATCH 0 of 2] test ...
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [PATCH 0 of 2] test
Message-Id: <patchbomb.120@
Date: Thu, 01 Jan 1970 00:02:00 +0000
From: quux
To: foo
Cc: bar
Displaying [PATCH 1 of 2] a ...
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [PATCH 1 of 2] a
X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
Message-Id: <8580ff50825a50c8f716.121@
In-Reply-To: <patchbomb.120@
Date: Thu, 01 Jan 1970 00:02:01 +0000
From: quux
To: foo
Cc: bar
# HG changeset patch
# User test
# Date 1 0
# Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
# Parent 0000000000000000000000000000000000000000
a
diff -r 000000000000 -r 8580ff50825a a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:01 1970 +0000
@@ -0,0 +1,1 @@
+a
Displaying [PATCH 2 of 2] b ...
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [PATCH 2 of 2] b
X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
Message-Id: <97d72e5f12c7e84f8506.122@
In-Reply-To: <patchbomb.120@
Date: Thu, 01 Jan 1970 00:02:02 +0000
From: quux
To: foo
Cc: bar
# HG changeset patch
# User test
# Date 2 0
# Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
# Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
b
diff -r 8580ff50825a -r 97d72e5f12c7 b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/b Thu Jan 01 00:00:02 1970 +0000
@@ -0,0 +1,1 @@
+b
This patch series consists of 2 patches.
Write the introductory message for the patch series.
Writing [PATCH 0 of 2] test ...
Writing [PATCH 1 of 2] a ...
Writing [PATCH 2 of 2] b ...