All of lore.kernel.org
 help / color / mirror / Atom feed
From: Charles Bailey <charles@hashpling.org>
To: David Aguilar <davvid@gmail.com>
Cc: gitster@pobox.com, git@vger.kernel.org, markus.heidelberg@web.de
Subject: Re: [PATCH v6 14/14] difftool/mergetool: refactor commands to use git-mergetool--lib
Date: Sat, 11 Apr 2009 13:00:40 +0100	[thread overview]
Message-ID: <20090411120040.GA10381@hashpling.org> (raw)
In-Reply-To: <1239175040-28974-1-git-send-email-davvid@gmail.com>

On Wed, Apr 08, 2009 at 12:17:20AM -0700, David Aguilar wrote:

Finally, I've got around to some git work...

> diff --git a/Documentation/git-mergetool--lib.txt
> b/Documentation/git-mergetool--lib.txt
> new file mode 100644
> index 0000000..3d57031
> --- /dev/null
> +++ b/Documentation/git-mergetool--lib.txt

--- snip ---

> +
> +run_merge_tool::
> +	launches a merge tool given the tool name and a true/false
> +	flag to indicate whether a merge base is present.
> +	'$merge_tool', '$merge_tool_path', and for custom commands,
> +	'$merge_tool_cmd', must be defined prior to calling
> +	run_merge_tool.  Additionally, '$MERGED', '$LOCAL', '$REMOTE',
> +	and '$BASE' must be defined for use by the merge tool.

Reading this function it doesn't look like the variable $merge_tool is
actually used, only the first parameter which should be the same
thing. Also, TOOL_MODE is used and is important so should probably be
documented here instead.

> diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
> new file mode 100644
> index 0000000..c5db24e
> --- /dev/null
> +++ b/git-mergetool--lib.sh 

--- snip ---

> +get_merge_tool_path () {
> +	# A merge tool has been set, so verify that it's valid.
> +	if ! valid_tool "$merge_tool"; then
> +		echo >&2 "Unknown merge tool $merge_tool"
> +		exit 1
> +	fi
> +	if diff_mode; then
> +		merge_tool_path=$(git config difftool."$merge_tool".path)
> +	fi
> +	if test -z "$merge_tool_path"; then
> +		merge_tool_path=$(git config mergetool."$merge_tool".path)
> +	fi
> +	merge_tool_path="$(translate_merge_tool_path "$merge_tool" "$merge_tool_path")"
> +	if test -z "$merge_tool_cmd" && ! type "$merge_tool_path" > /dev/null 2>&1; then
> +		echo >&2 "The $TOOL_MODE tool $merge_tool is not available as '$merge_tool_path'"
> +		exit 1
> +	fi
> +	echo "$merge_tool_path"
> +}

I just wanted to double check that we supported finding tools in the
path with merge.$tool.path unset (it should just work), so I had a
quick play and got some really wierd results. Please tell me if just
sourcing git-mergetool--lib isn't just going to work.

>From a non-X session:

    $ git config -l | grep 'merge\.\?tool'; get_merge_tool; get_merge_tool_path
    mergetool.p4merge.cmd=echo /"$BASE"/ /"$REMOTE"/ /"$LOCAL"/ /"$MERGED"/
    merge tool candidates: kompare emerge vimdiff
    vimdiff
    vim

>From an X session:

    mergetool.p4merge.cmd=echo /"$BASE"/ /"$REMOTE"/ /"$LOCAL"/ /"$MERGED"/
    merge tool candidates: meld opendiff kdiff3 tkdiff xxdiff kompare gvimdiff diffuse ecmerge emerge vimdiff
    kdiff3
    vim

I'm not quite sure what's going on here.


> diff --git a/git-mergetool.sh b/git-mergetool.sh
> index cceebb7..efa31a2 100755
> --- a/git-mergetool.sh
> +++ b/git-mergetool.sh

--- big snip to: @@ merge_file () {

> +    present=false
> +    base_present &&
> +    present=true

I'm not sure why, but from a style point of view, this seemed a bit
inconsistent from the rest of mergetool and grated with me a bit.

I think I'd prefer

if base_present; then
    present=false
else
    present=true
fi

or even:

present=$(base_present && echo true || echo false)

Really, really minor stlye point, though.

-- 
Charles Bailey
http://ccgi.hashpling.plus.com/blog/

  reply	other threads:[~2009-04-11 12:02 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-08  7:17 [PATCH v6 14/14] difftool/mergetool: refactor commands to use git-mergetool--lib David Aguilar
2009-04-11 12:00 ` Charles Bailey [this message]
2009-04-11 12:10   ` Charles Bailey
2009-04-12  3:41   ` David Aguilar

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=20090411120040.GA10381@hashpling.org \
    --to=charles@hashpling.org \
    --cc=davvid@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=markus.heidelberg@web.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.