Note:

This page is primarily intended for developers of Mercurial.

Merge Tools Plan

A plan to resolve usability concerns around configured merge tools.

1. Problem Statement

Most Linux distributions come with vim installed as part of the base system, and our packaging advice recommends including our merge tools configuration, which means that most users will trip over vimdiff even if they don't want it. Learning how to force-disable a merge tool is an extra unfriendly step many users are confronted with, and this is more common in large enterprise type installations than for hobby users, which can lead to more hatred of Mercurial.

2. Proposed Solution

Quotes from this message and some followups:

""" The idea would be to have a default merge tool that display available choice and prompt the user to configure one he is comfortable with. This issue is coming up frequently enough that we should probably make it happen. I wonder what other people think. """

""" It might be a problem for other people though, so if it ceases being the default, maybe have Mercurial ask something like the following (starting with any tools defined in the [merge-tools] section of config files) if there are merge conflicts that it cannot resolve:

There are merge conflicts in file ./some/path/to/filename.ext, but no default merge tool has been defined in ui.merge Use [v]imdiff, [k]diff3, internal:[l]ocal, internal:[o]ther, [f]ail? (v) """

3. Concerns

This is a pretty major behavior change. Some users might intentional not have configured a [ui]merge=$TOOL intentionally and expect the current behavior of using the "best" tool that's installed (eg FileMerge.app on OS X, kdiff3 on linux, etc).

We already have a way to forcibly disable undesirable merge tools for users. That's a start, but it's not sufficient because we're still getting roughly monthly reports on mercurial@ of users landing in vimdiff and not knowing how to get anything useful instead.


CategoryDeveloper and CategoryNewFeatures