git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Johannes Gilger <heipei@hackvalue.de>
Cc: git@vger.kernel.org, tytso@mit.edu
Subject: Re: [PATCHv2] git mergetool: Don't repeat merge tool candidates
Date: Fri, 23 Jan 2009 14:10:48 -0800	[thread overview]
Message-ID: <7vpridr7vb.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <1232702093-24313-1-git-send-email-heipei@hackvalue.de> (Johannes Gilger's message of "Fri, 23 Jan 2009 10:14:53 +0100")

Johannes Gilger <heipei@hackvalue.de> writes:

> git mergetool listed some candidates for mergetools twice, depending on
> the environment.
>
> Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
> ---
> The first patch had the fatal flaw that it listed nothing when DISPLAY 
> and EDITOR/VISUAL were unset, we fixed that.
> The order in which merge-candidates appear is still exactly the same, 
> only duplicates have been stripped. The check for KDE_FULL_SESSION was 
> removed since kdiff3 was added as long as DISPLAY was set and we weren't 
> running gnome.

The old code produced this:

   DISPLAY set
   | GNOME_DESKTOP_SESSION_ID set
   | | KDE_FULL_SESSION true
   | | |
   - - - (editor)
   - - + (editor)
   - + - (editor)
   - + + (editor)
   + - - kdiff3 tkdiff xxdiff meld gvimdiff (editor)
   + - + kdiff3 kdiff3 tkdiff xxdiff meld gvimdiff (editor)
   + + - meld kdiff3 tkdiff xxdiff meld gvimdiff (editor)
   + + + kdiff3 meld kdiff3 tkdiff xxdiff meld gvimdiff (editor)

where (editor) lists emerge or vimdiff if the preferred editor was emacs
or vim, and then opendiff, and then emerge and vimdiff as fallback
duplicates.

Looking at what the new code does for the (editor) fallback part first:

   if echo "${VISUAL:-$EDITOR}" | grep 'emacs' > /dev/null 2>&1; then
       merge_tool_candidates="$merge_tool_candidates emerge opendiff vimdiff"
   fi
   if echo "${VISUAL:-$EDITOR}" | grep 'vim' > /dev/null 2>&1; then
       merge_tool_candidates="$merge_tool_candidates vimdiff opendiff emerge"
   fi
   if test -z "$merge_tool_candidates" ; then
       merge_tool_candidates="opendiff emerge vimdiff"
   fi

I think it is better to rewrite this part for clarity:

    if EDITOR is emacs?
    then
    	append emerge opendiff vimdiff in this order
    elif EDITOR is vim?
    then
    	append vimdiff opendiff emerge in this order
    else
    	append opendiff emerge vimdiff in this order
    fi

because emacs and vim cannot be set to EDITOR at the same time
(note that I think this also fixes a bug; see below).

>      if test -n "$DISPLAY"; then
>          if test -n "$GNOME_DESKTOP_SESSION_ID" ; then
> +            merge_tool_candidates="meld kdiff3 tkdiff xxdiff gvimdiff"
> +        else
> +            merge_tool_candidates="kdiff3 tkdiff xxdiff meld gvimdiff"
>          fi
>      fi

This one produces:

   DISPLAY set
   | GNOME_DESKTOP_SESSION_ID set
   | | KDE_FULL_SESSION true
   | | |
   - - - (editor)
   - - + (editor)
   - + - (editor)
   - + + (editor)
   + - - kdiff3 tkdiff xxdiff meld gvimdiff (editor')
   + - + kdiff3 tkdiff xxdiff meld gvimdiff (editor')
   + + - meld kdiff3 tkdiff xxdiff gvimdiff (editor')
   + + + meld kdiff3 tkdiff xxdiff gvimdiff (editor')

where "(editor')" is empty if your EDITOR is not emacs nor vim.

The original list with the duplicates removed is:

   DISPLAY set
   | GNOME_DESKTOP_SESSION_ID set
   | | KDE_FULL_SESSION true
   | | |
   - - - (editor)
   - - + (editor)
   - + - (editor)
   - + + (editor)
   + - - kdiff3 tkdiff xxdiff meld gvimdiff (editor)
   + - + kdiff3 tkdiff xxdiff meld gvimdiff (editor)
   + + - meld kdiff3 tkdiff xxdiff gvimdiff (editor)
   + + + kdiff3 meld tkdiff xxdiff gvimdiff (editor)

Aside from the "(editor') is empty when DISPLAY is set" difference, the
result is also different iff GNOME_DESKTOP_SESSION_ID and KDE_FULL_SESSION
are both set.  I am guessing that that does not happen in a sane
environment, though.

  reply	other threads:[~2009-01-23 22:12 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-21 20:24 [PATCH] git mergetool: Don't repeat merge tool candidates Johannes Gilger
2009-01-23  8:16 ` Junio C Hamano
2009-01-23  9:14   ` [PATCHv2] " Johannes Gilger
2009-01-23 22:10     ` Junio C Hamano [this message]
2009-01-23 23:12       ` [PATCHv3] " Johannes Gilger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vpridr7vb.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=heipei@hackvalue.de \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).