Using the original filename suffix for the temporary input files to
the merge tool confuses IDEs like Eclipse. This patch introduces
a configurtion option, mergetool.tmpsuffix, which get appended to
the temporary file name. That way the user can choose to use a
suffix like ".tmp", which does not cause confusion.

Signed-off-by: Robin Rosenberg <>
 Documentation/config.txt        |  5 +++++
 Documentation/git-mergetool.txt |  7 +++++++                | 10 ++++++----
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index c55c22a..0e15800 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1778,6 +1778,11 @@ notes.displayRef::
        several times.  A warning will be issued for refs that do not
        exist, but a glob that does not match any refs is silently
+       A string to append the names of the temporary files mergetool
+       creates in the worktree as input to a custom merge tool. The
+       primary use is to avoid confusion in IDEs during merge.
 This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`
 environment variable, which must be a colon separated list of refs or
diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt
index e846c2e..80a0526 100644
--- a/Documentation/git-mergetool.txt
+++ b/Documentation/git-mergetool.txt
@@ -89,6 +89,13 @@ Setting the `mergetool.keepBackup` configuration variable to 
 causes `git mergetool` to automatically remove the backup as files
 are successfully merged.
+`git mergetool` may also create other temporary files for the
+different versions involved in the merge. By default these files have
+the same filename suffix as the file being merged. This may confuse
+other tools in use during a long merge operation. The user can set
+`mergetool.tmpsuffix` to be used as an extra suffix, which will be
+appened to the temporary filename to lessen that problem.
 Part of the linkgit:git[1] suite
diff --git a/ b/
index 9a046b7..d7cc76c 100755
--- a/
+++ b/
@@ -214,6 +214,8 @@ checkout_staged_file () {
 merge_file () {
+       tmpsuffix=$(git config mergetool.tmpsuffix || true)
        f=$(git ls-files -u -- "$MERGED")
@@ -229,10 +231,10 @@ merge_file () {
        ext="$$$(expr "$MERGED" : '.*\(\.[^/]*\)$')"
-       BACKUP="./$MERGED.BACKUP.$ext"
-       LOCAL="./$MERGED.LOCAL.$ext"
-       REMOTE="./$MERGED.REMOTE.$ext"
-       BASE="./$MERGED.BASE.$ext"
+       BACKUP="./$MERGED.BACKUP.$ext$tmpsuffix"
+       LOCAL="./$MERGED.LOCAL.$ext$tmpsuffix"
+       REMOTE="./$MERGED.REMOTE.$ext$tmpsuffix"
+       BASE="./$MERGED.BASE.$ext$tmpsuffix"
        base_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==1) print $1;}')
        local_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==2) print 

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to