From: Charles Bailey Date: Sun, 17 Feb 2008 10:24:04 GMT Subject: [PATCH 3/4] Allow a different mergetool command to be used for 'no base' merges Message-ID: In-Reply-To: This adds a mergetool..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..cmd config variable but this allows for easier to setup and more readable configurations. Signed-off-by: Charles Bailey --- 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..cmd:: merged; 'MERGED' contains the name of the file to which the merge tool should write the results of a successful merge. +mergetool..cmdNoBase:: + If present, the value of this variable is used instead of + mergetool..cmd for conflicts where there is no common base + (i.e. add/add conflicts). The interpretation of this variable is + otherwise identical to mergetool..cmd. + mergetool..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