diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -2550,7 +2550,7 @@ def reposetup(ui, repo): repo.__class__ = mqrepo def mqimport(orig, ui, repo, *args, **kwargs): - if hasattr(repo, 'abort_if_wdir_patched'): + if hasattr(repo, 'abort_if_wdir_patched') and not kwargs.get('no_commit', False): repo.abort_if_wdir_patched(_('cannot import over an applied patch'), kwargs.get('force')) return orig(ui, repo, *args, **kwargs) diff --git a/tests/test-mq b/tests/test-mq --- a/tests/test-mq +++ b/tests/test-mq @@ -175,6 +175,10 @@ hg diff > ../../import.diff hg revert --no-backup ../a hg import ../../import.diff hg st +echo % import --no-commit should succeed +hg import --no-commit ../../import.diff +hg st +hg revert --no-backup ../a echo % qunapplied hg qunapplied diff --git a/tests/test-mq.out b/tests/test-mq.out --- a/tests/test-mq.out +++ b/tests/test-mq.out @@ -154,6 +154,9 @@ pushing to ../../k abort: source has mq patches applied % import should fail abort: cannot import over an applied patch +% import --no-commit should succeed +applying ../../import.diff +M a % qunapplied test2.patch % qpush/qpop with index