Skip to content
  • Tao Klerks's avatar
    mergetool: new config guiDefault supports auto-toggling gui by DISPLAY · 42943b95
    Tao Klerks authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    When no merge.tool or diff.tool is configured or manually selected, the
    selection of a default tool is sensitive to the DISPLAY variable; in a
    GUI session a gui-specific tool will be proposed if found, and
    otherwise a terminal-based one. This "GUI-optimizing" behavior is
    important because a GUI can make a huge difference to a user's ability
    to understand and correctly complete a non-trivial conflicting merge.
    
    Some time ago the merge.guitool and diff.guitool config options were
    introduced to enable users to configure both a GUI tool, and a non-GUI
    tool (with fallback if no GUI tool configured), in the same environment.
    
    Unfortunately, the --gui argument introduced to support the selection of
    the guitool is still explicit. When using configured tools, there is no
    equivalent of the no-tool-configured "propose a GUI tool if we are in a GUI
    environment" behavior.
    
    As proposed in <xmqqmtb8jsej.fsf@gitster.g>, introduce new configuration
    options, difftool.guiDefault and mergetool.guiDefault, supporting a special
    value "auto" which causes the corresponding tool or guitool to be selected
    depending on the presence of a non-empty DISPLAY value. Also support "true"
    to say "default to the guitool (unless --no-gui is passed on the
    commandline)", and "false" as the previous default behavior when these new
    configuration options are not specified.
    
    Signed-off-by: default avatarTao Klerks <tao@klerks.biz>
    Acked-by: default avatarDavid Aguilar <davvid@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    42943b95