git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] mergetools/diffmerge: support DiffMerge as a git mergetool

From
David Aguilar <davvid@gmail.com>
Date
Oct 6, 2013, 21:21 UTC
Message-ID
<CAJDDKr6vyt-UgO-p2HxxAdpQnGy+=zwpc9TUpK5LL54LrjNEGg@mail.gmail.com>
In-Reply-To
<1380961741-85909-1-git-send-email-ssaasen@atlassian.com>
On Sat, Oct 5, 2013 at 1:29 AM, Stefan Saasen <ssaasen@atlassian.com> wrote:
Show 30 quoted lines
> DiffMerge is a non-free (but gratis) tool that supports OS X, Windows and Linux.
>
>     See http://www.sourcegear.com/diffmerge/
>
> DiffMerge includes a script `/usr/bin/diffmerge` that can be used to launch the
> graphical compare tool.
>
> This change adds mergetool support for DiffMerge and adds 'diffmerge' as an
> option to the mergetool help.
>
> Signed-off-by: Stefan Saasen <ssaasen@atlassian.com>
> ---
>  contrib/completion/git-completion.bash |  2 +-
>  git-mergetool--lib.sh                  |  2 +-
>  mergetools/diffmerge                   | 15 +++++++++++++++
>  3 files changed, 17 insertions(+), 2 deletions(-)
>  create mode 100644 mergetools/diffmerge
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index e1b7313..07b0ba5 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -1188,7 +1188,7 @@ _git_diff ()
>         __git_complete_revlist_file
>  }
>
> -__git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff
> +__git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
>                         tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare
>  "

It's a little unfortunate that we have to keep repeating ourselves here. mergetool--lib has a list_merge_tool_candidate() that populates $tools and help us avoid having to maintain these lists in separate files.

It might be worth leaving the git-completion.bash bits alone in this first patch and follow it up with a change that generalizes the "list of tools" thing so that it can be reused here, possibly. The show_tool_help() function, as used by "git difftool --tool-help" and "git mergetool --tool-help", might be a good place to look for inspiration.

We were able to eliminate duplication in the docs (see the handling for $(mergetools_txt) in Documentation/Makefile) so it'd be nice if we could do the same for git-completion.bash, somehow.

Show 10 quoted lines
> diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
> index feee6a4..6d0fa3b 100644
> --- a/git-mergetool--lib.sh
> +++ b/git-mergetool--lib.sh
> @@ -250,7 +250,7 @@ list_merge_tool_candidates () {
>                 else
>                         tools="opendiff kdiff3 tkdiff xxdiff meld $tools"
>                 fi
> -               tools="$tools gvimdiff diffuse ecmerge p4merge araxis bc3 codecompare"
> +               tools="$tools gvimdiff diffuse diffmerge ecmerge p4merge araxis bc3 codecompare"

I think this line was already too long in its current form. Would you mind splitting up this long line?

Show 24 quoted lines
>         fi
>         case "${VISUAL:-$EDITOR}" in
>         *vim*)
> diff --git a/mergetools/diffmerge b/mergetools/diffmerge
> new file mode 100644
> index 0000000..85ac720
> --- /dev/null
> +++ b/mergetools/diffmerge
> @@ -0,0 +1,15 @@
> +diff_cmd () {
> +       "$merge_tool_path" "$LOCAL" "$REMOTE" >/dev/null 2>&1
> +}
> +
> +merge_cmd () {
> +       if $base_present
> +       then
> +               "$merge_tool_path" --merge --result="$MERGED" \
> +                       "$LOCAL" "$BASE" "$REMOTE"
> +       else
> +               "$merge_tool_path" --merge \
> +                       --result="$MERGED" "$LOCAL" "$REMOTE"
> +       fi
> +       status=$?
> +}
Other than those two minor notes, this looks good to me.
Thanks,
-- 
David
Previous: Stefan SaasenNext: Stefan Saasen
Message 2 of 4 in “mergetools/diffmerge: support DiffMerge as a git mergetool”
  1. mergetools/diffmerge: support DiffMerge as a git mergetoolStefan Saasen, Oct 5, 2013
  2. David AguilarOct 6, 2013
  3. Stefan SaasenOct 9, 2013
  4. David AguilarOct 10, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.