[PATCH 3/4] Allow a different mergetool command to be used for 'no base' merges
From: Charles Bailey <hidden>
Date: 2016-06-15 22:44:14
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
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 <redacted> --- 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