Hi, When git-difftool calls a diff tool, it uses file names given to it by git-diff. This is a problem because often one of the files to be compared is the same as the file to be merged into. What I mean is that, in the following fragment of the git-difftool--helper file, $1 and $2 (I think) may end up being the same: launch_merge_tool () { # Merged is the filename as it appears in the work tree # Local is the contents of a/filename # Remote is the contents of b/filename # Custom merge tool commands might use $BASE so we provide it MERGED="$1" LOCAL="$2" REMOTE="$3" BASE="$1" Git-mergetool creates a temporary file for merging, but git-difftool does not. Since git-diff tools is not meant for merging anything, it may seem that there is no problem. However, some merge tools (such as ediff) do not like when the merge target is the same as one of the files to be compared. I use the following emacs snippet by Theodore Tso: http://kerneltrap.org/mailarchive/git/2007/7/2/250505 With that emacs code, ediff refuses to do a diff with the way that difftool is done now. I do not have a patch, but it seems that a simple fix would be to copy the code that creates temporary files from mergetool. Cheers, Marcin Zalewski -- 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