This is an archive of the discontinued Mercurial Phabricator instance.

commit/revert: if interactive, look elsewhere for whitespace settings (BC)
ClosedPublic

Authored by spectral on Feb 4 2019, 3:39 PM.

Details

Summary

Previously, when doing commit -i, we respected diff.ignorews and other
whitespace-related settings, which is probably unexpected. The primary reason
for this is to support hgext.record's commandline options, it's probably
accidental that the [diff] settings were also considered. See comments on
issue6042 and D5490. This can cause problems (issue5839, issue6042).

It is assumed by the author that the [diff] section is primarily for *viewing*
diffs, and that it is unlikely what people intend when attempting to commit or
revert.

With this change, if a user wants the behavior, they can clone their [diff]
settings to commands.commit.interactive.<setting>. This is thus a mild BC
change, but one I suspect is not going to be relied on by anyone.

Note: while doing a partial commit/revert, we do not know what command the user
is actually running. This means that the split extension, which ends up calling
into this code, will respect the commands.commit.interactive.<setting>
settings, and not a hypothetical commands.split.interactive.<setting>. This
*also* means that setting commands.commit.interactive.ignoreblanklines, for
example, will still cause issue5839. Considering the highly unlikely chance that
a user actually sets commands.commit.interactive.<setting>, the author deems
this risk acceptable.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

spectral created this revision.Feb 4 2019, 3:39 PM
yuja added a subscriber: yuja.Feb 5 2019, 7:03 AM

Updated the tests added at d1d3094b54f9 and queued, thanks.

This revision was automatically updated to reflect the committed changes.