This adds a mergetool.<tool>.cmdNoBase config variable pattern to allow a different command syntax to be specified for custom merge tools for add/add conflicts where there is no base. The same effects could have been achieved before this patch by adding some shell test syntax in the mergetool.<tool>.cmd config variable but this allows for easier to setup and more readable configurations. Signed-off-by: Charles Bailey <charles@xxxxxxxxxxxxx> --- Documentation/config.txt | 6 ++++++ git-mergetool.sh | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index 53f790d..06a93e0 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -730,6 +730,12 @@ mergetool.<tool>.cmd:: merged; 'MERGED' contains the name of the file to which the merge tool should write the results of a successful merge. +mergetool.<tool>.cmdNoBase:: + If present, the value of this variable is used instead of + mergetool.<tool>.cmd for conflicts where there is no common base + (i.e. add/add conflicts). The interpretation of this variable is + otherwise identical to mergetool.<tool>.cmd. + mergetool.<tool>.trustExitCode:: For a custom merge command, specify whether the exit code of the merge command can be used to determine whether the merge was diff --git a/git-mergetool.sh b/git-mergetool.sh index 4681e9a..2437c37 100755 --- a/git-mergetool.sh +++ b/git-mergetool.sh @@ -273,12 +273,17 @@ merge_file () { ;; *) if test -n "$merge_tool_cmd"; then + if base_present || test -z "$merge_tool_no_base_cmd"; then + tool="$merge_tool_cmd" + else + tool="$merge_tool_no_base_cmd" + fi if test "$merge_tool_trust_exit_code" = "false"; then touch "$BACKUP" - ( MERGED="$path" eval $merge_tool_cmd ) + ( MERGED="$path" eval $tool ) check_unchanged else - ( MERGED="$path" eval $merge_tool_cmd ) + ( MERGED="$path" eval $tool ) status=$? fi save_backup @@ -408,6 +413,7 @@ else if ! test -z "$merge_tool_cmd"; then merge_tool_trust_exit_code="$(git config --bool mergetool.$merge_tool.trustExitCode || echo false)" + merge_tool_no_base_cmd="$(git config mergetool.$merge_tool.cmdNoBase)" fi fi -- 1.5.4.1.34.g94bf - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html