diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1638,9 +1638,11 @@ def commit(ui, repo, *pats, **opts): def _docommit(ui, repo, *pats, **opts): if opts.get('interactive'): opts.pop('interactive') - cmdutil.dorecord(ui, repo, commit, None, False, - cmdutil.recordfilter, *pats, **opts) - return + ret = cmdutil.dorecord(ui, repo, commit, None, False, + cmdutil.recordfilter, *pats, **opts) + # ret can be 0 (no changes to record) or the value returned by + # commit(), 1 if nothing changed or None on success. + return 1 if ret == 0 else ret if opts.get('subrepos'): if opts.get('amend'): diff --git a/tests/test-commit-interactive-curses.t b/tests/test-commit-interactive-curses.t --- a/tests/test-commit-interactive-curses.t +++ b/tests/test-commit-interactive-curses.t @@ -37,6 +37,7 @@ Committing some changes but stopping on > EOF $ hg commit -i -m "a" -d "0 0" no changes to record + [1] $ hg tip changeset: -1:000000000000 tag: tip @@ -60,6 +61,7 @@ Committing some changes Check that commit -i works with no changes $ hg commit -i no changes to record + [1] Committing only one file diff --git a/tests/test-commit-interactive.t b/tests/test-commit-interactive.t --- a/tests/test-commit-interactive.t +++ b/tests/test-commit-interactive.t @@ -29,6 +29,7 @@ Select no files examine changes to 'empty-rw'? [Ynesfdaq?] n no changes to record + [1] $ hg tip -p changeset: -1:000000000000 @@ -1376,6 +1377,7 @@ Removing changes from patch record this change to 'editedfile'? [Ynesfdaq?] e no changes to record + [1] $ cat editedfile This change will not be committed This is the second line @@ -1487,6 +1489,7 @@ session record this change to 'editedfile'? [Ynesfdaq?] n no changes to record + [1] random text in random positions is still an error