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 10, 2013, 11:21 UTC
Message-ID
<31ead18e-0098-4ec8-b8f4-1275580fbc1f@email.android.com>
In-Reply-To
<CADoxLGMxi7CvKHD2-UFEh4=kkF_8Oker4o7YivsB2tSosXJ+Jw@mail.gmail.com>
Stefan Saasen <ssaasen@atlassian.com> wrote:
Show 76 quoted lines
>Thanks for the review David, much appreciated.
>
>> I think this line was already too long in its current form.  Would
>you mind
>> splitting up this long line?
>
>I've updated the patch and had a look at how to avoid repeating the
>list of
>available merge/difftools.
>
>> ... 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.
>
>I can think of a number of approaches and I would like to get some
>feedback.
>
>Firstly I think a similar solution to how the duplication is avoided in
>the
>documentation can't be easily applied to the completion script. Looking
>at the
>script itself (and/or usage docs like
>http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks) the recommended
>way of
>using it is by copying the script as-is. That means there won't be a
>build step
>we could rely on unless I've overlooked something?
>
>That leaves a different approach (run- vs. build time) where I can
>think of two
>possible solutions.
>The first would be similar to what is being done at the moment by
>looking at
>the MERGE_TOOLS_DIR and in addition considering any custom merge tools
>configured. I'm working with the premise that it is a reasonable
>assumption
>that users of the git completion script have a git installation
>available even
>though they may have gotten the script by other means.
>For users to still be able to install the script by simply copying it
>to any location
>on the filesystem the list generation function(s) would either have to
>be sourced
>from the git installation or duplicated. I suppose the former would
>need to
>take into account that the completion script doesn't necessarily
>matches the
>installed version of git with some potential brittleness around
>relying on external
>files and directories. The latter doesn't buy us anything as it
>duplicates even
>more code than the current list of available mergetools.
>
>The second approach would be to do something similar to resolving the
>merge
>strategies (in __git_list_merge_strategies) by parsing the output of
>the `git
>merge tool --tools-help` option with a very similar disadvantage that
>it relies
>on the textual output of the help command and doesn't work outside of a
>git
>repository.
>
>
>I'm currently leaning towards the last approach as it seems less
>reliant on
>implementation details but it doesn't look ideal either and I may be
>missing
>another approach that would be better suited.
I agree that this seems like the way to go. Perhaps we can add git mergetool/difftool --list-tools which can print the available tools so that the completion can use it. 
Show 14 quoted lines
>
>> 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.
>
>To decouple this and adding the diffmerge merge tool option, I'd rather
>keep the
>git-completion change part of the patch. That way the patch is self
>contained
>and covers the change including the completion using the current
>approach and
>doesn't rely on the duplication change. Any concerns around that,
>otherwise I'll
>resend the patch with only the long line fixed?
That sounds good, we can keep these as separate patches. 
Thanks,
-- 
David
Previous: Stefan Saasen
Message 4 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.