Mercurial > hg > mercurial-crew-with-dirclash
view tests/test-mq-guards.out @ 5378:8a2915f57dfc
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.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Thu, 04 Oct 2007 23:21:37 -0300 |
parents | 8369672060b5 |
children |
line wrap: on
line source
adding x Patch queue now empty % should fail abort: no patch named does-not-exist.patch % should fail abort: no patches applied applying a.patch Now at: a.patch % should guard a.patch % should print +a a.patch: +a Patch queue now empty a.patch: +a % should push b.patch applying b.patch Now at: b.patch Patch queue now empty number of unguarded, unapplied patches has changed from 2 to 3 % should push a.patch applying a.patch Now at: a.patch % should print -a c.patch: -a % should skip c.patch applying b.patch skipping c.patch - guarded by '-a' Now at: b.patch % should display b.patch b.patch % should push c.patch applying c.patch Now at: c.patch Patch queue now empty guards deactivated number of unguarded, unapplied patches has changed from 3 to 2 % should push all applying b.patch applying c.patch Now at: c.patch Patch queue now empty number of unguarded, unapplied patches has changed from 1 to 2 % should push a.patch, not b.patch applying a.patch Now at: a.patch applying c.patch Now at: c.patch Patch queue now empty % should push b.patch applying b.patch Now at: b.patch applying c.patch Now at: c.patch c.patch Patch queue now empty number of unguarded, unapplied patches has changed from 2 to 3 % should push a.patch, b.patch applying a.patch Now at: a.patch applying b.patch Now at: b.patch Patch queue now empty number of unguarded, unapplied patches has changed from 3 to 2 % list patches and guards a.patch: +1 +2 -3 b.patch: +2 c.patch: unguarded % list series 0 G a.patch 1 U b.patch 2 U c.patch % list guards 1 2 3 % should push b.patch applying b.patch Now at: b.patch applying c.patch Now at: c.patch guards deactivated popping guarded patches Patch queue now empty reapplying unguarded patches applying c.patch Now at: c.patch % guards in series file: +1 +2 -3 +1 +2 -3 % should show c.patch c.patch % should show : % new.patch: +1 +2 -3 % b.patch: +2 % c.patch: unguarded new.patch: +1 +2 -3 b.patch: +2 c.patch: unguarded Now at: c.patch % should show new.patch and b.patch as Guarded, c.patch as Applied % and d.patch as Unapplied 0 G new.patch 1 G b.patch 2 A c.patch 3 U d.patch % new.patch, b.patch: Guarded. c.patch: Applied. d.patch: Guarded. 0 G new.patch 1 G b.patch 2 A c.patch 3 G d.patch Patch queue now empty new.patch: +1 +2 -3 b.patch: +2 c.patch: unguarded d.patch: +2 % hg qapplied % hg qapplied -v % hg qunapplied c.patch % hg qunapplied -v 0 G new.patch 1 G b.patch 2 U c.patch 3 G d.patch number of unguarded, unapplied patches has changed from 1 to 2 % hg qapplied % hg qapplied -v % hg qunapplied new.patch c.patch % hg qunapplied -v 0 U new.patch 1 G b.patch 2 U c.patch 3 G d.patch applying new.patch skipping b.patch - guarded by ['+2'] applying c.patch skipping d.patch - guarded by ['+2'] Now at: c.patch % hg qapplied new.patch c.patch % hg qapplied -v 0 A new.patch 1 G b.patch 2 A c.patch % hg qunapplied % hg qunapplied -v 3 G d.patch number of unguarded, unapplied patches has changed from 0 to 1 number of guarded, applied patches has changed from 1 to 0 % hg qapplied new.patch c.patch % hg qapplied -v 0 A new.patch 1 U b.patch 2 A c.patch % hg qunapplied d.patch % hg qunapplied -v 3 U d.patch % hg qapplied new.patch new.patch % hg qunapplied new.patch b.patch d.patch % hg qapplied b.patch new.patch % hg qunapplied b.patch d.patch % hg qapplied c.patch new.patch c.patch % hg qunapplied c.patch d.patch % hg qapplied d.patch new.patch c.patch % hg qunapplied d.patch % hg qseries -m: only b.patch should be shown the guards file was not ignored in the past b.patch